Skip to content

strimzi-mirrormaker2-instance chart incompatible with Strimzi operator 1.0.0: spec.clusters and spec.mirrors[].heartbeatConnector removed #22

@ryanfaircloth

Description

@ryanfaircloth

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions