fix(envoy-ai-gateway): sync mutating webhook CA for mainline HTTPS gateway (EAI-8292) - #823
fix(envoy-ai-gateway): sync mutating webhook CA for mainline HTTPS gateway (EAI-8292)#823Q-Dub wants to merge 14 commits into
Conversation
Render clientConfig.caBundle from the same self-signed secret material on every Helm/ArgoCD sync so the API server trust anchor stays aligned with the ai-gateway-controller TLS cert (EAI-8292). Co-authored-by: Cursor <cursoragent@cursor.com>
Extract shared probe/sync/restart logic for the envoy-ai-gateway pod mutating webhook so OpenShift install and operators can recover from caBundle drift without duplicating inline bash (EAI-8292). Co-authored-by: Cursor <cursoragent@cursor.com>
Replace inline probe_ai_gateway_webhook in install.sh with the shared scripts/utils/ai-gateway-webhook-health.sh from the extracted tarball. Co-authored-by: Cursor <cursoragent@cursor.com>
Render cert-manager and self-signed webhook CRs from one helper so rules and failurePolicy cannot drift (EAI-8292). Co-authored-by: Cursor <cursoragent@cursor.com>
Install-critical helper now lives under scripts/, OpenShift install fails if it is missing, and names/help/caBundle patch are less brittle (EAI-8292). Co-authored-by: Cursor <cursoragent@cursor.com>
Add post-handoff gate scripts (Gateway programmed, webhook probe-only, HTTPS AIWB UI) and --probe-only on ai-gateway-webhook-health.sh for Kaytoo validation and future shared-cluster CI. Co-authored-by: Cursor <cursoragent@cursor.com>
Add configuration-reference docs for helmParameters and script env vars, offline install-helper tests (caBundle helm render + cpu profile YAML), CI install-script-checks job, and restore valid cpu AIMClusterModelSource. Co-authored-by: Cursor <cursoragent@cursor.com>
bf642fa to
1fa932e
Compare
Head-node checks hit the MetalLB IP with --resolve instead of the public VIP, which often fails from inside the same Kaytoo/single-node cluster. Co-authored-by: Cursor <cursoragent@cursor.com>
Scope out aim-cluster-model-source CPU profile update; belongs in a separate catalog ticket, not the envoy-ai-gateway webhook CA fix. Co-authored-by: Cursor <cursoragent@cursor.com>
Replace silogen.ai subdomain examples with <cluster-domain> and drop Kaytoo-specific invocation that referenced internal hostnames. Co-authored-by: Cursor <cursoragent@cursor.com>
install-script-checks failed after reverting the CPU catalog update; keep only webhook caBundle tests on this branch. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Tested this on Confirmed the root cause matchesTwo self-signed CAs generated 4 minutes apart:
|
Webhook drift blocks both Envoy gateways but heal only rolled https Deployments, leaving ai-gateway stuck at 0/1 with Programmed=False while the final probe still exited 0. Always restart both data planes after heal and require Gateway Programmed=True before reporting success. Co-authored-by: Cursor <cursoragent@cursor.com>
Keep main's data-driven install.sh and wire ai-gateway-webhook-probe to the shared scripts/ai-gateway-webhook-health.sh heal path. Co-authored-by: Cursor <cursoragent@cursor.com>
Summary
clientConfig.caBundlein theenvoy-ai-gatewaymutating webhook from the same self-signed secret material on every Helm/ArgoCD render, preventing API-server ↔ controller TLS drift that blocks Envoy HTTPS data-plane pod creation.scripts/utils/ai-gateway-webhook-health.sh(probe → sync CA from secret → restartai-gateway-controller).install.shnow calls the shared script instead of inline bash.Fixes the k2 incident where
https://aiwbui.wookie.silogen.ai/failed with connection closed despite healthy app pods — GatewayProgrammed=False,Envoy replicas unavailable.Jira: https://amd.atlassian.net/browse/EAI-8292
Test plan
helm template envoy-ai-gateway sources/envoy-ai-gateway/v1.0.0 --namespace envoy-ai-gateway-systemrendersMutatingWebhookConfigurationwith non-emptyclientConfig.caBundlekubectl get gateway https -n envoy-gateway-systemshowsProgrammed=Truescripts/utils/ai-gateway-webhook-health.shexits 0 on healthy clusterkubectl get pods -n envoy-gateway-system -l gateway.envoyproxy.io/owning-gateway-name=httpshttps://aiwbui.<domain>/completes TLS (307 redirect to sign-in is OK)https://argocd.<domain>/returns 200--heal-envoy-data-plane${CLUSTER_FORGE_DIR}/cluster-forge/scripts/utils/ai-gateway-webhook-health.shafter tarball extract