diff --git a/files/gitlab-cookbooks/gitlab-kas/attributes/default.rb b/files/gitlab-cookbooks/gitlab-kas/attributes/default.rb
index 4accb77b78ab5f982488341450cdf0e4fa3213bd_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIta2FzL2F0dHJpYnV0ZXMvZGVmYXVsdC5yYg==..006e6b7d1265fe5a7e8561ae28edbdba04e16c85_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIta2FzL2F0dHJpYnV0ZXMvZGVmYXVsdC5yYg== 100644
--- a/files/gitlab-cookbooks/gitlab-kas/attributes/default.rb
+++ b/files/gitlab-cookbooks/gitlab-kas/attributes/default.rb
@@ -9,6 +9,7 @@
 default['gitlab_kas']['agent_info_cache_ttl'] = 300
 default['gitlab_kas']['agent_info_cache_error_ttl'] = 60
 default['gitlab_kas']['gitlab_address'] = ''
+default['gitlab_kas']['gitlab_external_url'] = nil
 default['gitlab_kas']['api_secret_key'] = nil
 default['gitlab_kas']['listen_address'] = 'localhost:8150'
 default['gitlab_kas']['listen_network'] = 'tcp'
diff --git a/files/gitlab-cookbooks/gitlab-kas/libraries/gitlab_kas.rb b/files/gitlab-cookbooks/gitlab-kas/libraries/gitlab_kas.rb
index 4accb77b78ab5f982488341450cdf0e4fa3213bd_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIta2FzL2xpYnJhcmllcy9naXRsYWJfa2FzLnJi..006e6b7d1265fe5a7e8561ae28edbdba04e16c85_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIta2FzL2xpYnJhcmllcy9naXRsYWJfa2FzLnJi 100644
--- a/files/gitlab-cookbooks/gitlab-kas/libraries/gitlab_kas.rb
+++ b/files/gitlab-cookbooks/gitlab-kas/libraries/gitlab_kas.rb
@@ -21,6 +21,7 @@
   class << self
     def parse_variables
       parse_address
+      parse_gitlab_external_url
       parse_gitlab_kas_enabled
       parse_gitlab_kas_external_url
       parse_gitlab_kas_internal_url
@@ -78,6 +79,14 @@
       end
     end
 
+    def parse_gitlab_external_url
+      return if Gitlab['external_url'].nil?
+
+      gitlab_uri = URI(Gitlab['external_url'])
+
+      Gitlab['gitlab_kas']['gitlab_external_url'] ||= "#{gitlab_uri.scheme}://#{gitlab_uri.host}"
+    end
+
     def parse_secrets
       # KAS and GitLab expects exactly 32 bytes, encoded with base64
 
diff --git a/files/gitlab-cookbooks/gitlab-kas/templates/default/gitlab-kas-config.yml.erb b/files/gitlab-cookbooks/gitlab-kas/templates/default/gitlab-kas-config.yml.erb
index 4accb77b78ab5f982488341450cdf0e4fa3213bd_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIta2FzL3RlbXBsYXRlcy9kZWZhdWx0L2dpdGxhYi1rYXMtY29uZmlnLnltbC5lcmI=..006e6b7d1265fe5a7e8561ae28edbdba04e16c85_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIta2FzL3RlbXBsYXRlcy9kZWZhdWx0L2dpdGxhYi1rYXMtY29uZmlnLnltbC5lcmI= 100644
--- a/files/gitlab-cookbooks/gitlab-kas/templates/default/gitlab-kas-config.yml.erb
+++ b/files/gitlab-cookbooks/gitlab-kas/templates/default/gitlab-kas-config.yml.erb
@@ -25,6 +25,7 @@
   info_cache_error_ttl: <%= @agent_info_cache_error_ttl %>s
 gitlab:
   address: <%= @gitlab_address %>
+  external_url: <%= @gitlab_external_url %>
   authentication_secret_file: <%= @authentication_secret_file %>
 observability:
   listen:
diff --git a/spec/chef/cookbooks/gitlab-kas/recipes/gitlab-kas_spec.rb b/spec/chef/cookbooks/gitlab-kas/recipes/gitlab-kas_spec.rb
index 4accb77b78ab5f982488341450cdf0e4fa3213bd_c3BlYy9jaGVmL2Nvb2tib29rcy9naXRsYWIta2FzL3JlY2lwZXMvZ2l0bGFiLWthc19zcGVjLnJi..006e6b7d1265fe5a7e8561ae28edbdba04e16c85_c3BlYy9jaGVmL2Nvb2tib29rcy9naXRsYWIta2FzL3JlY2lwZXMvZ2l0bGFiLWthc19zcGVjLnJi 100644
--- a/spec/chef/cookbooks/gitlab-kas/recipes/gitlab-kas_spec.rb
+++ b/spec/chef/cookbooks/gitlab-kas/recipes/gitlab-kas_spec.rb
@@ -72,7 +72,10 @@
               authentication_secret_file: "/var/opt/gitlab/gitlab-kas/private_api_authentication_secret_file",
               network: "tcp"
             },
-          }
+          },
+          gitlab: hash_including(
+            external_url: 'https://gitlab.example.com'
+          )
         )
       )
     end
@@ -243,6 +246,16 @@
           external_k8s_proxy_url: 'https://example.com/gitlab/-/kubernetes-agent/k8s-proxy/'
         )
       end
+
+      it 'renders KAS config gitlab external URL correctly' do
+        expect(gitlab_kas_config_yml).to(
+          include(
+            gitlab: hash_including(
+              external_url: 'https://example.com'
+            )
+          )
+        )
+      end
     end
 
     context 'with kas url using own sub-domain' do
@@ -298,6 +311,22 @@
           "gitlab_kas_external_url scheme must be 'ws' or 'wss'"
         )
       end
+
+      it 'renders KAS config gitlab external URL correctly' do
+        stub_gitlab_rb(
+          external_url: 'https://gitlab.example.com',
+          gitlab_kas_external_url: 'wss://kas.gitlab.example.com/',
+          gitlab_kas: { listen_websocket: true }
+        )
+
+        expect(gitlab_kas_config_yml).to(
+          include(
+            gitlab: hash_including(
+              external_url: 'https://gitlab.example.com'
+            )
+          )
+        )
+      end
     end
   end