You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 095-stretch-cluster.md
+37-11Lines changed: 37 additions & 11 deletions
Original file line number
Diff line number
Diff line change
@@ -146,11 +146,6 @@ data:
146
146
kubeconfig: <base64-encoded-kubeconfig>
147
147
```
148
148
149
-
When the `STRIMZI_REMOTE_KUBE_CONFIG` environment variable is set, the Cluster Operator will recognize that it needs to deploy a stretch Kafka cluster.
150
-
151
-
In this mode, any `StrimziPodSet` resources created in a remote cluster will include the annotation `strimzi.io/remote-podset: true`.
152
-
This annotation allows the remote cluster’s Strimzi operator to reconcile the StrimziPodSet independently, without requiring the presence of the `Kafka` and `KafkaNodePool` custom resources in the same cluster.
153
-
154
149
##### Remote cluster operator configuration
155
150
156
151
When deploying the operator to remote clusters, the operator must be configured to reconcile only StrimziPodSet resources by setting the existing environment variable:
@@ -173,11 +168,42 @@ The official Strimzi documentation should clearly state that it is necessary to
173
168
174
169
##### Kafka CR
175
170
176
-
There is no change required to the Kafka custom resource (Kafka CR).
177
-
The Kafka resource remains exactly as defined in the existing Strimzi API, and users can continue to define their cluster configurations in the standard way.
178
-
Remote cluster access credentials are configured through environment variables in the Cluster Operator deployment.
179
-
This simplifies the Kafka CR and keeps global operational concerns decoupled from workload specifications.
180
-
Cluster-specific configuration, such as the target remote cluster for each node pool, is specified in the KafkaNodePool CR via annotations.
171
+
To enable stretch cluster functionality, users must explicitly opt in by adding the following annotation to the Kafka resource:
172
+
173
+
```yaml
174
+
metadata:
175
+
annotations:
176
+
strimzi.io/enable-stretch-cluster: "true"
177
+
```
178
+
179
+
This annotation signals the user's intent to deploy a stretch Kafka cluster.
180
+
However, stretch mode is only activated if both of the following conditions are met:
181
+
182
+
- The Kafka CR has the `strimzi.io/enable-stretch-cluster: "true"` annotation, and
183
+
- The Cluster Operator has the `STRIMZI_REMOTE_KUBE_CONFIG` environment variable set with access credentials for the remote clusters.
184
+
185
+
If either condition is not satisfied, the deployment falls back to a standard single-cluster setup. In such cases, the operator will log a warning such as:
186
+
187
+
```
188
+
Stretch cluster requested via annotation, but STRIMZI_REMOTE_KUBE_CONFIG is not configured — defaulting to single-cluster deployment.
189
+
```
190
+
191
+
This design ensures:
192
+
193
+
- No changes are required to the Kafka CRD.
194
+
- Stretch and non-stretch Kafka deployments can co-exist under the same Cluster Operator instance.
195
+
- Users receive clear feedback when configuration is incomplete or inconsistent.
196
+
197
+
Additionally, when deploying a stretch cluster, the `StrimziPodSet` resources in the remote clusters (created by the Cluster Operator in the central cluster and reconciled by the Cluster Operator in the remote cluster) will include the following annotation:
198
+
199
+
200
+
```yaml
201
+
metadata:
202
+
annotations:
203
+
strimzi.io/remote-podset: "true"
204
+
```
205
+
206
+
This annotation indicates to the remote Cluster Operator that the `StrimziPodSet` is part of a stretch cluster deployment and enables it to reconcile the resource independently, even though the `Kafka` and `KafkaNodePool` custom resources are not present in the remote cluster.
181
207
182
208
##### KafkaNodePool CR
183
209
@@ -345,7 +371,7 @@ The key additional entry in stretch mode is
This entry is added only when stretch mode is enabled (i.e., when `STRIMZI_REMOTE_KUBE_CONFIG` is configured).
374
+
This entry is added only when stretch mode is enabled (i.e., when `STRIMZI_REMOTE_KUBE_CONFIG` environment variable is set and the `Kafka` CR is annotated with `strimzi.io/enable-stretch-cluster: "true`).
349
375
Regular single-cluster deployments do not include this entry, preserving the existing SAN generation logic.
350
376
This ensures secure, DNS-verifiable TLS communication between Kafka nodes across clusters without compromising on hostname verification or requiring any changes to Kafka's default TLS configuration.
0 commit comments