fix: pin a Kafka version the operator supports, and add the API's producer

Strimzi 1.2.0 supports 4.2.0 through 4.3.1; the manifest still asked for 4.1.0,
so the cluster sat NotReady with the reason only visible in the Kafka CR's
status — the operator logs said nothing. Pinned to 4.3.1, and metadataVersion
removed rather than guessed: the operator derives it, and a stale spelling there
is the same failure one release later.

Adds a KafkaUser for classic-models-api: Write and Describe on the
classic-models. prefix, and no Read. It publishes domain events and consumes
nothing, and a producer that can read every topic exfiltrates every other
domain's events if it is ever compromised.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Stéphane Tailland
2026-08-30 16:12:30 +02:00
parent e99cc49b8a
commit 5fad740b7f
4 changed files with 37 additions and 5 deletions
+7 -1
View File
@@ -9,7 +9,7 @@ Single-broker Kafka cluster for dev/test, deployed via the [Strimzi](https://str
```
kafka namespace
├── strimzi-cluster-operator Strimzi operator — reconciles Kafka/KafkaUser/KafkaTopic CRs
├── kafka-dual-role-0 Kafka 4.1.0 broker (KRaft, controller + broker in one pod)
├── kafka-dual-role-0 Kafka 4.3.1 broker (KRaft, controller + broker in one pod)
└── kafka-entity-operator Topic Operator + User Operator (manages topics and users)
```
@@ -40,6 +40,12 @@ kafka-kafka-bootstrap.kafka.svc.cluster.local:9093
|---|---|---|
| `kafka-admin` | `kafka-admin` | Super user — unrestricted access |
| `kafka-client` | `kafka-client` | Application user — Read/Write all topics and groups |
| `classic-models-api` | `classic-models-api` | Producer for `classic-models.*` — **Write and Describe only**, no Read |
`classic-models-api` publishes domain events and consumes nothing, so it is
write-only and prefix-scoped. A producer that can also read every topic is a
producer that exfiltrates every other domain's events if it is ever
compromised.
Strimzi stores credentials in Kubernetes secrets. Each secret contains two keys:
- `password` — the SCRAM password