33A runnable demo of ** developer self-service for Apache Kafka** . Application teams
44discover available topics in Backstage (published as AsyncAPI), then use a scaffolder
55template to request access. Behind the form, Kong Event Gateway gets a dedicated
6- ** virtual cluster** for the app, ** SCRAM ( or OAuth) credentials ** , and ** ACLs** scoped
6+ ** virtual cluster** for the app, ** credentials (SASL username + password, or OAuth)** , and ** ACLs** scoped
77to exactly the topics requested — delivered via GitOps and reconciled by the ** Kong
88Operator** on Kubernetes.
99
@@ -43,7 +43,7 @@ Operator** on Kubernetes.
4343│ ├── backstage/ # in-cluster Backstage: Deployment, Service, Postgres, config
4444│ ├── argocd/ # Argo CD route through the Kong Gateway (+ insecure mode)
4545│ └── kafka/ # Strimzi Kafka cluster + topics
46- ├── examples/kafka-client/ # SCRAM client config + test commands
46+ ├── examples/kafka-client/ # SASL/PLAIN client config + test commands
4747├── scripts/ # bootstrap, cert, validate
4848└── docs/ # architecture, flows, prerequisites, secrets, repositories
4949```
@@ -131,9 +131,9 @@ repo's `catalog-info.yaml` (see `platform/backstage/app-config.configmap.yaml`).
131131
1321321 . A developer opens the ** Retail Banking NY** or ** Wealth Management LA** API in the
133133 Backstage catalog and reads the AsyncAPI channels (topics).
134- 2 . They run ** Consume Kafka Topics** , name their app, pick topics, and choose SCRAM or
135- OAuth. Backstage opens a PR adding ` apps/<app>/ ` to the ` kafka-selfservice-gitops `
136- repo.
134+ 2 . They run ** Consume Kafka Topics** , name their app, pick topics, and choose
135+ SASL/PLAIN or OAuth. Backstage opens a PR adding ` apps/<app>/ ` to the
136+ ` kafka-selfservice-gitops ` repo.
1371373 . On merge, Argo CD + Kong Operator provision the virtual cluster, credentials, ACLs
138138 and route. The app connects to ` bootstrap.<app>.127-0-0-1.sslip.io:9092 ` .
1391394 . Need more topics later? ** Add Topics to Application** changes only the ACL policy.
@@ -149,14 +149,18 @@ See [`docs/flows.md`](docs/flows.md) for sequence diagrams and
149149
150150## Notes & caveats
151151
152- - Kong Operator CRD field names for Event Gateway are evolving. The virtual cluster
153- ` apiSpec ` mirrors the Konnect / ` kongctl ` schema. Two spots to confirm against the
154- CRDs in * your* operator version: the SCRAM principal ** password secret-ref** shape,
155- and whether ACLs are a separate ` EventGatewayVirtualClusterPolicy ` or inline on the
156- virtual cluster (` spec.apiSpec.clusterPolicies ` ). Both are called out in comments.
157- - SCRAM passwords (and the Backstage/Konnect secrets) are placeholders (` REPLACE_ME ` ).
158- For real use, generate them and store via Sealed Secrets or External Secrets — never
159- commit plaintext. [ ` docs/secrets.md ` ] ( docs/secrets.md ) shows worked manifests for both.
152+ - Auth mechanism: the Kong Operator CRD's ` saslScram ` type does ** not** accept inline
153+ username/password (it only carries ` algorithm ` and resolves principals via Kong
154+ Identity). So the self-contained "issue a user + password, validated and terminated
155+ at the gateway" model uses ** ` saslPlain ` ** (` type: saslPlain ` + a sibling ` saslPlain `
156+ object with ` mediation: terminate ` and ` principals[] ` ). Native SCRAM or OAuth via
157+ Kong Identity is the enterprise path. Auth and ACL manifests match the installed CRD
158+ schema (` configuration.konghq.com/v1alpha1 ` ): auth is a discriminated union, and ACL
159+ rules use ` resourceType ` / ` operations: [{name}] ` / ` resourceNames: {type: stat, stat: [{match}]} ` .
160+ - Credentials (and the Backstage/Konnect secrets) are placeholders (` REPLACE_ME ` ).
161+ For real use, use a secret-template / Konnect vault reference for the SASL password,
162+ and store Kubernetes secrets via Sealed Secrets or External Secrets — never commit
163+ plaintext. [ ` docs/secrets.md ` ] ( docs/secrets.md ) shows worked manifests.
160164- The ` platform/ ` Kafka + Event Gateway manifests are adapted from the
161165 ` kong-event-gw-kubernetes ` reference.
162166
0 commit comments