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",