This is an automated email from the ASF dual-hosted git repository.

jscheffl 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 89efec77305 Add ipFamilyPolicy and ipFamilies support to all Helm 
service templates (#66616)
89efec77305 is described below

commit 89efec77305a8179850e1e636e58af90cfdc6f16
Author: Tung Huynh <[email protected]>
AuthorDate: Sun Jun 7 02:08:31 2026 -0700

    Add ipFamilyPolicy and ipFamilies support to all Helm service templates 
(#66616)
    
    * Add ipFamilyPolicy and ipFamilies support to all Helm service templates
    
    Agent-Logs-Url: 
https://github.com/huynhsontung/airflow/sessions/be394b63-9852-4a0f-a4b9-6d9e14c14f29
    
    Co-authored-by: huynhsontung 
<[email protected]>
    
    * Consolidate ipFamilyPolicy/ipFamilies into top-level Helm chart fields
    
    * remove unnecessary new lines in values
    
    * Fix otel collector test
    
    Co-authored-by: Copilot Autofix powered by AI 
<[email protected]>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] 
<[email protected]>
    Co-authored-by: Copilot Autofix powered by AI 
<[email protected]>
---
 chart/templates/api-server/api-server-service.yaml |  6 +++++
 chart/templates/flower/flower-service.yaml         |  6 +++++
 .../otel-collector/otel-collector-service.yaml     |  6 +++++
 chart/templates/pgbouncer/pgbouncer-service.yaml   |  6 +++++
 chart/templates/redis/redis-service.yaml           |  6 +++++
 chart/templates/scheduler/scheduler-service.yaml   |  6 +++++
 chart/templates/statsd/statsd-service.yaml         |  6 +++++
 chart/templates/triggerer/triggerer-service.yaml   |  6 +++++
 chart/templates/workers/worker-service.yaml        |  6 +++++
 .../helm_tests/airflow_core/test_api_server.py     | 20 ++++++++++++++++
 .../helm_tests/airflow_core/test_scheduler.py      | 22 +++++++++++++++++
 .../helm_tests/airflow_core/test_triggerer.py      | 24 +++++++++++++++++++
 chart/tests/helm_tests/airflow_core/test_worker.py | 22 +++++++++++++++++
 .../otel_collector/test_otel_collector.py          | 19 +++++++++++++++
 chart/tests/helm_tests/other/test_flower.py        | 22 +++++++++++++++++
 chart/tests/helm_tests/other/test_pgbouncer.py     | 22 +++++++++++++++++
 chart/tests/helm_tests/other/test_redis.py         | 20 ++++++++++++++++
 chart/tests/helm_tests/other/test_statsd.py        | 26 ++++++++++++++++++++
 chart/values.schema.json                           | 28 ++++++++++++++++++++++
 chart/values.yaml                                  |  7 ++++++
 20 files changed, 286 insertions(+)

diff --git a/chart/templates/api-server/api-server-service.yaml 
b/chart/templates/api-server/api-server-service.yaml
index 5aa34b850dd..2b5bbb9f78c 100644
--- a/chart/templates/api-server/api-server-service.yaml
+++ b/chart/templates/api-server/api-server-service.yaml
@@ -56,4 +56,10 @@ spec:
   {{- if .Values.apiServer.service.loadBalancerSourceRanges }}
   loadBalancerSourceRanges: {{- toYaml 
.Values.apiServer.service.loadBalancerSourceRanges | nindent 4 }}
   {{- end }}
+  {{- if .Values.ipFamilyPolicy }}
+  ipFamilyPolicy: {{ .Values.ipFamilyPolicy }}
+  {{- end }}
+  {{- if .Values.ipFamilies }}
+  ipFamilies: {{- toYaml .Values.ipFamilies | nindent 4 }}
+  {{- end }}
 {{- end }}
diff --git a/chart/templates/flower/flower-service.yaml 
b/chart/templates/flower/flower-service.yaml
index 459ac1f6e65..1866316af22 100644
--- a/chart/templates/flower/flower-service.yaml
+++ b/chart/templates/flower/flower-service.yaml
@@ -56,4 +56,10 @@ spec:
   {{- if .Values.flower.service.loadBalancerSourceRanges }}
   loadBalancerSourceRanges: {{- toYaml 
.Values.flower.service.loadBalancerSourceRanges | nindent 4 }}
   {{- end }}
+  {{- if .Values.ipFamilyPolicy }}
+  ipFamilyPolicy: {{ .Values.ipFamilyPolicy }}
+  {{- end }}
+  {{- if .Values.ipFamilies }}
+  ipFamilies: {{- toYaml .Values.ipFamilies | nindent 4 }}
+  {{- end }}
 {{- end }}
diff --git a/chart/templates/otel-collector/otel-collector-service.yaml 
b/chart/templates/otel-collector/otel-collector-service.yaml
index 9d2ce3debed..329d5e08038 100644
--- a/chart/templates/otel-collector/otel-collector-service.yaml
+++ b/chart/templates/otel-collector/otel-collector-service.yaml
@@ -52,4 +52,10 @@ spec:
       protocol: TCP
       port: {{ .Values.ports.otelCollectorOtlpHttp }}
       targetPort: {{ .Values.ports.otelCollectorOtlpHttp }}
+  {{- if .Values.ipFamilyPolicy }}
+  ipFamilyPolicy: {{ .Values.ipFamilyPolicy }}
+  {{- end }}
+  {{- if .Values.ipFamilies }}
+  ipFamilies: {{- toYaml .Values.ipFamilies | nindent 4 }}
+  {{- end }}
 {{- end }}
diff --git a/chart/templates/pgbouncer/pgbouncer-service.yaml 
b/chart/templates/pgbouncer/pgbouncer-service.yaml
index 1290abe14a4..411cbff5839 100644
--- a/chart/templates/pgbouncer/pgbouncer-service.yaml
+++ b/chart/templates/pgbouncer/pgbouncer-service.yaml
@@ -56,4 +56,10 @@ spec:
     - name: pgb-metrics
       protocol: TCP
       port: {{ .Values.ports.pgbouncerScrape }}
+  {{- if .Values.ipFamilyPolicy }}
+  ipFamilyPolicy: {{ .Values.ipFamilyPolicy }}
+  {{- end }}
+  {{- if .Values.ipFamilies }}
+  ipFamilies: {{- toYaml .Values.ipFamilies | nindent 4 }}
+  {{- end }}
 {{- end }}
diff --git a/chart/templates/redis/redis-service.yaml 
b/chart/templates/redis/redis-service.yaml
index 9e39c3d5c15..a7f959eeccd 100644
--- a/chart/templates/redis/redis-service.yaml
+++ b/chart/templates/redis/redis-service.yaml
@@ -55,4 +55,10 @@ spec:
       {{- if and (eq .Values.redis.service.type "NodePort") (not (empty 
.Values.redis.service.nodePort)) }}
       nodePort: {{ .Values.redis.service.nodePort }}
       {{- end }}
+  {{- if .Values.ipFamilyPolicy }}
+  ipFamilyPolicy: {{ .Values.ipFamilyPolicy }}
+  {{- end }}
+  {{- if .Values.ipFamilies }}
+  ipFamilies: {{- toYaml .Values.ipFamilies | nindent 4 }}
+  {{- end }}
 {{- end }}
diff --git a/chart/templates/scheduler/scheduler-service.yaml 
b/chart/templates/scheduler/scheduler-service.yaml
index b9e85adbcb9..87a6658b8f2 100644
--- a/chart/templates/scheduler/scheduler-service.yaml
+++ b/chart/templates/scheduler/scheduler-service.yaml
@@ -45,4 +45,10 @@ spec:
       protocol: TCP
       port: {{ .Values.ports.workerLogs }}
       targetPort: {{ .Values.ports.workerLogs }}
+  {{- if .Values.ipFamilyPolicy }}
+  ipFamilyPolicy: {{ .Values.ipFamilyPolicy }}
+  {{- end }}
+  {{- if .Values.ipFamilies }}
+  ipFamilies: {{- toYaml .Values.ipFamilies | nindent 4 }}
+  {{- end }}
 {{- end }}
diff --git a/chart/templates/statsd/statsd-service.yaml 
b/chart/templates/statsd/statsd-service.yaml
index c7bee0ea3f4..6520a4b020d 100644
--- a/chart/templates/statsd/statsd-service.yaml
+++ b/chart/templates/statsd/statsd-service.yaml
@@ -55,4 +55,10 @@ spec:
       protocol: TCP
       port: {{ .Values.ports.statsdScrape }}
       targetPort: {{ .Values.ports.statsdScrape }}
+  {{- if .Values.ipFamilyPolicy }}
+  ipFamilyPolicy: {{ .Values.ipFamilyPolicy }}
+  {{- end }}
+  {{- if .Values.ipFamilies }}
+  ipFamilies: {{- toYaml .Values.ipFamilies | nindent 4 }}
+  {{- end }}
 {{- end }}
diff --git a/chart/templates/triggerer/triggerer-service.yaml 
b/chart/templates/triggerer/triggerer-service.yaml
index f29af89dca7..d9c5415a254 100644
--- a/chart/templates/triggerer/triggerer-service.yaml
+++ b/chart/templates/triggerer/triggerer-service.yaml
@@ -45,4 +45,10 @@ spec:
       protocol: TCP
       port: {{ .Values.ports.triggererLogs }}
       targetPort: {{ .Values.ports.triggererLogs }}
+  {{- if .Values.ipFamilyPolicy }}
+  ipFamilyPolicy: {{ .Values.ipFamilyPolicy }}
+  {{- end }}
+  {{- if .Values.ipFamilies }}
+  ipFamilies: {{- toYaml .Values.ipFamilies | nindent 4 }}
+  {{- end }}
 {{- end }}
diff --git a/chart/templates/workers/worker-service.yaml 
b/chart/templates/workers/worker-service.yaml
index 45a38d8b793..c1980e92617 100644
--- a/chart/templates/workers/worker-service.yaml
+++ b/chart/templates/workers/worker-service.yaml
@@ -61,6 +61,12 @@ spec:
       protocol: TCP
       port: {{ .Values.ports.workerLogs }}
       targetPort: {{ .Values.ports.workerLogs }}
+  {{- if .Values.ipFamilyPolicy }}
+  ipFamilyPolicy: {{ .Values.ipFamilyPolicy }}
+  {{- end }}
+  {{- if .Values.ipFamilies }}
+  ipFamilies: {{- toYaml .Values.ipFamilies | nindent 4 }}
+  {{- end }}
 {{- end }}
 {{- end }}
 {{- end }}
diff --git a/chart/tests/helm_tests/airflow_core/test_api_server.py 
b/chart/tests/helm_tests/airflow_core/test_api_server.py
index 79d38849939..e6cc131e763 100644
--- a/chart/tests/helm_tests/airflow_core/test_api_server.py
+++ b/chart/tests/helm_tests/airflow_core/test_api_server.py
@@ -741,6 +741,26 @@ class TestAPIServerService:
 
         assert len(docs) == 0
 
+    def test_ip_family_policy(self):
+        docs = render_chart(
+            values={
+                "ipFamilyPolicy": "PreferDualStack",
+                "ipFamilies": ["IPv4", "IPv6"],
+            },
+            show_only=["templates/api-server/api-server-service.yaml"],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) == 
"PreferDualStack"
+        assert jmespath.search("spec.ipFamilies", docs[0]) == ["IPv4", "IPv6"]
+
+    def test_ip_family_policy_not_set_by_default(self):
+        docs = render_chart(
+            show_only=["templates/api-server/api-server-service.yaml"],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) is None
+        assert jmespath.search("spec.ipFamilies", docs[0]) is None
+
 
 class TestAPIServerNetworkPolicy:
     """Tests api-server network policy."""
diff --git a/chart/tests/helm_tests/airflow_core/test_scheduler.py 
b/chart/tests/helm_tests/airflow_core/test_scheduler.py
index 140bb5153ac..45f8dfd91f0 100644
--- a/chart/tests/helm_tests/airflow_core/test_scheduler.py
+++ b/chart/tests/helm_tests/airflow_core/test_scheduler.py
@@ -1089,6 +1089,28 @@ class TestSchedulerService:
         assert "executor" in jmespath.search("metadata.labels", docs[0])
         assert jmespath.search("metadata.labels", docs[0])["executor"] == 
expected_label
 
+    def test_ip_family_policy(self):
+        docs = render_chart(
+            values={
+                "executor": "LocalExecutor",
+                "ipFamilyPolicy": "PreferDualStack",
+                "ipFamilies": ["IPv4", "IPv6"],
+            },
+            show_only=["templates/scheduler/scheduler-service.yaml"],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) == 
"PreferDualStack"
+        assert jmespath.search("spec.ipFamilies", docs[0]) == ["IPv4", "IPv6"]
+
+    def test_ip_family_policy_not_set_by_default(self):
+        docs = render_chart(
+            values={"executor": "LocalExecutor"},
+            show_only=["templates/scheduler/scheduler-service.yaml"],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) is None
+        assert jmespath.search("spec.ipFamilies", docs[0]) is None
+
 
 class TestSchedulerServiceAccount:
     """Tests scheduler service account."""
diff --git a/chart/tests/helm_tests/airflow_core/test_triggerer.py 
b/chart/tests/helm_tests/airflow_core/test_triggerer.py
index a1ecd6763f9..85643149de8 100644
--- a/chart/tests/helm_tests/airflow_core/test_triggerer.py
+++ b/chart/tests/helm_tests/airflow_core/test_triggerer.py
@@ -740,6 +740,30 @@ class TestTriggerer:
         }
 
 
+class TestTriggererService:
+    """Tests triggerer service."""
+
+    def test_ip_family_policy(self):
+        docs = render_chart(
+            values={
+                "ipFamilyPolicy": "PreferDualStack",
+                "ipFamilies": ["IPv4", "IPv6"],
+            },
+            show_only=["templates/triggerer/triggerer-service.yaml"],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) == 
"PreferDualStack"
+        assert jmespath.search("spec.ipFamilies", docs[0]) == ["IPv4", "IPv6"]
+
+    def test_ip_family_policy_not_set_by_default(self):
+        docs = render_chart(
+            show_only=["templates/triggerer/triggerer-service.yaml"],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) is None
+        assert jmespath.search("spec.ipFamilies", docs[0]) is None
+
+
 class TestTriggererServiceAccount:
     """Tests triggerer service account."""
 
diff --git a/chart/tests/helm_tests/airflow_core/test_worker.py 
b/chart/tests/helm_tests/airflow_core/test_worker.py
index 7d604cc87cc..e66a8713510 100644
--- a/chart/tests/helm_tests/airflow_core/test_worker.py
+++ b/chart/tests/helm_tests/airflow_core/test_worker.py
@@ -2784,6 +2784,28 @@ class TestWorkerService:
         assert labels["test_label"] == "test_label_value"
         assert "key" not in labels
 
+    def test_ip_family_policy(self):
+        docs = render_chart(
+            values={
+                "executor": "CeleryExecutor",
+                "ipFamilyPolicy": "PreferDualStack",
+                "ipFamilies": ["IPv4", "IPv6"],
+            },
+            show_only=["templates/workers/worker-service.yaml"],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) == 
"PreferDualStack"
+        assert jmespath.search("spec.ipFamilies", docs[0]) == ["IPv4", "IPv6"]
+
+    def test_ip_family_policy_not_set_by_default(self):
+        docs = render_chart(
+            values={"executor": "CeleryExecutor"},
+            show_only=["templates/workers/worker-service.yaml"],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) is None
+        assert jmespath.search("spec.ipFamilies", docs[0]) is None
+
 
 class TestWorkerCeleryServiceAccount:
     @pytest.mark.parametrize(
diff --git a/chart/tests/helm_tests/otel_collector/test_otel_collector.py 
b/chart/tests/helm_tests/otel_collector/test_otel_collector.py
index b7d84347fb9..66cb5c58ec8 100644
--- a/chart/tests/helm_tests/otel_collector/test_otel_collector.py
+++ b/chart/tests/helm_tests/otel_collector/test_otel_collector.py
@@ -400,6 +400,25 @@ class TestOtelCollectorService:
         docs = render_chart(values={"otelCollector": {"tracesEnabled": True}}, 
show_only=[SERVICE_TEMPLATE])
         assert "annotations" not in jmespath.search("metadata", docs[0])
 
+    def test_ip_family_policy(self):
+        docs = render_chart(
+            values={
+                "otelCollector": {"tracesEnabled": True},
+                "ipFamilyPolicy": "PreferDualStack",
+                "ipFamilies": ["IPv4", "IPv6"],
+            },
+            show_only=[SERVICE_TEMPLATE],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) == 
"PreferDualStack"
+        assert jmespath.search("spec.ipFamilies", docs[0]) == ["IPv4", "IPv6"]
+
+        docs = render_chart(
+            values={"otelCollector": {"tracesEnabled": True}},
+            show_only=[SERVICE_TEMPLATE],
+        )
+        assert jmespath.search("spec.ipFamilies", docs[0]) is None
+
 
 class TestOtelCollectorServiceAccount:
     def test_default_create(self):
diff --git a/chart/tests/helm_tests/other/test_flower.py 
b/chart/tests/helm_tests/other/test_flower.py
index a9bf518aed8..915dbb76587 100644
--- a/chart/tests/helm_tests/other/test_flower.py
+++ b/chart/tests/helm_tests/other/test_flower.py
@@ -573,6 +573,28 @@ class TestFlowerService:
         assert "test_label" in jmespath.search("metadata.labels", docs[0])
         assert jmespath.search("metadata.labels", docs[0])["test_label"] == 
"test_label_value"
 
+    def test_ip_family_policy(self):
+        docs = render_chart(
+            values={
+                "flower": {"enabled": True},
+                "ipFamilyPolicy": "PreferDualStack",
+                "ipFamilies": ["IPv4", "IPv6"],
+            },
+            show_only=["templates/flower/flower-service.yaml"],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) == 
"PreferDualStack"
+        assert jmespath.search("spec.ipFamilies", docs[0]) == ["IPv4", "IPv6"]
+
+    def test_ip_family_policy_not_set_by_default(self):
+        docs = render_chart(
+            values={"flower": {"enabled": True}},
+            show_only=["templates/flower/flower-service.yaml"],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) is None
+        assert jmespath.search("spec.ipFamilies", docs[0]) is None
+
 
 class TestFlowerNetworkPolicy:
     """Tests flower network policy."""
diff --git a/chart/tests/helm_tests/other/test_pgbouncer.py 
b/chart/tests/helm_tests/other/test_pgbouncer.py
index 2219d2f0ca1..4b2530cf2de 100644
--- a/chart/tests/helm_tests/other/test_pgbouncer.py
+++ b/chart/tests/helm_tests/other/test_pgbouncer.py
@@ -108,6 +108,28 @@ class TestPgbouncer:
 
         assert jmespath.search("spec.clusterIP", docs[0]) == "10.10.10.10"
 
+    def test_pgbouncer_service_ip_family_policy(self):
+        docs = render_chart(
+            values={
+                "pgbouncer": {"enabled": True},
+                "ipFamilyPolicy": "PreferDualStack",
+                "ipFamilies": ["IPv4", "IPv6"],
+            },
+            show_only=["templates/pgbouncer/pgbouncer-service.yaml"],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) == 
"PreferDualStack"
+        assert jmespath.search("spec.ipFamilies", docs[0]) == ["IPv4", "IPv6"]
+
+    def test_pgbouncer_service_ip_family_policy_not_set_by_default(self):
+        docs = render_chart(
+            values={"pgbouncer": {"enabled": True}},
+            show_only=["templates/pgbouncer/pgbouncer-service.yaml"],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) is None
+        assert jmespath.search("spec.ipFamilies", docs[0]) is None
+
     @pytest.mark.parametrize(
         ("revision_history_limit", "global_revision_history_limit"),
         [(8, 10), (10, 8), (8, None), (None, 10), (None, None)],
diff --git a/chart/tests/helm_tests/other/test_redis.py 
b/chart/tests/helm_tests/other/test_redis.py
index 5d726823d72..842db0cd739 100644
--- a/chart/tests/helm_tests/other/test_redis.py
+++ b/chart/tests/helm_tests/other/test_redis.py
@@ -576,3 +576,23 @@ class TestRedisService:
             show_only=["templates/redis/redis-service.yaml"],
         )
         assert jmespath.search("spec.clusterIP", docs[0]) == "127.0.0.1"
+
+    def test_ip_family_policy(self):
+        docs = render_chart(
+            values={
+                "ipFamilyPolicy": "PreferDualStack",
+                "ipFamilies": ["IPv4", "IPv6"],
+            },
+            show_only=["templates/redis/redis-service.yaml"],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) == 
"PreferDualStack"
+        assert jmespath.search("spec.ipFamilies", docs[0]) == ["IPv4", "IPv6"]
+
+    def test_ip_family_policy_not_set_by_default(self):
+        docs = render_chart(
+            show_only=["templates/redis/redis-service.yaml"],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) is None
+        assert jmespath.search("spec.ipFamilies", docs[0]) is None
diff --git a/chart/tests/helm_tests/other/test_statsd.py 
b/chart/tests/helm_tests/other/test_statsd.py
index 6f45d9cd4ec..619851f4b9b 100644
--- a/chart/tests/helm_tests/other/test_statsd.py
+++ b/chart/tests/helm_tests/other/test_statsd.py
@@ -422,6 +422,32 @@ class TestStatsd:
         assert expected == 
jmespath.search("spec.template.spec.terminationGracePeriodSeconds", docs[0])
 
 
+class TestStatsdService:
+    """Tests statsd service."""
+
+    def test_ip_family_policy(self):
+        docs = render_chart(
+            values={
+                "statsd": {"enabled": True},
+                "ipFamilyPolicy": "PreferDualStack",
+                "ipFamilies": ["IPv4", "IPv6"],
+            },
+            show_only=["templates/statsd/statsd-service.yaml"],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) == 
"PreferDualStack"
+        assert jmespath.search("spec.ipFamilies", docs[0]) == ["IPv4", "IPv6"]
+
+    def test_ip_family_policy_not_set_by_default(self):
+        docs = render_chart(
+            values={"statsd": {"enabled": True}},
+            show_only=["templates/statsd/statsd-service.yaml"],
+        )
+
+        assert jmespath.search("spec.ipFamilyPolicy", docs[0]) is None
+        assert jmespath.search("spec.ipFamilies", docs[0]) is None
+
+
 class TestStatsdServiceAccount:
     """Tests statsd service account."""
 
diff --git a/chart/values.schema.json b/chart/values.schema.json
index 671554181ff..516cda888d5 100644
--- a/chart/values.schema.json
+++ b/chart/values.schema.json
@@ -232,6 +232,34 @@
             "default": false,
             "x-docsSection": "Kubernetes"
         },
+        "ipFamilyPolicy": {
+            "description": "Specify the ip family policy to configure 
dual-stack networking for all Services. See 
https://kubernetes.io/docs/concepts/services-networking/dual-stack/";,
+            "type": [
+                "string",
+                "null"
+            ],
+            "enum": [
+                "SingleStack",
+                "PreferDualStack",
+                "RequireDualStack",
+                null
+            ],
+            "default": null,
+            "x-docsSection": "Kubernetes"
+        },
+        "ipFamilies": {
+            "description": "List of IP families for all Services (e.g. 
[\"IPv4\"] or [\"IPv6\"] or [\"IPv4\", \"IPv6\"]).",
+            "type": "array",
+            "items": {
+                "type": "string",
+                "enum": [
+                    "IPv4",
+                    "IPv6"
+                ]
+            },
+            "default": [],
+            "x-docsSection": "Kubernetes"
+        },
         "imagePullSecrets": {
             "description": "List of existing Kubernetes secrets containing 
Base64 encoded credentials to connect to private registries (will get passed to 
imagePullSecrets).",
             "type": "array",
diff --git a/chart/values.yaml b/chart/values.yaml
index 125a6eabf0d..9b3f8b0cd61 100644
--- a/chart/values.yaml
+++ b/chart/values.yaml
@@ -139,6 +139,13 @@ labels: {}
 # Whenever service links should be added to each pod.
 enableServiceLinks: false
 
+# Specify the ip family policy to configure dual-stack networking for all 
Services.
+# See https://kubernetes.io/docs/concepts/services-networking/dual-stack/
+ipFamilyPolicy: ~
+
+# List of IP families for all Services (e.g., ["IPv4"] or ["IPv6"] or 
["IPv4","IPv6"]).
+ipFamilies: []
+
 # List of existing Kubernetes secrets containing Base64 encoded credentials to 
connect to private
 # registries. Items can be either strings or {name: secret} objects.
 imagePullSecrets: []

Reply via email to