Skip to content

feat(apisix-ingress-controller): make Gateway API CRDs optional via crds.gatewayAPI.enabled - #1010

Merged
nic-6443 merged 1 commit into
apache:masterfrom
janiussyafiq:feat/gateway-api-crds-toggle
Sep 17, 2026
Merged

nic-6443 merged 1 commit into
apache:masterfrom
janiussyafiq:feat/gateway-api-crds-toggle

Conversation

@janiussyafiq

Copy link
Copy Markdown
Contributor

Fixes #958. Alternative to #919.

Why

The chart ships the Gateway API CRDs in crds/, which Helm installs once and never updates, cannot toggle, and cannot reconcile with CRDs that already exist in the cluster.
On GKE 1.35 the Gateway API CRDs are pre-installed and guarded by a ValidatingAdmissionPolicy, so users have to work around the chart with --skip-crds and manual kubectl apply, which also skips the APISIX CRDs.

What

  • Move the vendored Gateway API v1.6.0 standard bundle (unchanged content) from crds/gwapi-crds.yaml to gateway-api/standard-install.yaml, rendered by a template behind crds.gatewayAPI.enabled (default true).
  • A CRD is rendered only when it does not exist yet or already belongs to this release, so CRDs installed by GKE, Istio, Cilium or an older chart version are left untouched and never adopted.
  • Chart-managed CRDs carry helm.sh/resource-policy: keep, so helm uninstall and crds.gatewayAPI.enabled=false never delete them.
  • APISIX CRDs stay in crds/ and keep following --skip-crds.
  • Chart 1.3.1 -> 1.4.0.

Verified

kind, Helm 3.19 and 4.1: fresh install, pre-existing unowned CRDs (GKE-like), upgrade from chart 1.3.0, helm upgrade updating chart-owned CRDs, enabled=false and helm uninstall keeping CRDs, helm template without cluster access.

…rds.gatewayAPI.enabled

Move the vendored Gateway API v1.6.0 standard bundle out of crds/ into a template gated
by crds.gatewayAPI.enabled (default true). CRDs already present in the cluster but not
created by this release (for example installed by GKE) are left untouched, chart-managed
CRDs get helm.sh/resource-policy: keep and are updated on helm upgrade.

Fixes apache#958
@nic-6443
nic-6443 merged commit 43ed5e3 into apache:master Sep 17, 2026
2 checks passed
@janiussyafiq
janiussyafiq deleted the feat/gateway-api-crds-toggle branch September 17, 2026 06:43
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.

help request: I am unable to deploy APISIX version 3.15 via Helm within a GKE 1.35 cluster.

3 participants