Add release notes for 3.4 release#9326
Conversation
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
1883dcf to
a0d4ab8
Compare
a0d4ab8 to
7956115
Compare
Vale Linting ResultsSummary: 2 warnings found
|
| File | Line | Rule | Message |
|---|---|---|---|
| docs/reference/third-party-dependencies/3_4_0.md | 17 | Elastic.BritishSpellings | Use American English spelling 'license' instead of British English 'Licence'. |
| docs/reference/third-party-dependencies/3_4_0.md | 73 | Elastic.BritishSpellings | Use American English spelling 'license' instead of British English 'Licence'. |
The Vale linter checks documentation changes against the Elastic Docs style guide.
To use Vale locally or report issues, refer to Elastic style guide for Vale.
I guess it is because the change is not in |
My guess is the same as yours 🙂 |
barkbay
left a comment
There was a problem hiding this comment.
A few observations on the Features and enhancements list:
-
Validate user-supplied CA for the transport layer of {{es}}[#8953] is labeled>bugand the PR title starts withfix:. It should probably move to the Fixes section. -
Align DaemonSet UpdateReconciled with Deployment reconciler[#9256] also has afix:PR title and explicitly fixes #9246, aligning DaemonSet with a bug that had already been fixed in Deployment and StatefulSet. Feels like a Fixes entry? -
Set TransformStripManagedFields on informer caches[#9321] feels too technical as written. The actual user benefit is a noticeable reduction in operator memory footprint, per the PR description. Something like "Reduce operator memory footprint by stripping managed fields from informer caches" would communicate that better. -
Sign ECK container images (v2) [#9078] feels like it could deserve a Release Highlight. Image signing is a meaningful security feature that users can act on (verifying signatures), and it is a first for ECK.
pebrc
left a comment
There was a problem hiding this comment.
A few comments inline. I also wanted to point out a rolling restart was not considered a breaking change in the past. I know the category also lists "operational disruptions" as "breaking" so I am OK with listing them here, even though if ECK works correctly there should not be any service disruption (but in some cases with larger nodes a drop in throughput etc).
|
|
||
| #### Rolling restarts of {{es}} clusters | ||
|
|
||
| ECK now supports triggering rolling restarts of {{es}} clusters through a new annotation-based mechanism. This enables operators to gracefully restart all nodes in a cluster without manual intervention, useful for applying configuration changes that require a restart. The [rolling restart documentation](docs-content://deploy-manage/deploy/cloud-on-k8s/nodes-orchestration.md#cluster-rolling-restart) provides more details. |
There was a problem hiding this comment.
The framing here is not correct imo. Configuration changes that require a restart are handled by ECK already. This is more of a troubleshooting mechanism
There was a problem hiding this comment.
troubleshooting mechanism it is, changed in fe75460
| #### Operator-managed FIPS keystore password support for {{es}} | ||
|
|
||
| ECK now automatically manages FIPS-compliant keystore passwords for {{es}}. When FIPS mode is enabled in the {{es}} configuration (`xpack.security.fips_mode.enabled: true`), the operator generates, stores, and configures a password-protected keystore — eliminating the need for manual `podTemplate` overrides. This feature activates for {{es}} 9.4.0+ and respects any existing user-provided keystore password configuration. For more details, refer to the [{{es}} FIPS keystore password documentation](docs-content://deploy-manage/deploy/cloud-on-k8s/deploy-fips-compatible-version-of-eck.md#k8s-fips-keystore-password). |
There was a problem hiding this comment.
"FIPS-compliant" is a loaded term — ECK doesn't guarantee FIPS compliance, it satisfies the Elasticsearch requirement of a password-protected keystore when running in FIPS mode. Suggest rewording to avoid the compliance claim:
| #### Operator-managed FIPS keystore password support for {{es}} | |
| ECK now automatically manages FIPS-compliant keystore passwords for {{es}}. When FIPS mode is enabled in the {{es}} configuration (`xpack.security.fips_mode.enabled: true`), the operator generates, stores, and configures a password-protected keystore — eliminating the need for manual `podTemplate` overrides. This feature activates for {{es}} 9.4.0+ and respects any existing user-provided keystore password configuration. For more details, refer to the [{{es}} FIPS keystore password documentation](docs-content://deploy-manage/deploy/cloud-on-k8s/deploy-fips-compatible-version-of-eck.md#k8s-fips-keystore-password). | |
| #### Operator-managed FIPS keystore password support for {{es}} | |
| ECK now automatically manages a password-protected keystore for {{es}} when FIPS mode is enabled. When `xpack.security.fips_mode.enabled` is set to `true` in the {{es}} configuration, the operator generates, stores, and configures a password-protected keystore — eliminating the need for manual `podTemplate` overrides. This feature activates for {{es}} 9.4.0+ and respects any existing user-provided keystore password configuration. For more details, refer to the [{{es}} FIPS keystore password documentation](docs-content://deploy-manage/deploy/cloud-on-k8s/deploy-fips-compatible-version-of-eck.md#k8s-fips-keystore-password). |
|
|
||
| **Impact**<br> Upgrading to ECK 3.4.0 will trigger a rolling restart of most managed workloads. Plan the upgrade during a maintenance window. | ||
|
|
||
| **Action**<br> Schedule the ECK operator upgrade during a maintenance window to account for the rolling restart. |
There was a problem hiding this comment.
The maintenance window recommendation here (and in the ES client cert entry on line 43) seems at odds with what ECK is designed to do — rolling restarts are supposed to be disruption-free by respecting PDBs, managing shard reallocation, and checking cluster health before proceeding. Recommending a maintenance window undermines confidence in that mechanism.
Also, the guidance is inconsistent across the four rolling restart entries: this one and the ES client cert entry recommend a maintenance window, while the Kibana init container and Kibana memory limit entries don't.
I'd suggest dropping the maintenance window language from all rolling restart entries and using consistent wording like "No action required. Be aware that [affected pods] will restart during the operator upgrade." — similar to what the Kibana init container entry already says.
| ::::{dropdown} Rolling restart of managed pods due to seccompProfile security context change | ||
| ECK 3.4.0 sets `seccompProfile` to `RuntimeDefault` on managed pods. This causes a rolling restart of nearly all ECK-managed pods ({{es}}, {{product.kibana}}, APM Server, Enterprise Search, Logstash, Elastic Maps Server, and Elastic Package Registry) during the operator upgrade. Beats and Elastic Agent pods are not affected. This rolling restart only occurs when the operator flag `set-default-security-context` is set to `auto-detect` (the default) or `true`. | ||
| For more information, check [PR #9012](https://github.com/elastic/cloud-on-k8s/pull/9012). | ||
|
|
||
| **Impact**<br> Upgrading to ECK 3.4.0 will trigger a rolling restart of most managed workloads. Plan the upgrade during a maintenance window. | ||
|
|
||
| **Action**<br> Schedule the ECK operator upgrade during a maintenance window to account for the rolling restart. | ||
| :::: | ||
|
|
||
| ::::{dropdown} Rolling restart of {{product.kibana}} pods due to init container security context change | ||
| ECK 3.4.0 sets a default security context on the {{product.kibana}} init container, which will cause {{product.kibana}} pods to rolling restart during the operator upgrade. | ||
| For more information, check [PR #9218](https://github.com/elastic/cloud-on-k8s/pull/9218). | ||
|
|
||
| **Impact**<br> {{product.kibana}} pods will be restarted as part of the operator upgrade. | ||
|
|
||
| **Action**<br> No action required. Be aware that {{product.kibana}} pods will restart during the upgrade. | ||
| :::: | ||
|
|
||
| ::::{dropdown} Rolling restart of {{es}} pods due to client certificate authentication support | ||
| ECK 3.4.0 adds client certificate authentication support for {{es}}. This changes the pre-stop hook and readiness probe scripts embedded in the {{es}} pod spec to handle client certificates when available, which causes a rolling restart of all {{es}} pods during the operator upgrade. | ||
| For more information, check [PR #9229](https://github.com/elastic/cloud-on-k8s/pull/9229) and [PR #9375](https://github.com/elastic/cloud-on-k8s/pull/9375). | ||
|
|
||
| **Impact**<br> All {{es}} pods will be restarted as part of the operator upgrade. | ||
|
|
||
| **Action**<br> No action required. Be aware that {{es}} pods will restart during the upgrade. Plan the upgrade during a maintenance window. | ||
| :::: |
There was a problem hiding this comment.
Consider consolidating the four rolling restart entries into one per affected workload. A customer doesn't care whether ES restarts because of the client cert feature or the seccompProfile change — they care that ES pods will restart during the upgrade. The current structure reads like an internal changelog rather than user-facing guidance.
Suggested structure:
- {{es}} pods will restart during the operator upgrade — one entry covering all ES pod spec changes (seccompProfile, client cert scripts). No action required beyond awareness.
- {{product.kibana}} pods will restart during the operator upgrade — one entry covering init container security context and memory limit changes. This one should still call out the OOM risk for users with explicit memory limits below 2Gi, since that has a distinct action item.
- Default PVC handling change — keep as-is, it has its own distinct action.
This reduces five entries to three, and each maps to something the user can actually act on rather than listing internal implementation reasons for the same observable outcome.
This PR adds the release notes for 3.4 release