Skip to content

Commit 1d34322

Browse files
committed
docs: Tweak listener-operator changes
1 parent 5659aaf commit 1d34322

File tree

1 file changed

+49
-17
lines changed

1 file changed

+49
-17
lines changed

modules/ROOT/partials/release-notes/release-25.11.adoc

Lines changed: 49 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -270,34 +270,66 @@ See https://github.com/stackabletech/commons-operator/pull/372[commons-operator#
270270
[#listener-operator-improvements-25_11_0]
271271
===== Stackable listener-operator
272272

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.
278276
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):
284316
+
285317
--
286318
[source,shell]
287319
----
288-
helm --set preset=stable-nodes # or ephemeral-nodes or none
289-
----
320+
# Using Helm
321+
helm install listener-operator ... --set preset=stable-nodes
290322
291-
[source,shell]
292-
----
293-
stackablectl --listener-class-preset stable-nodes # or ephemeral-nodes or none
323+
# Using stackablectl
324+
stackablectl release install --listener-class-preset stable-nodes
294325
----
295326
296327
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.
299328
--
300329
330+
* *Option 3:* Use the new `.spec.pinnedNodePorts` field to control xref:listener-operator:listenerclass.adoc#_node_stickiness[node pinning].
331+
====
332+
301333
* *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.
302334
+
303335
--

0 commit comments

Comments
 (0)