From a16a1fed1c7095f0b1cdbfd1ae28018a081cfbe0 Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:08:46 +0200 Subject: [PATCH 1/4] chore: bump versions for 26.7 --- .../kafka/examples/getting_started/kafka.yaml | 2 +- .../examples/kraft_migration/01-setup.yaml | 2 +- .../kraft_migration/02-start-controllers.yaml | 2 +- .../kraft_migration/03-migrate-metadata.yaml | 4 ++-- .../kraft_migration/04-migrate-brokers.yaml | 2 +- .../kraft_migration/05-kraft-mode.yaml | 2 +- .../mirror_maker/01-setup-source.yaml | 2 +- .../mirror_maker/02-setup-target.yaml | 2 +- .../pages/getting_started/first_steps.adoc | 2 +- .../pages/usage-guide/kraft-controller.adoc | 4 ++-- .../kafka/pages/usage-guide/security.adoc | 10 +++++----- .../kafka/partials/supported-versions.adoc | 6 ++++-- rust/operator-binary/src/config/jvm.rs | 4 ++-- rust/operator-binary/src/crd/affinity.rs | 2 +- rust/operator-binary/src/crd/listener.rs | 4 ++-- rust/operator-binary/src/crd/mod.rs | 20 +++++++++---------- .../kuttl/upgrade/02-install-kafka.yaml.j2 | 2 +- tests/test-definition.yaml | 15 +++++++------- 18 files changed, 45 insertions(+), 42 deletions(-) diff --git a/docs/modules/kafka/examples/getting_started/kafka.yaml b/docs/modules/kafka/examples/getting_started/kafka.yaml index 4b75bbe7..33bd0c3b 100644 --- a/docs/modules/kafka/examples/getting_started/kafka.yaml +++ b/docs/modules/kafka/examples/getting_started/kafka.yaml @@ -5,7 +5,7 @@ metadata: name: simple-kafka spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: tls: serverSecretClass: null diff --git a/docs/modules/kafka/examples/kraft_migration/01-setup.yaml b/docs/modules/kafka/examples/kraft_migration/01-setup.yaml index bb765307..ab4a2bad 100644 --- a/docs/modules/kafka/examples/kraft_migration/01-setup.yaml +++ b/docs/modules/kafka/examples/kraft_migration/01-setup.yaml @@ -81,7 +81,7 @@ metadata: namespace: kraft-migration spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 pullPolicy: IfNotPresent clusterConfig: metadataManager: zookeeper diff --git a/docs/modules/kafka/examples/kraft_migration/02-start-controllers.yaml b/docs/modules/kafka/examples/kraft_migration/02-start-controllers.yaml index 5fce10af..c4e2eeb5 100644 --- a/docs/modules/kafka/examples/kraft_migration/02-start-controllers.yaml +++ b/docs/modules/kafka/examples/kraft_migration/02-start-controllers.yaml @@ -6,7 +6,7 @@ metadata: namespace: kraft-migration spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 pullPolicy: IfNotPresent clusterConfig: metadataManager: zookeeper diff --git a/docs/modules/kafka/examples/kraft_migration/03-migrate-metadata.yaml b/docs/modules/kafka/examples/kraft_migration/03-migrate-metadata.yaml index 87304945..34fab66b 100644 --- a/docs/modules/kafka/examples/kraft_migration/03-migrate-metadata.yaml +++ b/docs/modules/kafka/examples/kraft_migration/03-migrate-metadata.yaml @@ -6,7 +6,7 @@ metadata: namespace: kraft-migration spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 pullPolicy: IfNotPresent clusterConfig: metadataManager: zookeeper @@ -25,7 +25,7 @@ spec: replicas: 3 configOverrides: broker.properties: - inter.broker.protocol.version: "3.9" # - Latest value known to Kafka 3.9.1 + inter.broker.protocol.version: "3.9" # - Latest value known to Kafka 3.9.2 zookeeper.metadata.migration.enable: "true" # - Enable migration mode so the broker can participate in metadata migration. controller.listener.names: "CONTROLLER" controller.quorum.bootstrap.servers: "simple-kafka-controller-default-0.simple-kafka-controller-default-headless.kraft-migration.svc.cluster.local:9093,simple-kafka-controller-default-1.simple-kafka-controller-default-headless.kraft-migration.svc.cluster.local:9093,simple-kafka-controller-default-2.simple-kafka-controller-default-headless.kraft-migration.svc.cluster.local:9093" diff --git a/docs/modules/kafka/examples/kraft_migration/04-migrate-brokers.yaml b/docs/modules/kafka/examples/kraft_migration/04-migrate-brokers.yaml index 5e4a61cd..c48f88c5 100644 --- a/docs/modules/kafka/examples/kraft_migration/04-migrate-brokers.yaml +++ b/docs/modules/kafka/examples/kraft_migration/04-migrate-brokers.yaml @@ -6,7 +6,7 @@ metadata: namespace: kraft-migration spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 pullPolicy: IfNotPresent clusterConfig: metadataManager: zookeeper diff --git a/docs/modules/kafka/examples/kraft_migration/05-kraft-mode.yaml b/docs/modules/kafka/examples/kraft_migration/05-kraft-mode.yaml index 16921d1f..93de2360 100644 --- a/docs/modules/kafka/examples/kraft_migration/05-kraft-mode.yaml +++ b/docs/modules/kafka/examples/kraft_migration/05-kraft-mode.yaml @@ -6,7 +6,7 @@ metadata: namespace: kraft-migration spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 pullPolicy: IfNotPresent clusterConfig: metadataManager: kraft diff --git a/docs/modules/kafka/examples/mirror_maker/01-setup-source.yaml b/docs/modules/kafka/examples/mirror_maker/01-setup-source.yaml index 4d95005a..56a98aeb 100644 --- a/docs/modules/kafka/examples/mirror_maker/01-setup-source.yaml +++ b/docs/modules/kafka/examples/mirror_maker/01-setup-source.yaml @@ -71,7 +71,7 @@ metadata: namespace: mm-migration spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 pullPolicy: IfNotPresent clusterConfig: metadataManager: zookeeper diff --git a/docs/modules/kafka/examples/mirror_maker/02-setup-target.yaml b/docs/modules/kafka/examples/mirror_maker/02-setup-target.yaml index a69421fa..e5c51b6c 100644 --- a/docs/modules/kafka/examples/mirror_maker/02-setup-target.yaml +++ b/docs/modules/kafka/examples/mirror_maker/02-setup-target.yaml @@ -41,7 +41,7 @@ metadata: namespace: mm-migration spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 pullPolicy: IfNotPresent clusterConfig: metadataManager: kraft diff --git a/docs/modules/kafka/pages/getting_started/first_steps.adoc b/docs/modules/kafka/pages/getting_started/first_steps.adoc index 6b5500e2..92210679 100644 --- a/docs/modules/kafka/pages/getting_started/first_steps.adoc +++ b/docs/modules/kafka/pages/getting_started/first_steps.adoc @@ -85,7 +85,7 @@ Labels: app.kubernetes.io/component=broker app.kubernetes.io/managed-by=listeners.stackable.tech_listener app.kubernetes.io/name=listener app.kubernetes.io/role-group=default - app.kubernetes.io/version=3.9.1-stackable0.0.0-dev + app.kubernetes.io/version=3.9.2-stackable0.0.0-dev stackable.tech/vendor=Stackable Annotations: Selector: listener.stackable.tech/mnt.9555cbb6f38d4b0ca1771e6d83d28e27=simple-kafka-broker-default-bootstrap diff --git a/docs/modules/kafka/pages/usage-guide/kraft-controller.adoc b/docs/modules/kafka/pages/usage-guide/kraft-controller.adoc index 36959c51..455188c9 100644 --- a/docs/modules/kafka/pages/usage-guide/kraft-controller.adoc +++ b/docs/modules/kafka/pages/usage-guide/kraft-controller.adoc @@ -31,7 +31,7 @@ spec: clusterConfig: metadataManager: kraft image: - productVersion: "3.9.1" + productVersion: "3.9.2" brokers: roleGroups: default: @@ -124,7 +124,7 @@ NOTE: Before starting the migration we recommend to reduce producer/consumer ope To make the migration step as clear as possible, we'll use a complete working example throughout this guide. The example cluster will be kept minimal without any additional configuration. -We'll use Kafka version `3.9.1` for this purpose. This is because this is the last version from the 3.x Kafka series that runs on ZooKeeper mode and is supported by the SDP. +We'll use Kafka version `3.9.2` for this purpose. This is because this is the last version from the 3.x Kafka series that runs on ZooKeeper mode and is supported by the SDP. We'll also assign broker ids manually from the beginning to simplify this guide. In a real-workd scenario, you do not have this option at this step because your cluster is already running. In a real world-scenario you'll have to collect these ids and configure manual assignment at the second step of the migration. diff --git a/docs/modules/kafka/pages/usage-guide/security.adoc b/docs/modules/kafka/pages/usage-guide/security.adoc index a712bcf4..601f2660 100644 --- a/docs/modules/kafka/pages/usage-guide/security.adoc +++ b/docs/modules/kafka/pages/usage-guide/security.adoc @@ -15,7 +15,7 @@ metadata: name: simple-kafka spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: zookeeperConfigMapName: simple-kafka-znode tls: @@ -95,7 +95,7 @@ metadata: name: simple-kafka spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: authentication: - authenticationClass: kafka-client-tls # <1> @@ -140,7 +140,7 @@ metadata: name: simple-kafka spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: authentication: - authenticationClass: kafka-client-kerberos # <1> @@ -184,7 +184,7 @@ metadata: name: simple-kafka spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: authorization: opa: @@ -208,7 +208,7 @@ metadata: name: simple-kafka spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: authorization: opa: diff --git a/docs/modules/kafka/partials/supported-versions.adoc b/docs/modules/kafka/partials/supported-versions.adoc index 7794f675..4fec83e6 100644 --- a/docs/modules/kafka/partials/supported-versions.adoc +++ b/docs/modules/kafka/partials/supported-versions.adoc @@ -2,8 +2,10 @@ // This is a separate file, since it is used by both the direct Kafka documentation, and the overarching // Stackable Platform documentation. -* 4.1.1 (experimental) - Requires KRaft, please read on the xref:kafka:usage-guide/kraft-controller.adoc[Kraft migration guide]. -* 3.9.1 (LTS) +* 4.2.1 - Requires KRaft, please read on the xref:kafka:usage-guide/kraft-controller.adoc[Kraft migration guide]. +* 4.1.1 (deprecated) - Requires KRaft, please read on the xref:kafka:usage-guide/kraft-controller.adoc[Kraft migration guide]. +* 3.9.2 (LTS) +* 3.9.1 (deprecated) Support for clusters running in Kraft mode (which includes Apache Kafka 4.x.x) is experimental because it has not been thoroughly tested in production environments yet. diff --git a/rust/operator-binary/src/config/jvm.rs b/rust/operator-binary/src/config/jvm.rs index 29622105..79023618 100644 --- a/rust/operator-binary/src/config/jvm.rs +++ b/rust/operator-binary/src/config/jvm.rs @@ -122,7 +122,7 @@ mod tests { name: simple-kafka spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: zookeeperConfigMapName: xyz brokers: @@ -152,7 +152,7 @@ mod tests { name: simple-kafka spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: zookeeperConfigMapName: xyz brokers: diff --git a/rust/operator-binary/src/crd/affinity.rs b/rust/operator-binary/src/crd/affinity.rs index 27b6a59e..da01acca 100644 --- a/rust/operator-binary/src/crd/affinity.rs +++ b/rust/operator-binary/src/crd/affinity.rs @@ -44,7 +44,7 @@ mod tests { name: simple-kafka spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: zookeeperConfigMapName: xyz brokers: diff --git a/rust/operator-binary/src/crd/listener.rs b/rust/operator-binary/src/crd/listener.rs index 41d7796c..7451fad3 100644 --- a/rust/operator-binary/src/crd/listener.rs +++ b/rust/operator-binary/src/crd/listener.rs @@ -382,7 +382,7 @@ mod tests { namespace: default spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: authentication: - authenticationClass: kafka-client-tls @@ -588,7 +588,7 @@ mod tests { namespace: default spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: authentication: - authenticationClass: kafka-kerberos diff --git a/rust/operator-binary/src/crd/mod.rs b/rust/operator-binary/src/crd/mod.rs index cd6a1046..d662de30 100644 --- a/rust/operator-binary/src/crd/mod.rs +++ b/rust/operator-binary/src/crd/mod.rs @@ -615,7 +615,7 @@ mod tests { name: simple-kafka spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: zookeeperConfigMapName: xyz "#; @@ -634,7 +634,7 @@ mod tests { name: simple-kafka spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: tls: serverSecretClass: simple-kafka-server-tls @@ -659,7 +659,7 @@ mod tests { name: simple-kafka spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: tls: serverSecretClass: null @@ -680,7 +680,7 @@ mod tests { name: simple-kafka spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 zookeeperConfigMapName: xyz clusterConfig: tls: @@ -705,7 +705,7 @@ mod tests { name: simple-kafka spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: zookeeperConfigMapName: xyz "#; @@ -724,7 +724,7 @@ mod tests { name: simple-kafka spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: tls: internalSecretClass: simple-kafka-internal-tls @@ -745,7 +745,7 @@ mod tests { name: simple-kafka spec: image: - productVersion: 3.9.1 + productVersion: 3.9.2 clusterConfig: tls: serverSecretClass: simple-kafka-server-tls @@ -764,13 +764,13 @@ mod tests { } #[rstest] - #[case("3.9.1", None, Ok(MetadataManager::ZooKeeper))] + #[case("3.9.2", None, Ok(MetadataManager::ZooKeeper))] #[case( - "3.9.1", + "3.9.2", Some(MetadataManager::ZooKeeper), Ok(MetadataManager::ZooKeeper) )] - #[case("3.9.1", Some(MetadataManager::KRaft), Ok(MetadataManager::KRaft))] + #[case("3.9.2", Some(MetadataManager::KRaft), Ok(MetadataManager::KRaft))] #[case("4.1.1", None, Ok(MetadataManager::KRaft))] #[case( "4.1.1", diff --git a/tests/templates/kuttl/upgrade/02-install-kafka.yaml.j2 b/tests/templates/kuttl/upgrade/02-install-kafka.yaml.j2 index 93e1d415..972b8251 100644 --- a/tests/templates/kuttl/upgrade/02-install-kafka.yaml.j2 +++ b/tests/templates/kuttl/upgrade/02-install-kafka.yaml.j2 @@ -32,7 +32,7 @@ spec: productVersion: "{{ test_scenario['values']['upgrade_old'] }}" pullPolicy: IfNotPresent clusterConfig: - # Need to set this explicitly because the default would be zookeeper for 3.9.1 + # Need to set this explicitly because the default would be zookeeper for 3.9.2 # but we don't want to test zookeeper -> kraft migration here metadataManager: kraft {% if test_scenario['values']['use-client-auth-tls'] == 'true' %} diff --git a/tests/test-definition.yaml b/tests/test-definition.yaml index 23b35194..7a8d7a8a 100644 --- a/tests/test-definition.yaml +++ b/tests/test-definition.yaml @@ -6,20 +6,21 @@ dimensions: - name: kafka-kraft values: - - 3.9.1 - - 4.1.1 + - 3.9.2 + - 4.2.1 - name: kafka values: - 3.9.1 + - 3.9.2 # Alternatively, if you want to use a custom image, append a comma and the full image name to the product version # as in the example below. - # - 3.9.1,oci.stackable.tech/sdp/kafka:3.9.1-stackable0.0.0-dev + # - 3.9.2,oci.stackable.tech/sdp/kafka:3.9.2-stackable0.0.0-dev - name: kafka-latest values: - - 3.9.1 # Using LTS version here + - 3.9.2 # Using LTS version here # Alternatively, if you want to use a custom image, append a comma and the full image name to the product version # as in the example below. - # - 3.9.1,oci.stackable.tech/sdp/kafka:3.9.1-stackable0.0.0-dev + # - 3.9.2,oci.stackable.tech/sdp/kafka:3.9.2-stackable0.0.0-dev - name: zookeeper values: - 3.9.4 @@ -31,10 +32,10 @@ dimensions: - 1.16.2 - name: upgrade_old values: - - 3.9.1 + - 3.9.2 - name: upgrade_new values: - - 4.1.1 + - 4.2.1 - name: use-client-tls values: - "true" From 58e6be12ff9bfc15faed8c6563c4dceff3ec6016 Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:56:24 +0200 Subject: [PATCH 2/4] update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fc957d1..561c8e95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file. ### Added - BREAKING: Add required CLI argument and env var to set the image repository used to construct final product image names: `IMAGE_REPOSITORY` (`--image-repository`), eg. `oci.example.org/my/namespace` ([#961]). +- Add Kafka 3.9.2 and 4.2.1 in tests, docs, getting started guide, etc. ([#973]). ### Changed @@ -22,6 +23,7 @@ All notable changes to this project will be documented in this file. [#960]: https://github.com/stackabletech/kafka-operator/pull/960 [#961]: https://github.com/stackabletech/kafka-operator/pull/961 [#971]: https://github.com/stackabletech/kafka-operator/pull/971 +[#973]: https://github.com/stackabletech/kafka-operator/pull/973 ## [26.3.0] - 2026-03-16 From bb013302121b4e1990281553b8bb2290eba66f37 Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Tue, 2 Jun 2026 11:11:40 +0200 Subject: [PATCH 3/4] Update docs/modules/kafka/partials/supported-versions.adoc Co-authored-by: Sebastian Bernauer --- docs/modules/kafka/partials/supported-versions.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/modules/kafka/partials/supported-versions.adoc b/docs/modules/kafka/partials/supported-versions.adoc index 4fec83e6..1a57dce0 100644 --- a/docs/modules/kafka/partials/supported-versions.adoc +++ b/docs/modules/kafka/partials/supported-versions.adoc @@ -2,8 +2,8 @@ // This is a separate file, since it is used by both the direct Kafka documentation, and the overarching // Stackable Platform documentation. -* 4.2.1 - Requires KRaft, please read on the xref:kafka:usage-guide/kraft-controller.adoc[Kraft migration guide]. -* 4.1.1 (deprecated) - Requires KRaft, please read on the xref:kafka:usage-guide/kraft-controller.adoc[Kraft migration guide]. +* 4.2.1 (experimental, deprecated) - Requires KRaft, please read on the xref:kafka:usage-guide/kraft-controller.adoc[Kraft migration guide]. +* 4.1.1 (experimental, deprecated) - Requires KRaft, please read on the xref:kafka:usage-guide/kraft-controller.adoc[Kraft migration guide]. * 3.9.2 (LTS) * 3.9.1 (deprecated) From 4bd54b8744666b5361bed90636ec4bf27f5415d8 Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Tue, 2 Jun 2026 11:40:39 +0200 Subject: [PATCH 4/4] readd 4.1.1 --- tests/test-definition.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test-definition.yaml b/tests/test-definition.yaml index 7a8d7a8a..0543cca9 100644 --- a/tests/test-definition.yaml +++ b/tests/test-definition.yaml @@ -7,6 +7,7 @@ dimensions: - name: kafka-kraft values: - 3.9.2 + - 4.1.1 - 4.2.1 - name: kafka values: