Skip to content

fix(cli): turn Connect's rack off on clusters without zones - #589

Merged
bmscomp merged 1 commit into
mainfrom
fix/connect-rack-no-zones
Nov 3, 2026
Merged

bmscomp merged 1 commit into
mainfrom
fix/connect-rack-no-zones

Conversation

@bmscomp

@bmscomp bmscomp commented Nov 3, 2026

Copy link
Copy Markdown
Owner

Why

On a cluster whose nodes have no topology.kubernetes.io/zone label, kates deploy installs Kafka Connect workers that can never be scheduled. The chart defaults to rack.enabled=true, and Strimzi turns rack.topologyKey into a required node affinity. On a single-node k3d the 3 workers stayed Pending for 43 hours, and kates deploy status showed Degraded: kafkaconnects.kafka.strimzi.io CRD missing Ready condition. Kafka itself was fine, because the values generator already falls back to kubernetes.io/hostname there.

What

kafkaConnectHelmArgs sets rack.enabled=false when introspection found no zones. Clusters with zones keep rack on. A re-run heals an existing install, since kafkaConnectNeedsReconcile already upgrades a Connect that isn't Ready.

Behaviour to review

An admin-less deploy reads no nodes, so report.Zones is always empty and it now turns rack off too, even on a zoned cluster. That is deliberate: rack on an unknown cluster can hang forever, while rack off only gives up cross-zone fetch savings.

Deliberately not done

The chart default is unchanged, so a plain helm install on a zoneless cluster still hits this. Changing it would turn rack off for everyone who relies on the default.

Tests

  • New TestKafkaConnectHelmArgsRack, confirmed failing without the fix.
  • On the affected k3d cluster, the same setting by hand (helm upgrade --reuse-values --set rack.enabled=false): the dry-run diff was only the rack block and its init container, then KafkaConnect went Ready=True with 3/3 workers. The rebuilt CLI has not been run against the cluster.
  • Local: go vet, go test ./..., golangci-lint --new-from-rev=origin/main, govulncheck, check-cli-style.sh, check-cli-compat.sh, and ./mvnw verify with Docker up.

Strimzi turns rack.topologyKey into a required node affinity, so on nodes
with no topology.kubernetes.io/zone label the workers stay Pending forever
and the deploy fails its Connect wait. Introspection already knows: with no
zones, deploy now sets rack.enabled=false.
@bmscomp
bmscomp merged commit a17a032 into main Nov 3, 2026
60 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant