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: modules/ROOT/partials/release-notes/release-25.11.adoc
+49-17Lines changed: 49 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -270,34 +270,66 @@ See https://github.com/stackabletech/commons-operator/pull/372[commons-operator#
270
270
[#listener-operator-improvements-25_11_0]
271
271
===== Stackable listener-operator
272
272
273
-
* *Breaking:* Default ListenerClass `.spec.externalTrafficPolicy` to `null` to improve LoadBalancer support across various Kubernetes environments.
274
-
Previously, ListenerClasses used `Local` by default, which can be more performant, but needs to be supported by the LoadBalancer.
275
-
Setting this field no `null` forwards the defaulting to the Kubernetes API server, which internally defaults to `Cluster`.
276
-
This change can result in degraded performance when the field was previously unconfigured, therefore it is marked as a breaking change.
277
-
The field can explicitly be set to `Local` to restore the old behavior.
273
+
* *Breaking:* ListenerClass `.spec.externalTrafficPolicy` now defaults to `null` (leaving this field unconfigured, previously it defaulted to `Local`).
274
+
This improves LoadBalancer support across various Kubernetes environments.
275
+
The Kubernetes API server will apply its default value of `Cluster` when this field is unset.
278
276
See https://github.com/stackabletech/listener-operator/pull/347[listener-operator#347].
279
-
* *Breaking:* The listener-operator Helm chart default values for `preset` changed from `stable-nodes` to `ephemeral-nodes`.
280
-
Previously, `external-stable` NodePorts pinned the Pod to a specific node, which caused problems with node rotations.
281
-
With the new default preset, the `external-stable` ListenerClass can only be used if the Kubernetes cluster supports LoadBalancers, which is considered a breaking change.
282
-
Node pinning can be enabled via ListenerClass' new xref:listener-operator:listenerclass.adoc#_node_stickiness[`.spec.pinnedNodePorts`] field.
283
-
The preset can be configured using the following two commands:
277
+
+
278
+
[%collapsible]
279
+
====
280
+
*You are affected if all of the following conditions apply:*
281
+
282
+
- You are using ListenerClasses.
283
+
- You did NOT explicitly set `.spec.externalTrafficPolicy` in your ListenerClass definitions so far.
284
+
- You experience performance degradation after upgrading or were relying on the old default behavior for different reasons.
285
+
286
+
*What to do if you are affected:*
287
+
Explicitly set `.spec.externalTrafficPolicy: Local` in your ListenerClass to restore the previous behavior.
288
+
289
+
*Why this change?*
290
+
The previous default of `Local` provides better performance but requires support by the LoadBalancer.
291
+
Setting to `null` allows the Kubernetes API server to apply its default (`Cluster`), which works across more environments.
292
+
====
293
+
294
+
* *Breaking:* The listener-operator Helm chart default value for `preset` changed from `stable-nodes` to `ephemeral-nodes`.
295
+
This change improves reliability by making failures visible immediately rather than appearing unexpectedly during node rotations.
296
+
See the tracking issue https://github.com/stackabletech/issues/issues/770[issues#770].
297
+
+
298
+
[%collapsible]
299
+
====
300
+
*You are affected if all of the following conditions apply:*
301
+
302
+
- You are using the `external-stable` ListenerClass
303
+
- You are using the `ephemeral-nodes` preset (new default now)
304
+
- Your Kubernetes cluster does NOT support LoadBalancers
305
+
306
+
*What changes:*
307
+
Previously with the `stable-nodes` preset, the `external-stable` ListenerClass would use NodePorts and pin Pods to specific nodes.
308
+
This could break at any point in time when nodes were rotated and the pinned Pods could not be scheduled to their pinned nodes anymore.
309
+
With the new `ephemeral-nodes` default, `external-stable` requires LoadBalancer support and will *fail immediately on deployment* if LoadBalancers are not available.
310
+
This fail-fast behavior is preferred over any potential long-term breakage.
311
+
312
+
*What to do if you are affected:*
313
+
314
+
* *Option 1:* Add LoadBalancer support to your Kubernetes cluster (recommended for production).
315
+
* *Option 2:* Explicitly set the preset to `stable-nodes` to restore the old behavior (but be aware it might break during node rotations):
284
316
+
285
317
--
286
318
[source,shell]
287
319
----
288
-
helm --set preset=stable-nodes # or ephemeral-nodes or none
It should be noted that `stackablectl` automatically detects k3s and kind clusters and uses the `stable-nodes` preset since version xref:management:stackablectl:release-notes.adoc#_1_2_0[1.2.0].
297
-
298
-
See the tracking issue https://github.com/stackabletech/issues/issues/770[issues#770] for more details.
299
328
--
300
329
330
+
* *Option 3:* Use the new `.spec.pinnedNodePorts` field to control xref:listener-operator:listenerclass.adoc#_node_stickiness[node pinning].
331
+
====
332
+
301
333
* *Breaking:* Helm values have changed to allow for separate configuration of affinity, resource, etc... between the CSI Provisioner Deployment Pods and the CSI driver DaemonSet Pods.
0 commit comments