Stéphane Tailland e1a6b67fc3 Source the control plane from Vault and use a stable ref name
Two hardcoded values tied this repo to one specific Konnect org, and
replacing that org broke both.

CONTROL_PLANE_ID was pasted into gateway-kustomization.yaml. It now
comes from Vault through External Secrets, into a Secret in flux-system
that postBuild.substituteFrom reads. flux-system is acceptable for the
id — it is visible in the Konnect UI URL — but not for the token, which
keeps going straight to the domain namespace as before.

CONTROL_PLANE_REF_NAME held the random suffix the Gateway operator gives
its auto-created mirror CR, looked up by hand. The new org recreated
those CRs under new suffixes, so the ref named an object that no longer
existed and the domain's Kong entities sat Programmed=False. It now
names the ${NAME}-cp mirror declared in k8s-platform's
dataplane-template — derived from NAME, stable across Gateway
recreations and org changes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-26 16:30:33 +02:00
2026-08-19 18:55:06 +02:00
2026-08-19 18:58:36 +02:00

dataplane-catalog

Layer 2 (Gateway infrastructure) for the catalog bounded context (domain team: catalog) — one Control Plane per environment, referenced by ID (created by ../konnect-platform, never recreated here).

This repo does NOT hold KonnectAPIAuthConfiguration/GatewayConfiguration/ Gateway/Certificate YAML directly. The actual resource template (one copy, covering every domain/environment) lives in ../k8s-platform/dataplane-template/, ${VAR}-parameterized. This repo only holds what's specific to one <env>/<gateway-type>/ — two files:

  • kustomization.yaml — a Flux Kustomization CR (not a plain Kustomize build file, despite the name) that builds ../k8s-platform/dataplane-template/ from the k8s-platform GitRepository source. Domain-specific non-sensitive values (NAME, NAMESPACE, CONTROL_PLANE_ID, HOSTNAME, TLS_ISSUER_NAME) are inline under spec.postBuild.substitute — no separate ConfigMap to forget to re-apply after an edit (bit us twice before this got simplified). Cluster-wide defaults (KONNECT_SERVER_URL, GATEWAY_IMAGE, REPLICAS, TLS_ISSUER_KIND) come from dataplane-template-defaults, a ConfigMap shared by every domain, via substituteFrom.
  • externalsecret.yaml — an ExternalSecret (External Secrets Operator) that pulls the Konnect PAT from Vault (secrets/kong-v2/catalog/dev/konnect-pat at https://vault.sttlab.eu, via the shared ClusterSecretStore vault-kong-v2) and materializes it directly as catalog-dev-konnect-auth in the catalog namespace. Not part of the substitute/substituteFrom flow above — Flux's substitution would have required the real PAT to sit in a Secret in flux-system (shared, broadly-readable namespace) before landing here, which was rejected. Rotation is now just "update the value in Vault" — ExternalSecret's refreshInterval (1h) picks it up automatically, nothing to touch in the cluster or in git.
S
Description
No description provided
Readme 51 KiB