Chapter 3. New features and enhancements
Features and enhancements introduced in Streams for Apache Kafka 3.1.
Streams for Apache Kafka 3.1 on OpenShift is based on Apache Kafka 4.1 and Strimzi 0.48.x.
To view all the enhancements and bugs that are resolved in this release, see the Streams for Apache Kafka Jira project.
3.1. OpenShift 4.16–4.20 Copy linkLink copied to clipboard!
Streams for Apache Kafka 3.1 is tested on OpenShift Container Platform 4.16–4.20.
For more information, see Chapter 9, Supported Configurations.
3.2. Apache Kafka 4.1 support Copy linkLink copied to clipboard!
Streams for Apache Kafka supports and uses Apache Kafka version Kafka 4.1. For an overview of the features and enhancements introduced with Kafka 4.1, refer to the Kafka 4.1 Release Notes.
Only Kafka distributions built by Red Hat are supported.
You must upgrade the Cluster Operator to Streams for Apache Kafka version 3.1 before you can upgrade Kafka nodes and client applications to Kafka 4.1. For upgrade instructions, see Upgrading Streams for Apache Kafka.
Kafka 4.0.x is supported only for the purpose of upgrading to Streams for Apache Kafka 3.1.
Kafka 4.1 operates only in KRaft mode, where Kafka runs without ZooKeeper by utilizing the Raft protocol. Kafka 3.9 was the final version to support ZooKeeper. Consequently, Streams for Apache Kafka 2.9.x (LTS) is the last version compatible with Kafka clusters using ZooKeeper.
3.2.1. Requires KRaft clusters Copy linkLink copied to clipboard!
To upgrade to Streams for Apache Kafka 3.0 or later, you must first migrate your Kafka clusters to KRaft mode.
3.2.2. KRaft limitations Copy linkLink copied to clipboard!
Dynamic controller quorums are not currently supported in Streams for Apache Kafka on OpenShift, as the related Kafka feature was only recently resolved. For more information, see KAFKA-16538.
To maintain compatibility with existing KRaft-based deployments, Streams for Apache Kafka on OpenShift uses only static controller quorums. This applies to new and existing clusters, regardless of whether you’re deploying, migrating, or maintaining them.
Support for dynamic controller quorums is expected in a future Streams for Apache Kafka release.
3.3. Streams for Apache Kafka Copy linkLink copied to clipboard!
A summary of new features and enhancements for Streams for Apache Kafka.
3.3.1. Metrics Reporter (technology preview) Copy linkLink copied to clipboard!
As a technology preview, the Metrics Reporter exposes Kafka metrics directly over HTTP in a Prometheus-compatible format.
3.3.2. Cruise Control progress tracking Copy linkLink copied to clipboard!
You can now monitor partition rebalance progress using status information in the KafkaRebalance resource. Progress details are stored in a ConfigMap, accessible with oc get configmaps, and include:
-
estimatedTimeToCompletionInMinutes— Estimated minutes until rebalance completes. -
completedByteMovementPercentage— Percentage of data moved (0–100, rounded down). -
executorState.json— Summary JSON from/kafkacruisecontrol/state?substates=executor, showing executor status, partition movement, concurrency limits, and total data to move.
3.3.3. Feature gate for Server Side Apply (SSA) Copy linkLink copied to clipboard!
The ServerSideApplyPhase1 feature gate (disabled by default) adds Server Side Apply (SSA) support for ConfigMap, Ingress, PVC, Service, and ServiceAccount resources.
3.3.4. Support for Kubernetes Image Volumes to mount custom plugins Copy linkLink copied to clipboard!
You can now configure Kafka Connect so that connectors are automatically mounted as Kubernetes Image Volumes. By defining the connector plugins using the .spec.plugins property of the KafkaConnect custom resource, Strimzi automatically mounts them into the Kafka Connect deployment.
3.3.5. KRaft mode and node pools are now enabled by default Copy linkLink copied to clipboard!
The strimzi.io/node-pools and strimzi.io/kraft annotations are not required anymore and will be ignored if set.
3.3.6. Additional configurable Kafka properties Copy linkLink copied to clipboard!
The following properties are now configurable for Kafka resources:
-
broker.session.timeout.ms -
broker.heartbeat.interval.ms -
controller.socket.timeout.ms
3.3.7. Ignore users through configuration Copy linkLink copied to clipboard!
The STRIMZI_IGNORED_USERS_PATTERN environmental variable and a regex expression allows configuration of users for which any existing ACLs, Quotas and SCRAM-SHa credentials will be ignored. This option is useful when you want to configure the User Operator to ignore users that are managed through another mechanism.
3.3.8. Support for custom client authentication Copy linkLink copied to clipboard!
The KafkaClientAuthenticationCustom schema supports custom client authentication. Custom client authentication allows you to use any type of Kafka-supported authentication mechanism.
3.3.9. Monitoring of custom resources Copy linkLink copied to clipboard!
The state of custom resources can now be monitored using kube-state-metrics (KSM). Example configuration is provided in examples/metrics/kube-state-metrics.
3.3.10. Distinction between cluster-wide and broker-specific properties Copy linkLink copied to clipboard!
A distinction is now made between changes to the cluster-wide and broker-specific properties applied dynamically. This related to properties configured in the Kafka and KafkaNodePool resources.
3.3.11. Pod disruption budget support extended Copy linkLink copied to clipboard!
Support for configuring a pod disruption budget (PDB) has been extended to EntityOperator, CruiseControl and KafkaExporter resources through the PodDisruptionBudgetTemplate schema.
3.3.12. Status retrieval using the Kafka Admin API Copy linkLink copied to clipboard!
The Kafka Admin API is now used to to get the list of registered brokers. The KafkaStatus schema registeredNodeIds property is no longer required and is deprecated.
3.3.13. Connector restart parameters Copy linkLink copied to clipboard!
Refine connector restart behavior with the includeTasks and onlyFailed parameters, which both default to false.
3.3.14. OAuth parameters Copy linkLink copied to clipboard!
Additional OAuth configuration options have been added for OAuth 2 authentication on the listener and the client. On the listener clientGrantType has been added. On the client grantType has been added.
Grant type is used when requesting a token from the authorization server.
3.3.15. JsonTemplateLayout support for logging Copy linkLink copied to clipboard!
JsonTemplateLayout is now supported when configuring log appenders in Log4j2.
3.3.16. Kafka Connect loads PEM certificates directly Copy linkLink copied to clipboard!
Kafka Connect now uses KubernetesSecretConfigProvider to load PEM-format truststore and keystore certificates directly from Kubernetes secrets.
3.4. Kafka Bridge Copy linkLink copied to clipboard!
A summary of new features and enhancements for Kafka Bridge.
3.4.1. Schema validation error reporting Copy linkLink copied to clipboard!
Kafka Bridge now includes a validation_errors field in the error response JSON when a schema validation error occurs. This field is part of the Error OpenAPI component and is omitted for other error types.
3.5. Proxy Copy linkLink copied to clipboard!
A summary of new features and enhancements for Streams for Apache Kafka Proxy.
3.5.1. Authorization filter Copy linkLink copied to clipboard!
A new Authorization filter is available. The filter applies Kafka-style topic authorization to client requests, starting with metadata.
3.5.2. SASL Inspection filter Copy linkLink copied to clipboard!
A new SASL Inspection filter is available. The filter extracts the authenticated principal from a successful SASL exchange and makes it available to other filters in the chain.
Supported mechanisms:
- PLAIN
- SCRAM-SHA-256
- SCRAM-SHA-512
- OAUTHBEARER
3.5.3. Record Encryption filter: Azure Key Vault support for record encryption Copy linkLink copied to clipboard!
A new Azure Key Vault Key Management Service (KMS) implementation is available for record encryption. This allows users to store and manage encryption keys in Azure Key Vault.
3.5.4. Retrieve topic names in filters Copy linkLink copied to clipboard!
Filters can now map topic IDs to topic names using the new topicNames lookup, improving compatibility with topic-ID–based traffic.
3.5.5. Pluggable mTLS subject handling per virtual cluster Copy linkLink copied to clipboard!
Virtual clusters can now define a subjectBuilder to control how client identities are derived from mTLS certificates.
3.5.6. Azure Key Vault KMS support for record encryption Copy linkLink copied to clipboard!
Record encryption now supports Azure Key Vault for key storage and retrieval.
3.5.7. Session ID allocation for tracking traffic Copy linkLink copied to clipboard!
The proxy now assigns a session ID that links downstream and upstream connections, improving traceability in logs.
3.5.8. Operator discovers plain bootstrap address from Strimzi Kafka Copy linkLink copied to clipboard!
The operator can now automatically detect the plain listener bootstrap address from a Strimzi Kafka resource.
3.5.9. Metrics for active connections Copy linkLink copied to clipboard!
New metrics report the number of active downstream/upstream connections handled by the proxy.
3.5.10. Duration metrics for back pressure Copy linkLink copied to clipboard!
New metrics report how long the proxy applies back pressure on client connections.
3.5.11. Fail-fast on unknown configuration properties Copy linkLink copied to clipboard!
The proxy now rejects configurations that contain unexpected or misspelled fields.
3.5.12. Hostname/IP information added to virtual cluster load balancer status Copy linkLink copied to clipboard!
The operator now reports more detailed load balancer status information for virtual Kafka clusters.
3.6. Console Copy linkLink copied to clipboard!
A summary of new features and enhancements for Streams for Apache Kafka Console.
3.6.1. Kafka Connect integration (technology preview) Copy linkLink copied to clipboard!
As a technology preview, the console adds configuration and display options for Kafka Connect and its connectors. Connect clusters can be associated with one or more Kafka clusters, allowing users to view connected clusters, connectors, and their configurations.
3.6.2. Auto-configuration of KafkaUser resources for mutual TLS authentication Copy linkLink copied to clipboard!
The console now supports automatic configuration of KafkaUser custom resources when connecting to Kafka clusters secured with mutual TLS authentication.
3.6.3. Configurable OpenID Connect scopes Copy linkLink copied to clipboard!
OpenID Connect (OIDC) scopes are now configurable. The groups scope is no longer a fixed requirement for the identity provider.
3.6.4. Regular expression support for security rules Copy linkLink copied to clipboard!
Security rule configurations now support the use of regular expressions in resourceNames definitions.
3.6.5. Enhanced platform and version display Copy linkLink copied to clipboard!
The console now displays the actual platform and version (for example, OpenShift 4.18.5) on the home page. An About modal provides application version details to assist with support.
3.6.6. Automatic session termination on sign-out Copy linkLink copied to clipboard!
When a user signs out, the console automatically terminates the session with the identity provider if an end_session_endpoint is available through OIDC discovery.
3.6.7. Authorization-based UI controls Copy linkLink copied to clipboard!
Console UI controls are now automatically enabled or disabled based on user authorization configurations.
3.6.8. Light, dark, and auto color themes Copy linkLink copied to clipboard!
The console supports light, dark, and automatic color themes. With the auto option, the console inherits the host operating system’s color preference.
3.6.9. Topic metrics from Metrics Reporter Copy linkLink copied to clipboard!
The console now supports topic metrics emitted by the Streams for Apache Kafka Metrics Reporter.
3.6.10. Consistent date and time formatting Copy linkLink copied to clipboard!
All dates in the console are displayed in ISO format, using the user’s local time zone except where UTC times are explicitly shown in the topic message browser.
3.6.11. Improved display of Kafka version information Copy linkLink copied to clipboard!
When reconciliation is paused and the Kafka version in .status is unavailable, the console now displays the desired Kafka version.
3.6.12. Session handling improvements for expired tokens Copy linkLink copied to clipboard!
If a user’s OAuth2 or OIDC token expires and cannot be refreshed, the console now automatically signs the user out and redirects them to the identity provider.