Problem
Chart versions 1.0.0 and 1.1.2 both render a KafkaMirrorMaker2 resource that is incompatible with Strimzi operator 1.0.0 (released with Kafka 4.0 support). The issues manifest in two layers:
1. apiVersion: kafka.strimzi.io/v1beta2 (chart 1.0.0)
Strimzi 1.0.0 removed the v1beta2 API version — all CRDs promoted to v1 stable GA. Chart 1.0.0 renders:
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker2
This causes ArgoCD to show the application as Missing because the CRD version no longer exists.
2. Removed spec fields (chart 1.1.2)
Chart 1.1.2 fixes the apiVersion to kafka.strimzi.io/v1 but still renders the pre-1.0.0 spec structure which was completely removed in Strimzi 1.0.0.
Fields rendered by the chart that no longer exist in the CRD schema:
| Field |
Status in Strimzi 1.0.0 |
spec.clusters[] |
Removed — replaced by spec.target (inline) + spec.mirrors[].source |
spec.mirrors[].heartbeatConnector |
Removed |
Verified against the live CRD on a Strimzi 1.0.0 cluster:
$ kubectl get crd kafkamirrormaker2s.kafka.strimzi.io \
-o jsonpath='{.spec.versions[0].schema.openAPIV3Schema.properties.spec.properties}' \
| python3 -c "import json,sys; d=json.load(sys.stdin); print(list(d.keys()))"
['clientRackInitImage', 'image', 'jmxOptions', 'jvmOptions', 'livenessProbe', 'logging',
'metricsConfig', 'mirrors', 'rack', 'readinessProbe', 'replicas', 'resources',
'target', 'template', 'tracing', 'version']
$ kubectl get crd kafkamirrormaker2s.kafka.strimzi.io \
-o jsonpath='{.spec.versions[0].schema.openAPIV3Schema.properties.spec.properties.mirrors.items.properties}' \
| python3 -c "import json,sys; d=json.load(sys.stdin); print(list(d.keys()))"
['checkpointConnector', 'groupsExcludePattern', 'groupsPattern', 'source',
'sourceConnector', 'topicsExcludePattern', 'topicsPattern']
ArgoCD Server Side Apply (ServerSideApply=true) rejects the manifest with:
failed to create typed patch object (partition-telemetry/partition-mirrormaker2;
kafka.strimzi.io/v1, Kind=KafkaMirrorMaker2): errors:
.spec.mirrors[0].heartbeatConnector: field not declared in schema
.spec.clusters: field not declared in schema
Required Fix
The chart templates need to be rewritten to use the Strimzi 1.0.0 KafkaMirrorMaker2 spec structure:
apiVersion: kafka.strimzi.io/v1
kind: KafkaMirrorMaker2
spec:
replicas: 3
version: "3.9.0"
target:
# target cluster config inline (bootstrapServers, auth, tls, ...)
mirrors:
- source:
# source cluster config inline (bootstrapServers, auth, tls, ...)
sourceConnector:
config: {}
checkpointConnector:
config: {}
topicsPattern: ".*"
groupsPattern: ".*"
Key changes:
spec.clusters[] → spec.target (target cluster inline) + spec.mirrors[].source (source cluster inline)
spec.mirrors[].heartbeatConnector → removed entirely (no longer exists in 1.0.0)
spec.connectCluster → removed (no longer needed with the new inline approach)
Environment
- Strimzi operator: 1.0.0
- Chart version tested: 1.1.2
- Kubernetes: EKS (AWS), ArgoCD ApplicationSet with
ServerSideApply=true
Problem
Chart versions
1.0.0and1.1.2both render aKafkaMirrorMaker2resource that is incompatible with Strimzi operator 1.0.0 (released with Kafka 4.0 support). The issues manifest in two layers:1.
apiVersion: kafka.strimzi.io/v1beta2(chart 1.0.0)Strimzi 1.0.0 removed the
v1beta2API version — all CRDs promoted tov1stable GA. Chart 1.0.0 renders:This causes ArgoCD to show the application as
Missingbecause the CRD version no longer exists.2. Removed spec fields (chart 1.1.2)
Chart 1.1.2 fixes the
apiVersiontokafka.strimzi.io/v1but still renders the pre-1.0.0 spec structure which was completely removed in Strimzi 1.0.0.Fields rendered by the chart that no longer exist in the CRD schema:
spec.clusters[]spec.target(inline) +spec.mirrors[].sourcespec.mirrors[].heartbeatConnectorVerified against the live CRD on a Strimzi 1.0.0 cluster:
ArgoCD Server Side Apply (
ServerSideApply=true) rejects the manifest with:Required Fix
The chart templates need to be rewritten to use the Strimzi 1.0.0
KafkaMirrorMaker2spec structure:Key changes:
spec.clusters[]→spec.target(target cluster inline) +spec.mirrors[].source(source cluster inline)spec.mirrors[].heartbeatConnector→ removed entirely (no longer exists in 1.0.0)spec.connectCluster→ removed (no longer needed with the new inline approach)Environment
ServerSideApply=true