From 1e7f97150f6f2b9782872bf1715ddc95fdee867b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20W=C3=BCrbach?= Date: Sun, 26 Apr 2026 14:59:07 +0200 Subject: [PATCH] fix(manifest-server): bind to :: for dual-stack support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Dockerfile's CMD hardcoded `--host 0.0.0.0`, which only binds the IPv4 wildcard address. On dual-stack Kubernetes clusters that allocate IPv6 pod IPs (or pure-IPv6 clusters), the kubelet probes the pod's IPv6 IP for liveness/readiness — Uvicorn doesn't accept those connections, the pod fails health checks, and ends up in CrashLoopBackOff. Switching to `--host ::` binds the IPv6 wildcard. On Linux, an IPv6 listener on `::` accepts both IPv6 connections and IPv4-mapped connections by default (unless `IPV6_V6ONLY=1`), so this is a strict superset of the prior behavior — single-stack IPv4 clusters keep working and dual-stack / IPv6-preferred clusters start working. Repro on EKS with `ipFamilies: [IPv6, IPv4]` (IPv6 first): pod is allocated an IPv6 IP only, liveness probe to /health fails with `connection refused`, pod restarts every ~60s. Tested locally: dual-stack bind verified via `ss -tlnp`. --- airbyte_cdk/manifest_server/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/airbyte_cdk/manifest_server/Dockerfile b/airbyte_cdk/manifest_server/Dockerfile index 7df516a58..1d00a6ccc 100644 --- a/airbyte_cdk/manifest_server/Dockerfile +++ b/airbyte_cdk/manifest_server/Dockerfile @@ -42,4 +42,5 @@ USER airbyte:airbyte EXPOSE 8080 -CMD ["uvicorn", "airbyte_cdk.manifest_server.app:app", "--host", "0.0.0.0", "--port", "8080"] +# `::` binds dual-stack (IPv4 + IPv6); `0.0.0.0` is IPv4-only. +CMD ["uvicorn", "airbyte_cdk.manifest_server.app:app", "--host", "::", "--port", "8080"]