This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 09771cbf90c fix: Add api-server support for k8s pod template (#53533)
09771cbf90c is described below

commit 09771cbf90cfd84546a977129980d2f31c691195
Author: Lipu Fei <[email protected]>
AuthorDate: Sat Sep 6 19:22:42 2025 +0200

    fix: Add api-server support for k8s pod template (#53533)
---
 chart/files/pod-template-file.kubernetes-helm-yaml | 30 ++++++++++++++++++----
 chart/templates/_helpers.yaml                      |  2 +-
 .../airflow_aux/test_pod_template_file.py          | 26 ++++++++++++++-----
 3 files changed, 45 insertions(+), 13 deletions(-)

diff --git a/chart/files/pod-template-file.kubernetes-helm-yaml 
b/chart/files/pod-template-file.kubernetes-helm-yaml
index 2a6ac1ed34b..fd149325afb 100644
--- a/chart/files/pod-template-file.kubernetes-helm-yaml
+++ b/chart/files/pod-template-file.kubernetes-helm-yaml
@@ -83,8 +83,14 @@ spec:
         {{- if .Values.workers.extraVolumeMounts }}
           {{- tpl (toYaml .Values.workers.extraVolumeMounts) . | nindent 8 }}
         {{- end }}
-        {{- if or .Values.webserver.webserverConfig 
.Values.webserver.webserverConfigConfigMapName }}
-          {{- include "airflow_webserver_config_mount" . | nindent 8 }}
+        {{- if semverCompare ">=3.0.0" .Values.airflowVersion }}
+          {{- if or .Values.apiServer.apiServerConfig 
.Values.apiServer.apiServerConfigConfigMapName }}
+            {{- include "airflow_api_server_config_mount" . | nindent 8 }}
+          {{- end }}
+        {{- else }}
+          {{- if or .Values.webserver.webserverConfig 
.Values.webserver.webserverConfigConfigMapName }}
+            {{- include "airflow_webserver_config_mount" . | nindent 8 }}
+          {{- end }}
         {{- end }}
       envFrom: {{- include "custom_airflow_environment_from" . | default "\n  
[]" | indent 6 }}
       env:
@@ -183,8 +189,14 @@ spec:
         {{- if .Values.workers.extraVolumeMounts }}
           {{- tpl (toYaml .Values.workers.extraVolumeMounts) . | nindent 8 }}
         {{- end }}
-        {{- if or .Values.webserver.webserverConfig 
.Values.webserver.webserverConfigConfigMapName }}
-          {{- include "airflow_webserver_config_mount" . | nindent 8 }}
+        {{- if semverCompare ">=3.0.0" .Values.airflowVersion }}
+          {{- if or .Values.apiServer.apiServerConfig 
.Values.apiServer.apiServerConfigConfigMapName }}
+            {{- include "airflow_api_server_config_mount" . | nindent 8 }}
+          {{- end }}
+        {{- else }}
+          {{- if or .Values.webserver.webserverConfig 
.Values.webserver.webserverConfigConfigMapName }}
+            {{- include "airflow_webserver_config_mount" . | nindent 8 }}
+          {{- end }}
         {{- end }}
       envFrom: {{- include "custom_airflow_environment_from" . | default "\n  
[]" | indent 6 }}
       env:
@@ -249,10 +261,18 @@ spec:
   - configMap:
       name: {{ include "airflow_config" . }}
     name: config
-  {{- if and (or .Values.webserver.webserverConfig 
.Values.webserver.webserverConfigConfigMapName) (or 
.Values.workers.kerberosInitContainer.enabled 
.Values.workers.kerberosSidecar.enabled)}}
+  {{- if semverCompare ">=3.0.0" .Values.airflowVersion }}
+    {{- if and (or .Values.apiServer.apiServerConfig 
.Values.apiServer.apiServerConfigConfigMapName) (or 
.Values.workers.kerberosInitContainer.enabled 
.Values.workers.kerberosSidecar.enabled)}}
+  - name: api-server-config
+    configMap:
+      name: {{ template "airflow_api_server_config_configmap_name" . }}
+    {{- end }}
+  {{- else }}
+    {{- if and (or .Values.webserver.webserverConfig 
.Values.webserver.webserverConfigConfigMapName) (or 
.Values.workers.kerberosInitContainer.enabled 
.Values.workers.kerberosSidecar.enabled)}}
   - name: webserver-config
     configMap:
       name: {{ template "airflow_webserver_config_configmap_name" . }}
+    {{- end }}
   {{- end }}
   {{- if .Values.volumes }}
     {{- toYaml .Values.volumes | nindent 2 }}
diff --git a/chart/templates/_helpers.yaml b/chart/templates/_helpers.yaml
index 3e377b2fab8..22a3a91514d 100644
--- a/chart/templates/_helpers.yaml
+++ b/chart/templates/_helpers.yaml
@@ -611,7 +611,7 @@ server_tls_key_file = /etc/pgbouncer/server.key
 {{- end }}
 
 {{- define "airflow_api_server_config_configmap_name" -}}
-  {{- default (printf "%s-api-server-config" .Release.Name) 
.Values.webserver.webserverConfigConfigMapName }}
+  {{- default (printf "%s-api-server-config" .Release.Name) 
.Values.apiServer.apiServerConfigConfigMapName }}
 {{- end }}
 
 {{- define "airflow_api_server_config_mount" -}}
diff --git a/helm-tests/tests/helm_tests/airflow_aux/test_pod_template_file.py 
b/helm-tests/tests/helm_tests/airflow_aux/test_pod_template_file.py
index dff77a2e03f..6e2bdcc41c1 100644
--- a/helm-tests/tests/helm_tests/airflow_aux/test_pod_template_file.py
+++ b/helm-tests/tests/helm_tests/airflow_aux/test_pod_template_file.py
@@ -1065,15 +1065,27 @@ class TestPodTemplateFile:
         assert jmespath.search("spec.containers[0].command", docs[0]) is None
 
     @pytest.mark.parametrize(
-        "workers_values, kerberos_init_container",
+        "airflow_version, workers_values, kerberos_init_container, 
expected_config_name",
         [
-            ({"kerberosSidecar": {"enabled": True}}, False),
-            ({"kerberosInitContainer": {"enabled": True}}, True),
+            (None, {"kerberosSidecar": {"enabled": True}}, False, 
"api-server-config"),
+            (None, {"kerberosInitContainer": {"enabled": True}}, True, 
"api-server-config"),
+            ("2.10.5", {"kerberosSidecar": {"enabled": True}}, False, 
"webserver-config"),
+            ("2.10.5", {"kerberosInitContainer": {"enabled": True}}, True, 
"webserver-config"),
         ],
     )
-    def test_webserver_config_for_kerberos(self, workers_values, 
kerberos_init_container):
+    def test_webserver_config_for_kerberos(
+        self, airflow_version, workers_values, kerberos_init_container, 
expected_config_name
+    ):
+        values = {
+            "airflowVersion": airflow_version,
+            "workers": workers_values,
+            "apiServer": {"apiServerConfigConfigMapName": "config"},
+            "webserver": {"webserverConfigConfigMapName": "config"},
+        }
+        if airflow_version is None:
+            del values["airflowVersion"]
         docs = render_chart(
-            values={"workers": workers_values, "webserver": 
{"webserverConfigConfigMapName": "config"}},
+            values=values,
             show_only=["templates/pod-template-file.yaml"],
             chart_dir=self.temp_chart_dir,
         )
@@ -1084,8 +1096,8 @@ class TestPodTemplateFile:
 
         volume_mounts_names = jmespath.search(kerberos_container, docs[0])
         print(volume_mounts_names)
-        assert "webserver-config" in volume_mounts_names
-        assert "webserver-config" in jmespath.search("spec.volumes[*].name", 
docs[0])
+        assert expected_config_name in volume_mounts_names
+        assert expected_config_name in jmespath.search("spec.volumes[*].name", 
docs[0])
 
     @pytest.mark.parametrize(
         "workers_values",

Reply via email to