This is an automated email from the ASF dual-hosted git repository.
jscheffl pushed a commit to branch chart/v1-2x-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/chart/v1-2x-test by this push:
new afcde65e4d1 [chart/v1-2x-test] Add workers.celery.schedulerName &
workers.kubernetes.schedulerName (#62030) (#64759)
afcde65e4d1 is described below
commit afcde65e4d129817affb694fd5f214ddd1544013
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Mon Apr 6 13:00:52 2026 +0200
[chart/v1-2x-test] Add workers.celery.schedulerName &
workers.kubernetes.schedulerName (#62030) (#64759)
* Add workers.celery.schedulerName & workers.kubernetes.schedulerName
* Deprecate section
(cherry picked from commit a2456efbdde6ba99fdf95fcd997fdf959f6e56d3)
Co-authored-by: Przemysław Mirowski
<[email protected]>
---
chart/files/pod-template-file.kubernetes-helm-yaml | 2 +-
chart/newsfragments/62030.significant.rst | 1 +
chart/templates/NOTES.txt | 8 ++++++
chart/values.schema.json | 20 ++++++++++++-
chart/values.yaml | 7 +++++
.../airflow_aux/test_pod_template_file.py | 20 +++++++++----
.../tests/helm_tests/airflow_core/test_worker.py | 20 +++++++++----
.../helm_tests/airflow_core/test_worker_sets.py | 33 ++++++++++++++++++++++
8 files changed, 97 insertions(+), 14 deletions(-)
diff --git a/chart/files/pod-template-file.kubernetes-helm-yaml
b/chart/files/pod-template-file.kubernetes-helm-yaml
index 59fd6d82f7d..902391cd1a9 100644
--- a/chart/files/pod-template-file.kubernetes-helm-yaml
+++ b/chart/files/pod-template-file.kubernetes-helm-yaml
@@ -30,7 +30,7 @@
{{- $containerLifecycleHooks := or
.Values.workers.kubernetes.containerLifecycleHooks
.Values.workers.containerLifecycleHooks .Values.containerLifecycleHooks }}
{{- $safeToEvict := dict "cluster-autoscaler.kubernetes.io/safe-to-evict" (or
.Values.workers.kubernetes.safeToEvict (and (not (has
.Values.workers.kubernetes.safeToEvict (list true false)))
.Values.workers.safeToEvict) | toString) }}
{{- $podAnnotations := mergeOverwrite (deepCopy .Values.airflowPodAnnotations)
$safeToEvict .Values.workers.podAnnotations }}
-{{- $schedulerName := or .Values.workers.schedulerName .Values.schedulerName }}
+{{- $schedulerName := or .Values.workers.kubernetes.schedulerName
.Values.workers.schedulerName .Values.schedulerName }}
apiVersion: v1
kind: Pod
metadata:
diff --git a/chart/newsfragments/62030.significant.rst
b/chart/newsfragments/62030.significant.rst
new file mode 100644
index 00000000000..3606c90d11b
--- /dev/null
+++ b/chart/newsfragments/62030.significant.rst
@@ -0,0 +1 @@
+``workers.schedulerName`` field is now deprecated in favor of
``workers.celery.schedulerName`` and ``workers.kubernetes.schedulerName``.
Please update your configuration accordingly.
diff --git a/chart/templates/NOTES.txt b/chart/templates/NOTES.txt
index 520717c6b29..fc7b9474c1c 100644
--- a/chart/templates/NOTES.txt
+++ b/chart/templates/NOTES.txt
@@ -669,6 +669,14 @@ DEPRECATION WARNING:
{{- end }}
+{{- if not (empty .Values.workers.schedulerName) }}
+
+ DEPRECATION WARNING:
+ `workers.schedulerName` has been renamed to
`workers.celery.schedulerName`/`workers.kubernetes.schedulerName`.
+ Please change your values as support for the old name will be dropped in a
future release.
+
+{{- end }}
+
{{- if not (empty .Values.webserver.defaultUser) }}
DEPRECATION WARNING:
diff --git a/chart/values.schema.json b/chart/values.schema.json
index de8aca2a4fc..c3c08557b9f 100644
--- a/chart/values.schema.json
+++ b/chart/values.schema.json
@@ -2419,7 +2419,7 @@
}
},
"schedulerName": {
- "description": "Specify kube scheduler name for Airflow
Celery workers objects and pods created with pod-template-file.",
+ "description": "Specify kube scheduler name for Airflow
Celery workers objects and pods created with pod-template-file (deprecated, use
``workers.celery.schedulerName`` and/or ``workers.kubernetes.schedulerName``
instead).",
"type": [
"string",
"null"
@@ -3347,6 +3347,15 @@
]
}
]
+ },
+ "schedulerName": {
+ "description": "Specify kube scheduler name for
Airflow Celery worker pods.",
+ "type": [
+ "string",
+ "null"
+ ],
+ "default": null,
+ "x-docsSection": "Common"
}
}
},
@@ -3682,6 +3691,15 @@
]
}
]
+ },
+ "schedulerName": {
+ "description": "Specify kube scheduler name for
pods created with pod-template-file.",
+ "type": [
+ "string",
+ "null"
+ ],
+ "default": null,
+ "x-docsSection": "Common"
}
}
}
diff --git a/chart/values.yaml b/chart/values.yaml
index 66c2e056dd0..28a632061b4 100644
--- a/chart/values.yaml
+++ b/chart/values.yaml
@@ -1173,6 +1173,9 @@ workers:
# requests:
# storage: "20Gi"
+ # (deprecated, use `workers.celery.schedulerName` and/or
`workers.kubernetes.schedulerName` instead)
+ schedulerName: ~
+
celery:
# Number of Airflow Celery workers
replicas: ~
@@ -1400,6 +1403,8 @@ workers:
# hostnames:
# - "test.hostname.two"
+ schedulerName: ~
+
kubernetes:
# Command to use in pod-template-file (templated)
command: ~
@@ -1488,6 +1493,8 @@ workers:
# hostnames:
# - "test.hostname.two"
+ schedulerName: ~
+
# Airflow scheduler settings
scheduler:
enabled: true
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 d4bd01ca82f..a963638459c 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
@@ -681,18 +681,26 @@ class TestPodTemplateFile:
assert jmespath.search("spec.nodeSelector", docs[0]) == {"diskType":
"ssd"}
@pytest.mark.parametrize(
- ("base_scheduler_name", "worker_scheduler_name", "expected"),
+ ("base_scheduler_name", "worker_values", "expected"),
[
- ("default-scheduler", "most-allocated", "most-allocated"),
- ("default-scheduler", None, "default-scheduler"),
- (None, None, None),
+ ("default-scheduler", {"schedulerName": "most-allocated"},
"most-allocated"),
+ ("default-scheduler", {"kubernetes": {"schedulerName":
"most-allocated"}}, "most-allocated"),
+ (
+ "default-scheduler",
+ {"schedulerName": "least-allocated", "kubernetes":
{"schedulerName": "most-allocated"}},
+ "most-allocated",
+ ),
+ ("default-scheduler", {"schedulerName": None},
"default-scheduler"),
+ ("default-scheduler", {"kubernetes": {"schedulerName": None}},
"default-scheduler"),
+ (None, {"schedulerName": None}, None),
+ (None, {"kubernetes": {"schedulerName": None}}, None),
],
)
- def test_scheduler_name(self, base_scheduler_name, worker_scheduler_name,
expected):
+ def test_scheduler_name(self, base_scheduler_name, worker_values,
expected):
docs = render_chart(
values={
"schedulerName": base_scheduler_name,
- "workers": {"schedulerName": worker_scheduler_name},
+ "workers": worker_values,
},
show_only=["templates/pod-template-file.yaml"],
chart_dir=self.temp_chart_dir,
diff --git a/helm-tests/tests/helm_tests/airflow_core/test_worker.py
b/helm-tests/tests/helm_tests/airflow_core/test_worker.py
index 2e663e10b41..b017476b569 100644
--- a/helm-tests/tests/helm_tests/airflow_core/test_worker.py
+++ b/helm-tests/tests/helm_tests/airflow_core/test_worker.py
@@ -695,18 +695,26 @@ class TestWorker:
assert jmespath.search("spec.template.spec.nodeSelector", docs[0]) ==
{"diskType": "ssd"}
@pytest.mark.parametrize(
- ("base_scheduler_name", "worker_scheduler_name", "expected"),
+ ("base_scheduler_name", "worker_values", "expected"),
[
- ("default-scheduler", "most-allocated", "most-allocated"),
- ("default-scheduler", None, "default-scheduler"),
- (None, None, None),
+ ("default-scheduler", {"schedulerName": "most-allocated"},
"most-allocated"),
+ ("default-scheduler", {"celery": {"schedulerName":
"most-allocated"}}, "most-allocated"),
+ (
+ "default-scheduler",
+ {"schedulerName": "least-allocated", "celery":
{"schedulerName": "most-allocated"}},
+ "most-allocated",
+ ),
+ ("default-scheduler", {"schedulerName": None},
"default-scheduler"),
+ ("default-scheduler", {"celery": {"schedulerName": None}},
"default-scheduler"),
+ (None, {"schedulerName": None}, None),
+ (None, {"celery": {"schedulerName": None}}, None),
],
)
- def test_scheduler_name(self, base_scheduler_name, worker_scheduler_name,
expected):
+ def test_scheduler_name(self, base_scheduler_name, worker_values,
expected):
docs = render_chart(
values={
"schedulerName": base_scheduler_name,
- "workers": {"schedulerName": worker_scheduler_name},
+ "workers": worker_values,
},
show_only=["templates/workers/worker-deployment.yaml"],
)
diff --git a/helm-tests/tests/helm_tests/airflow_core/test_worker_sets.py
b/helm-tests/tests/helm_tests/airflow_core/test_worker_sets.py
index b82b96c503f..50e7ff454c4 100644
--- a/helm-tests/tests/helm_tests/airflow_core/test_worker_sets.py
+++ b/helm-tests/tests/helm_tests/airflow_core/test_worker_sets.py
@@ -3070,3 +3070,36 @@ class TestWorkerSets:
},
}
]
+
+ @pytest.mark.parametrize(
+ "workers_values",
+ [
+ {
+ "schedulerName": "most-allocated",
+ "celery": {"enableDefault": False, "sets": [{"name": "set1"}]},
+ },
+ {
+ "schedulerName": "test",
+ "celery": {
+ "enableDefault": False,
+ "sets": [{"name": "set1", "schedulerName":
"most-allocated"}],
+ },
+ },
+ {
+ "celery": {
+ "schedulerName": "test",
+ "enableDefault": False,
+ "sets": [{"name": "set1", "schedulerName":
"most-allocated"}],
+ },
+ },
+ ],
+ )
+ def test_overwrite_scheduler_name(self, workers_values):
+ docs = render_chart(
+ values={
+ "workers": workers_values,
+ },
+ show_only=["templates/workers/worker-deployment.yaml"],
+ )
+
+ assert jmespath.search("spec.template.spec.schedulerName", docs[0]) ==
"most-allocated"