# sourceRef points at the GitRepository "k8s-platform" (created once, # flux-system) — any domain's Kustomization can reference this same # object, no monorepo: k8s-platform and dataplane-payments stay two # separate repos, `path` below is relative to the root of whichever repo # `sourceRef` names. apiVersion: kustomize.toolkit.fluxcd.io/v1 kind: Kustomization metadata: name: payments-dev-api-gateway namespace: flux-system spec: interval: 10m sourceRef: kind: GitRepository name: k8s-platform path: ./dataplane-template prune: true postBuild: # Domain-specific non-sensitive values inline — no separate ConfigMap to # forget to re-apply after an edit. Inline substitute always wins over # substituteFrom regardless of order, so this still overrides # dataplane-template-defaults where needed. substitute: NAME: payments-dev NAMESPACE: payments HOSTNAME: payments-dev.sttlab.local # Cluster-wide defaults only — the Konnect PAT is NOT handled via # substitute/substituteFrom at all: that mechanism requires the source # Secret to sit in flux-system (same namespace as this Kustomization), # which put a live copy of the real PAT in a shared, broadly-readable # namespace. Rejected. The real konnect-auth Secret is materialized # directly into the payments namespace instead (externalsecret.yaml, via # External Secrets Operator + Vault) — never passes through flux-system. substituteFrom: - kind: ConfigMap name: dataplane-template-defaults # CONTROL_PLANE_ID comes from Vault via ESO instead of being hardcoded # here: a new Konnect org then needs no edit in this repo. Not a secret — # the id is visible in the Konnect UI URL — so flux-system is fine for it, # unlike the token. - kind: Secret name: payments-dev-control-plane