Skip to content

fix: deliver Envoy Gateway CRs via a multi-source Application#481

Open
emmanuel wants to merge 1 commit into
mainfrom
fix/separate-create-gateway-chart
Open

fix: deliver Envoy Gateway CRs via a multi-source Application#481
emmanuel wants to merge 1 commit into
mainfrom
fix/separate-create-gateway-chart

Conversation

@emmanuel

@emmanuel emmanuel commented May 28, 2026

Copy link
Copy Markdown
Contributor

What

Delivers the Envoy Gateway custom resources (GatewayClass, EnvoyProxy) as a second source on the envoy-gateway Application (multi-source), alongside the gateway-helm chart. ArgoCD then applies the Gateway API / Envoy Gateway CRDs and the CRs in a single sync (CRDs first, then the CRs) — instead of the CRs failing at bootstrap when their CRDs don't exist yet.

The CRs live in a small create-gateway Helm chart (source 2), which also lets the per-environment NLB name be injected via the Application's valuesObject (kustomize replacement of EG_NLB_NAME).

Commits

  • 8d9a7e6 — add the create-gateway mini-chart
  • ac092a7fix render bug: manifests were under template/ (singular); Helm only renders templates/, so the chart rendered zero resources. Renamed template/templates/.
  • 320a98e — add SkipDryRunOnMissingResource=true
  • 23d862frefactor to multi-source: collapse the separate create-gateway Application into a second source on envoy-gateway; the CRDs + CRs now sync as one unit.

Testing

Statichelm template renders both CRs with correct nlbName substitution; kustomize build renders a single multi-source Application with the value injected into source 2.

End-to-end (disposable kind + ArgoCD, empty cluster, no Gateway CRDs): the one multi-source Application bootstrapped all 20 Gateway/Envoy CRDs plus GatewayClass eg + EnvoyProxy eg-proxy in a single sync → Synced/Healthy, nlbName annotation correct.

Note: it converges with or without SkipDryRunOnMissingResource — ArgoCD applies CRDs-then-CRs natively within one Application. The option is kept as low-cost insurance (and matters more if the CRs are ever split back into their own Application).

@emmanuel
emmanuel requested a review from josmo May 28, 2026 18:02
@emmanuel
emmanuel marked this pull request as ready for review June 30, 2026 07:16
Add a create-gateway Helm chart holding the Gateway CRs (GatewayClass,
EnvoyProxy) and deliver it as a second source on the envoy-gateway Application.
ArgoCD applies the gateway-helm CRDs and these CRs in a single sync (CRDs first,
then CRs), so the CRs no longer fail at bootstrap when their CRDs aren't
registered yet. nlbName is injected into the source's valuesObject via a
kustomize replacement of EG_NLB_NAME.

SkipDryRunOnMissingResource is set as insurance; ArgoCD applies CRDs-then-CRs
natively within one Application, so it converges either way.

Verified on kind + ArgoCD: one multi-source Application bootstraps all
Gateway/Envoy CRDs plus the GatewayClass/EnvoyProxy from an empty cluster in a
single sync.
@emmanuel emmanuel changed the title fix: extract create-gateway mini-chart for delayed CRs fix: deliver Envoy Gateway CRs via a multi-source Application Jul 21, 2026
@emmanuel
emmanuel force-pushed the fix/separate-create-gateway-chart branch from 23d862f to 3c01ce0 Compare July 21, 2026 19:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants