diff --git a/chart/newsfragments/59730.significant.rst b/chart/newsfragments/59730.significant.rst new file mode 100644 index 0000000000000..418a9a1cd5cb6 --- /dev/null +++ b/chart/newsfragments/59730.significant.rst @@ -0,0 +1,3 @@ +``workers.replicas`` command is now deprecated in favor of ``workers.celery.replicas``. + +Along the upgrade of Helm Chart version, change the configuration of ``workers.replicas`` to ``workers.celery.replicas`` or unset ``workers.celery.replicas`` to preserve previous behaviour of the Helm Chart. diff --git a/chart/templates/NOTES.txt b/chart/templates/NOTES.txt index 9b957fbc1c847..8ec842bc03153 100644 --- a/chart/templates/NOTES.txt +++ b/chart/templates/NOTES.txt @@ -188,6 +188,14 @@ DEPRECATION WARNING: {{- end }} +{{- if ne (int .Values.workers.replicas) 1 }} + + DEPRECATION WARNING: + `workers.replicas` has been renamed to `workers.celery.replicas`. + Please change your values as support for the old name will be dropped in a future release. + +{{- end }} + {{ if (semverCompare ">=3.0.0" .Values.airflowVersion) }} ##################################################### # WARNING: You should set a static API secret key # diff --git a/chart/templates/workers/worker-deployment.yaml b/chart/templates/workers/worker-deployment.yaml index e41fa35add2ff..c3faf29a5bb5a 100644 --- a/chart/templates/workers/worker-deployment.yaml +++ b/chart/templates/workers/worker-deployment.yaml @@ -62,7 +62,7 @@ spec: serviceName: {{ include "airflow.fullname" . }}-worker {{- end }} {{- if and (not $keda) (not $hpa) }} - replicas: {{ .Values.workers.replicas }} + replicas: {{ .Values.workers.celery.replicas | default .Values.workers.replicas }} {{- end }} {{- if $revisionHistoryLimit }} revisionHistoryLimit: {{ $revisionHistoryLimit }} diff --git a/chart/values.schema.json b/chart/values.schema.json index 1b33cc1e74ad6..1ec5a917ebdce 100644 --- a/chart/values.schema.json +++ b/chart/values.schema.json @@ -1635,7 +1635,7 @@ "additionalProperties": false, "properties": { "replicas": { - "description": "Number of Airflow Celery workers.", + "description": "Number of Airflow Celery workers (deprecated, use `workers.celery.replicas` instead).", "type": "integer", "default": 1 }, @@ -2608,6 +2608,11 @@ "type": "object", "x-docsSection": "Workers", "properties": { + "replicas": { + "description": "Number of Airflow Celery workers.", + "type": "integer", + "default": 1 + }, "serviceAccount": { "description": "Create ServiceAccount.", "type": "object", diff --git a/chart/values.yaml b/chart/values.yaml index d946a183443b8..4067237fc48fd 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -637,7 +637,7 @@ kerberos: # Airflow Worker Config workers: - # Number of Airflow Celery workers + # Number of Airflow Celery workers (deprecated, use `workers.celery.replicas` instead) replicas: 1 # Max number of old Airflow Celery workers ReplicaSets to retain @@ -1011,6 +1011,9 @@ workers: useWorkerDedicatedServiceAccounts: false celery: + # Number of Airflow Celery workers + replicas: 1 + # Create ServiceAccount for Airflow Celery workers serviceAccount: # default value is true 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 4b5b74ef5608c..1e06d5fa64f65 100644 --- a/helm-tests/tests/helm_tests/airflow_core/test_worker.py +++ b/helm-tests/tests/helm_tests/airflow_core/test_worker.py @@ -1046,6 +1046,24 @@ def test_worker_template_storage_class_name(self): == "release-name-storage-class" ) + @pytest.mark.parametrize( + ("workers_values", "expected"), + [ + ({"replicas": 2}, 1), + ({"celery": {"replicas": 2}}, 2), + ({"celery": {"replicas": None}}, 1), + ({"replicas": 2, "celery": {"replicas": 3}}, 3), + ({"replicas": 2, "celery": {"replicas": None}}, 2), + ], + ) + def test_workers_replicas(self, workers_values, expected): + docs = render_chart( + values={"workers": workers_values}, + show_only=["templates/workers/worker-deployment.yaml"], + ) + + assert expected == jmespath.search("spec.replicas", docs[0]) + class TestWorkerLogGroomer(LogGroomerTestBase): """Worker groomer."""