diff --git a/dev/api-gateway/kustomization.yaml b/dev/api-gateway/gateway-kustomization.yaml similarity index 86% rename from dev/api-gateway/kustomization.yaml rename to dev/api-gateway/gateway-kustomization.yaml index 1b23264..dac4dde 100644 --- a/dev/api-gateway/kustomization.yaml +++ b/dev/api-gateway/gateway-kustomization.yaml @@ -30,9 +30,9 @@ spec: # 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 applied directly - # into the catalog namespace instead (secret.yaml, kubectl apply -f) — - # never passes through flux-system. + # namespace. Rejected. The real konnect-auth Secret is materialized + # directly into the catalog namespace instead (externalsecret.yaml, via + # External Secrets Operator + Vault) — never passes through flux-system. substituteFrom: - kind: ConfigMap name: dataplane-template-defaults diff --git a/dev/api-gateway/policies-kustomization.yaml b/dev/api-gateway/policies-kustomization.yaml new file mode 100644 index 0000000..7349210 --- /dev/null +++ b/dev/api-gateway/policies-kustomization.yaml @@ -0,0 +1,37 @@ +# 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: flux-system +spec: + interval: 10m + sourceRef: + kind: GitRepository + name: k8s-platform + path: ./dataplane-globalpolicy-template + prune: true + postBuild: + substitute: + NAME: catalog-dev + NAMESPACE: catalog + # Looked up manually after gateway-kustomization.yaml's + # Gateway/GatewayConfiguration first reconciled — the operator + # auto-names the mirrored KonnectGatewayControlPlane with a random + # suffix, not derivable from NAME. See + # dataplane-globalpolicy-template/global-policies-pluginbindings.yaml's + # comment. Automate this lookup once the self-service pipeline exists. + CONTROL_PLANE_REF_NAME: catalog-dev-bkphl + # Every audience valid anywhere in the catalog domain — grows as the + # domain gains APIs. PLACEHOLDER still: no Keycloak client exists yet + # for "catalog-api" (only the classic-models-api client's own audience + # mapper exists today) — this openid-connect binding will reject every + # real token until that client is created. + JWT_AUDIENCE_WHITELIST: '["catalog-api"]' # PLACEHOLDER audience name, Keycloak client not created yet + substituteFrom: + - kind: ConfigMap + name: dataplane-template-defaults