Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion chart/files/pod-template-file.kubernetes-helm-yaml
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ spec:
{{- end }}
{{- include "standard_airflow_environment" . | indent 6}}
{{- include "custom_airflow_environment" . | indent 6 }}
{{- include "container_extra_envs" (list . .Values.workers.env) | indent 6 }}
{{- include "container_extra_envs" (list . (.Values.workers.kubernetes.env | default .Values.workers.env)) | indent 6 }}
image: {{ template "pod_template_image" . }}
imagePullPolicy: {{ .Values.images.pod_template.pullPolicy }}
securityContext: {{ $containerSecurityContext | nindent 8 }}
Expand Down
1 change: 1 addition & 0 deletions chart/newsfragments/65056.significant.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
``workers.env`` field is now deprecated in favor of ``workers.celery.env`` and ``workers.kubernetes.env``. Please update your configuration accordingly.
8 changes: 8 additions & 0 deletions chart/templates/NOTES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -957,6 +957,14 @@ DEPRECATION WARNING:

{{- end }}

{{- if not (empty .Values.workers.env) }}

DEPRECATION WARNING:
`workers.env` has been renamed to `workers.celery.env`/`workers.kubernetes.env`.
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:
Expand Down
116 changes: 115 additions & 1 deletion chart/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -2719,7 +2719,7 @@
}
},
"env": {
"description": "Add additional env vars to the Airflow Celery workers and pods created with pod-template-file.",
"description": "Add additional env vars to the Airflow Celery workers and pods created with pod-template-file (deprecated, use ``workers.celery.env`` and/or ``workers.kubernetes.env`` instead).",
"type": "array",
"default": [],
"items": {
Expand Down Expand Up @@ -3877,6 +3877,63 @@
}
}
},
"env": {
"description": "Add additional env vars to the Airflow Celery workers.",
"type": "array",
"default": [],
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "string"
},
"valueFrom": {
"type": "object",
"properties": {
"configMapKeyRef": {
"$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapKeySelector",
"description": "Selects a key of a ConfigMap."
},
"secretKeyRef": {
"$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector",
"description": "Selects a key of a secret in the pod's namespace"
}
},
"anyOf": [
{
"required": [
"configMapKeyRef"
]
},
{
"required": [
"secretKeyRef"
]
}
]
}
},
"required": [
"name"
],
"anyOf": [
{
"required": [
"value"
]
},
{
"required": [
"valueFrom"
]
}
],
"additionalProperties": false
}
},
"volumeClaimTemplates": {
"description": "Specify additional volume claim template for Airflow Celery workers.",
"type": "array",
Expand Down Expand Up @@ -4365,6 +4422,63 @@
"type": "string"
}
},
"env": {
"description": "Add additional env vars to the pods created with pod-template-file.",
"type": "array",
"default": [],
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "string"
},
"valueFrom": {
"type": "object",
"properties": {
"configMapKeyRef": {
"$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapKeySelector",
"description": "Selects a key of a ConfigMap."
},
"secretKeyRef": {
"$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector",
"description": "Selects a key of a secret in the pod's namespace"
}
},
"anyOf": [
{
"required": [
"configMapKeyRef"
]
},
{
"required": [
"secretKeyRef"
]
}
]
}
},
"required": [
"name"
],
"anyOf": [
{
"required": [
"value"
]
},
{
"required": [
"valueFrom"
]
}
],
"additionalProperties": false
}
},
"schedulerName": {
"description": "Specify kube scheduler name for pods created with pod-template-file.",
"type": [
Expand Down
7 changes: 7 additions & 0 deletions chart/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1220,6 +1220,7 @@ workers:
container: {}

# Additional env variable configuration for Airflow Celery workers and pods created with pod-template-file
# (deprecated, use `workers.celery.env` and/or `workers.kubernetes.env` instead)
env: []

# Additional volume claim templates for Airflow Celery workers.
Expand Down Expand Up @@ -1612,6 +1613,9 @@ workers:
securityContexts:
container: {}

# Additional env variable configuration for Airflow Celery workers
env: []

# Additional volume claim templates for Airflow Celery workers.
# Requires mounting of specified volumes under extraVolumeMounts.
volumeClaimTemplates: []
Expand Down Expand Up @@ -1787,6 +1791,9 @@ workers:
# Labels specific to pods created with pod-template-file
labels: {}

# Additional env variable configuration for pods created with pod-template-file
env: []

schedulerName: ~

# Airflow scheduler settings
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1339,10 +1339,24 @@ def test_should_add_pod_labels(self):
"tier": "airflow",
}

def test_should_add_extraEnvs(self):
docs = render_chart(
values={
"workers": {
@pytest.mark.parametrize(
"workers_values",
[
{
"env": [
{"name": "TEST_ENV_1", "value": "test_env_1"},
{
"name": "TEST_ENV_2",
"valueFrom": {"secretKeyRef": {"name": "my-secret", "key": "my-key"}},
},
{
"name": "TEST_ENV_3",
"valueFrom": {"configMapKeyRef": {"name": "my-config-map", "key": "my-key"}},
},
]
},
{
"kubernetes": {
"env": [
{"name": "TEST_ENV_1", "value": "test_env_1"},
{
Expand All @@ -1356,13 +1370,35 @@ def test_should_add_extraEnvs(self):
]
}
},
{
"env": [{"name": "TEST", "value": "test"}],
"kubernetes": {
"env": [
{"name": "TEST_ENV_1", "value": "test_env_1"},
{
"name": "TEST_ENV_2",
"valueFrom": {"secretKeyRef": {"name": "my-secret", "key": "my-key"}},
},
{
"name": "TEST_ENV_3",
"valueFrom": {"configMapKeyRef": {"name": "my-config-map", "key": "my-key"}},
},
]
},
},
],
)
def test_should_add_extraEnvs(self, workers_values):
docs = render_chart(
values={"workers": workers_values},
show_only=["templates/pod-template-file.yaml"],
chart_dir=self.temp_chart_dir,
)

assert {"name": "TEST_ENV_1", "value": "test_env_1"} in jmespath.search(
"spec.containers[0].env", docs[0]
)
assert {"name": "TEST", "value": "test"} not in jmespath.search("spec.containers[0].env", docs[0])
assert {
"name": "TEST_ENV_2",
"valueFrom": {"secretKeyRef": {"name": "my-secret", "key": "my-key"}},
Expand Down
46 changes: 42 additions & 4 deletions helm-tests/tests/helm_tests/airflow_core/test_worker.py
Original file line number Diff line number Diff line change
Expand Up @@ -418,10 +418,40 @@ def test_should_add_global_volume_and_global_volume_mount(self):
jmespath.search("spec.template.spec.containers[0].volumeMounts[0].name", docs[0]) == "test-volume"
)

def test_should_add_extraEnvs(self):
docs = render_chart(
values={
"workers": {
@pytest.mark.parametrize(
"workers_values",
[
{
"env": [
{"name": "TEST_ENV_1", "value": "test_env_1"},
{
"name": "TEST_ENV_2",
"valueFrom": {"secretKeyRef": {"name": "my-secret", "key": "my-key"}},
},
{
"name": "TEST_ENV_3",
"valueFrom": {"configMapKeyRef": {"name": "my-config-map", "key": "my-key"}},
},
],
},
{
"celery": {
"env": [
{"name": "TEST_ENV_1", "value": "test_env_1"},
{
"name": "TEST_ENV_2",
"valueFrom": {"secretKeyRef": {"name": "my-secret", "key": "my-key"}},
},
{
"name": "TEST_ENV_3",
"valueFrom": {"configMapKeyRef": {"name": "my-config-map", "key": "my-key"}},
},
],
}
},
{
"env": [{"name": "TEST", "value": "test"}],
"celery": {
"env": [
{"name": "TEST_ENV_1", "value": "test_env_1"},
{
Expand All @@ -435,12 +465,20 @@ def test_should_add_extraEnvs(self):
],
},
},
],
)
def test_should_add_extraEnvs(self, workers_values):
docs = render_chart(
values={"workers": workers_values},
show_only=["templates/workers/worker-deployment.yaml"],
)

assert {"name": "TEST_ENV_1", "value": "test_env_1"} in jmespath.search(
"spec.template.spec.containers[0].env", docs[0]
)
assert {"name": "TEST", "value": "test"} not in jmespath.search(
"spec.template.spec.containers[0].env", docs[0]
)
assert {
"name": "TEST_ENV_2",
"valueFrom": {"secretKeyRef": {"name": "my-secret", "key": "my-key"}},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3362,6 +3362,13 @@ def test_overwrite_wait_for_migration_security_context_container(self, workers_v
"sets": [{"name": "set1", "env": [{"name": "TEST_ENV_1", "value": "test_env_1"}]}],
},
},
{
"celery": {
"enableDefault": False,
"env": [{"name": "TEST", "value": "test"}],
"sets": [{"name": "set1", "env": [{"name": "TEST_ENV_1", "value": "test_env_1"}]}],
},
},
],
)
def test_overwrite_env(self, workers_values):
Expand Down
Loading