You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by mi...@apache.org on 2026/09/24 21:06:38 UTC
(airflow) branch main updated: Helm: Allow hostAliases and log groomer lifecycle hooks on the Dag processor (#73159)
This is an automated email from the ASF dual-hosted git repository.
Miretpl 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 14cf70ed176 Helm: Allow hostAliases and log groomer lifecycle hooks on the Dag processor (#73159)
14cf70ed176 is described below
commit 14cf70ed176aafce79f1289366b16c16498af780
Author: Pranay Yelugam <yp...@gmail.com>
AuthorDate: Thu Sep 24 14:06:28 2026 -0700
Helm: Allow hostAliases and log groomer lifecycle hooks on the Dag processor (#73159)
The Dag processor was missing two knobs that every sibling component
already exposes: hostAliases on the pod, and container lifecycle hooks on
its log groomer sidecar. Both are now configurable with tests covering the
rendered output.
Co-authored-by: Przemysław Mirowski <17...@users.noreply.github.com>
---
.../dag-processor/dag-processor-deployment.yaml | 7 +++++++
.../airflow_aux/test_container_lifecycle.py | 19 +++++++++++++++++++
.../helm_tests/airflow_core/test_dag_processor.py | 12 ++++++++++++
chart/values.schema.json | 22 ++++++++++++++++++++++
chart/values.yaml | 4 ++++
5 files changed, 64 insertions(+)
diff --git a/chart/templates/dag-processor/dag-processor-deployment.yaml b/chart/templates/dag-processor/dag-processor-deployment.yaml
index e8172e662c1..ca8453c2bfe 100644
--- a/chart/templates/dag-processor/dag-processor-deployment.yaml
+++ b/chart/templates/dag-processor/dag-processor-deployment.yaml
@@ -31,6 +31,7 @@
{{- $containerSecurityContextLogGroomerSidecar := include "containerSecurityContext" (list .Values.dagProcessor.logGroomerSidecar .Values) }}
{{- $containerSecurityContextWaitForMigrations := include "containerSecurityContext" (list .Values.dagProcessor.waitForMigrations .Values) }}
{{- $containerLifecycleHooks := or .Values.dagProcessor.containerLifecycleHooks .Values.containerLifecycleHooks }}
+{{- $containerLifecycleHooksLogGroomerSidecar := or .Values.dagProcessor.logGroomerSidecar.containerLifecycleHooks .Values.containerLifecycleHooks }}
apiVersion: apps/v1
kind: Deployment
metadata:
@@ -115,6 +116,9 @@ spec:
securityContext: {{ $securityContext | nindent 8 }}
{{- end }}
imagePullSecrets: {{ include "image_pull_secrets" . | nindent 8 }}
+ {{- if .Values.dagProcessor.hostAliases }}
+ hostAliases: {{- toYaml .Values.dagProcessor.hostAliases | nindent 8 }}
+ {{- end }}
initContainers:
{{- if .Values.dagProcessor.waitForMigrations.enabled }}
- name: wait-for-airflow-migrations
@@ -208,6 +212,9 @@ spec:
{{- if $containerSecurityContextLogGroomerSidecar }}
securityContext: {{ $containerSecurityContextLogGroomerSidecar | nindent 12 }}
{{- end }}
+ {{- if $containerLifecycleHooksLogGroomerSidecar }}
+ lifecycle: {{- tpl (toYaml $containerLifecycleHooksLogGroomerSidecar) . | nindent 12 }}
+ {{- end }}
{{- if .Values.dagProcessor.logGroomerSidecar.command }}
command: {{ tpl (toYaml .Values.dagProcessor.logGroomerSidecar.command) . | nindent 12 }}
{{- end }}
diff --git a/chart/tests/helm_tests/airflow_aux/test_container_lifecycle.py b/chart/tests/helm_tests/airflow_aux/test_container_lifecycle.py
index a1c2c63f613..36ab47f602b 100644
--- a/chart/tests/helm_tests/airflow_aux/test_container_lifecycle.py
+++ b/chart/tests/helm_tests/airflow_aux/test_container_lifecycle.py
@@ -226,3 +226,22 @@ class TestContainerLifecycleHooks:
assert jmespath.search("spec.template.spec.containers[1].lifecycle", docs[0]) == {
hook_type: LIFECYCLE_PARSED
}
+
+ @pytest.mark.parametrize("hook_type", ["preStop", "postStart"])
+ def test_log_groomer_sidecar_container_setting_dag_processor(self, hook_type):
+ docs = render_chart(
+ name=RELEASE_NAME,
+ values={
+ "dagProcessor": {
+ "logGroomerSidecar": {"containerLifecycleHooks": {hook_type: LIFECYCLE_TEMPLATE}}
+ },
+ },
+ show_only=[
+ "templates/dag-processor/dag-processor-deployment.yaml",
+ ],
+ )
+
+ assert (
+ jmespath.search(f"spec.template.spec.containers[1].lifecycle.{hook_type}", docs[0])
+ == LIFECYCLE_PARSED
+ )
diff --git a/chart/tests/helm_tests/airflow_core/test_dag_processor.py b/chart/tests/helm_tests/airflow_core/test_dag_processor.py
index 9bc1f6ebb2e..ec6dcaab475 100644
--- a/chart/tests/helm_tests/airflow_core/test_dag_processor.py
+++ b/chart/tests/helm_tests/airflow_core/test_dag_processor.py
@@ -652,6 +652,18 @@ class TestDagProcessor:
assert "annotations" in jmespath.search("metadata", docs[0])
assert jmespath.search("metadata.annotations", docs[0])["test_annotation"] == "test_annotation_value"
+ def test_dag_processor_pod_hostaliases(self):
+ docs = render_chart(
+ values={
+ "dagProcessor": {
+ "hostAliases": [{"ip": "127.0.0.1", "hostnames": ["foo.local"]}],
+ },
+ },
+ show_only=["templates/dag-processor/dag-processor-deployment.yaml"],
+ )
+ assert jmespath.search("spec.template.spec.hostAliases[0].ip", docs[0]) == "127.0.0.1"
+ assert jmespath.search("spec.template.spec.hostAliases[0].hostnames[0]", docs[0]) == "foo.local"
+
def test_validate_if_ssh_params_are_added_with_git_ssh_key(self):
docs = render_chart(
values={
diff --git a/chart/values.schema.json b/chart/values.schema.json
index a0fb7d8379c..49251ffa3d2 100644
--- a/chart/values.schema.json
+++ b/chart/values.schema.json
@@ -4782,6 +4782,28 @@
"type": "boolean",
"default": true
},
+ "hostAliases": {
+ "description": "HostAliases for the dag processor pod.",
+ "items": {
+ "$ref": "#/definitions/io.k8s.api.core.v1.HostAlias"
+ },
+ "type": "array",
+ "default": [],
+ "examples": [
+ {
+ "ip": "127.0.0.1",
+ "hostnames": [
+ "foo.local"
+ ]
+ },
+ {
+ "ip": "10.1.2.3",
+ "hostnames": [
+ "foo.remote"
+ ]
+ }
+ ]
+ },
"extraContainers": {
"description": "Launch additional containers into dag processor (templated).",
"type": "array",
diff --git a/chart/values.yaml b/chart/values.yaml
index ca788cc61d5..2fb01cc083f 100644
--- a/chart/values.yaml
+++ b/chart/values.yaml
@@ -2259,6 +2259,8 @@ dagProcessor:
# when it wants to scale a node down.
safeToEvict: true
+ hostAliases: []
+
# Launch additional containers into dag processor (templated).
extraContainers: []
@@ -2344,6 +2346,8 @@ dagProcessor:
securityContexts:
container: {}
+ containerLifecycleHooks: {}
+
env: []
waitForMigrations: