first commit
This commit is contained in:
@@ -1,5 +0,0 @@
|
||||
# TODO: DataPlane CRD for customers/dev/api-gateway
|
||||
apiVersion: gateway-operator.konghq.com/v1beta1
|
||||
kind: DataPlane
|
||||
metadata:
|
||||
name: customers-dev
|
||||
@@ -0,0 +1,27 @@
|
||||
# Real PAT lives only in Vault (secrets/kong-v2/customers/dev/konnect-pat),
|
||||
# never in git, never manually kubectl-applied. refreshInterval controls how
|
||||
# often ESO re-checks Vault and re-syncs the K8s Secret if the value
|
||||
# changed there — rotation becomes "update Vault", nothing to touch in the
|
||||
# cluster.
|
||||
apiVersion: external-secrets.io/v1
|
||||
kind: ExternalSecret
|
||||
metadata:
|
||||
name: customers-dev-konnect-auth
|
||||
namespace: customers
|
||||
spec:
|
||||
refreshInterval: 1h
|
||||
secretStoreRef:
|
||||
kind: ClusterSecretStore
|
||||
name: vault-kong-v2
|
||||
target:
|
||||
name: customers-dev-konnect-auth
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
konghq.com/credential: konnect
|
||||
konghq.com/secret: "true"
|
||||
data:
|
||||
- secretKey: token
|
||||
remoteRef:
|
||||
key: kong-v2/customers/dev/konnect-pat
|
||||
property: token
|
||||
@@ -0,0 +1,37 @@
|
||||
# sourceRef points at the GitRepository "k8s-platform" (created once,
|
||||
# flux-system, see ../../../k8s-platform/flux/gitrepository.yaml) — any
|
||||
# domain's Kustomization can reference this same object, no monorepo:
|
||||
# k8s-platform and dataplane-customers 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: customers-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 (bit us twice already). Inline
|
||||
# substitute always wins over substituteFrom regardless of order, so
|
||||
# this still overrides dataplane-template-defaults where needed.
|
||||
substitute:
|
||||
NAME: customers-dev
|
||||
NAMESPACE: customers
|
||||
CONTROL_PLANE_ID: "4d791a4c-177d-45dd-9ba5-3d28926458cd"
|
||||
HOSTNAME: customers-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 customers namespace instead (externalsecret.yaml, via
|
||||
# External Secrets Operator + Vault) — never passes through flux-system.
|
||||
substituteFrom:
|
||||
- kind: ConfigMap
|
||||
name: dataplane-template-defaults
|
||||
@@ -1,6 +0,0 @@
|
||||
# TODO: KonnectExtension referencing the Control Plane created by
|
||||
# konnect-platform/domains/customers/dev/ (by ID, not created here)
|
||||
apiVersion: konnect.konghq.com/v1alpha1
|
||||
kind: KonnectExtension
|
||||
metadata:
|
||||
name: customers-dev
|
||||
@@ -1,5 +0,0 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- dataplane.yaml
|
||||
- konnectextension.yaml
|
||||
@@ -0,0 +1,42 @@
|
||||
# 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: customers-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: customers-dev
|
||||
NAMESPACE: customers
|
||||
# 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: customers-dev-tw8tn
|
||||
# Every audience valid anywhere in the customers domain — grows as the
|
||||
# domain gains APIs.
|
||||
JWT_AUDIENCE_WHITELIST: '["customers-api"]'
|
||||
# Deliberate override of dataplane-template-defaults' OIDC_ISSUER (VPS
|
||||
# Keycloak) — the customers-api client lives only in the local
|
||||
# in-cluster Keycloak (ns keycloak, keycloak.sttlab.local/realms/
|
||||
# classic-models, deployed 2026-08-23), a separate IdP instance from
|
||||
# the VPS one the other domains (catalog, librechat) authenticate
|
||||
# against. Confirmed reachable in-cluster (OIDC discovery, 200) before
|
||||
# wiring this in.
|
||||
OIDC_ISSUER: https://keycloak.sttlab.local/realms/classic-models
|
||||
substituteFrom:
|
||||
- kind: ConfigMap
|
||||
name: dataplane-template-defaults
|
||||
Reference in New Issue
Block a user