Files
kong-dataplane-catalog/dev/api-gateway/policies-kustomization.yaml
T
Stéphane Tailland 3c5025ee52 Move the gateway entrypoints into the domain namespace
The gateway and policies Kustomizations sat in flux-system, and so did the
Secret carrying the control-plane id. Neither was a governance decision:
postBuild.substituteFrom resolves only in the Kustomization's own
namespace, dataplane-template-defaults existed only in flux-system, so
everything that needed it had to live there too — in a namespace the
feature team has no access to. The team could not touch its own gateway.

k8s-platform now places that ConfigMap in every domain namespace, so the
constraint is gone. Move both Kustomizations and the control-plane
ExternalSecret to catalog. The id no longer transits a shared namespace
either, which was a compromise this repo documented rather than liked.

Adds the GitRepository this repo never had — its Kustomizations point at
k8s-platform for templates, and nothing needed to read the repo that
declares them, because those declarations were applied by hand. It reuses
the domain's existing deploy key rather than minting one; verified that
the key reads this repository. Worth knowing what that implies: the key is
not scoped to a single repo, so the isolation its per-repo name suggests
does not exist.

And the bootstrap Kustomization that watches ./dev/api-gateway, so all of
it reconciles from git from now on.

Migration is not a patch: a namespace is immutable, so the existing
objects have to be deleted and recreated. Deleting a Kustomization with
prune enabled would take its Gateway, GatewayConfiguration and mirror CR
with it, so prune has to be turned off on the old objects first, then the
new ones adopt what is already running.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 14:39:03 +02:00

33 lines
1.2 KiB
YAML

# Split from gateway-kustomization.yaml on purpose: different change
# cadence (policies get tuned far more often than the Gateway itself gets
# recreated) and different blast radius (a bad policy build/prune can't
# touch the Gateway/DataPlane, and vice versa). Same GitRepository, same
# domain namespace, different path.
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: catalog-dev-api-gateway-policies
namespace: catalog
spec:
interval: 10m
sourceRef:
kind: GitRepository
name: k8s-platform
path: ./dataplane-globalpolicy-template
prune: true
postBuild:
substitute:
NAME: catalog-dev
NAMESPACE: catalog
# Stable by construction: the mirror CR is declared with this derived
# name in k8s-platform/dataplane-template/controlplane-mirror.yaml, so
# it no longer has to be looked up after each Gateway reconcile.
CONTROL_PLANE_REF_NAME: catalog-dev-cp
# Every audience valid anywhere in the catalog domain — grows as the
# domain gains APIs.
JWT_AUDIENCE_WHITELIST: '["catalog-api", "mcp-catalog"]'
OIDC_ISSUER: https://keycloak.sttlab.local/realms/classic-models
substituteFrom:
- kind: ConfigMap
name: dataplane-template-defaults