Skip to content


Choose a tag to compare
@scholzj scholzj released this 16 Mar 21:41

Main Changes since 0.21.x

  • Add v1beta2 version for all resources. v1beta2 removes all deprecated fields.
  • Add annotations that enable the operator to restart Kafka Connect connectors or tasks. The annotations can be applied to the KafkaConnector and the KafkaMirrorMaker2 custom resources.
  • Add additional configuration options for the Kaniko executor used by the Kafka Connect Build on Kubernetes
  • Add support for JMX options configuration of all Kafka Connect (KC, KC2SI, MM2)
  • Update Strimzi Kafka OAuth to version 0.7 and add support for new features:
    • OAuth authentication over SASL PLAIN mechanism
    • Checking token audience
    • Validating tokens using JSONPath filter queries to perform custom checks
  • Fix Cruise Control crash loop when updating container configurations
  • Configure external logging ConfigMap name and key.
  • Add support for configuring labels and annotations in ClusterRoleBindings created as part of Kafka and Kafka Connect clusters
  • Add support for Ingress v1 in Kubernetes 1.19 and newer
  • Add support for Kafka 2.6.1
  • List topics used by a Kafka Connect connector in the .status section of the KafkaConnector custom resource
  • Bump Cruise Control to v2.5.37 for Kafka 2.7 support. Note this new version of Cruise Control uses Log4j 2 and is supported by dynamic logging configuration (where logging properties are defined in a ConfigMap). However, existing Log4j configurations must be updated to Log4j 2 configurations.
  • Support pausing reconciliation of CR with annotation

All changes can be found under the 0.22.0 milestone.

CRD Upgrades


This release introduces new API version v1beta2 to all Strimzi custom resources. This is a preparation for migration to apiextensions/v1 which is needed because Kubernetes 1.22 will remove support for apiextensions/v1beta1. Migration to v1beta2 needs to be completed for all Strimzi CRDs and CRs after the upgrade to 0.22 is done and before upgrading to Strimzi 0.23 which will support only Strimzi v1beta2 APIs and apiextensions/v1 CRDs.

For more details about the CRD upgrades, see the documentation.

Deprecations and removals

  • In the past, when no Ingress class was specified in the Ingress-type listener in the Kafka custom resource, the annotation was automatically set to nginx. Because of the support for the new
    IngressClass resource and the new ingressClassName field in the Ingress resource, the default value will not be set
    anymore. Please use the class field in .spec.kafka.listeners[].configuration to specify the class name.
  • The KafkaConnectS2I custom resource is deprecated and will be removed in the future. You can use the new KafkaConnect build feature instead.
  • Removed support for Helm2 charts as that version is now unsupported. There is no longer the need for separate helm2 and helm3 binaries, only helm (version 3) is required.
  • The following annotations are deprecated for a long time and will be removed in 0.23.0:
    • (used internally only - replaced by
    • (used internally only - replaced by
    • (use instead)
    • (use instead)
  • External logging configuration has changed. is deprecated. Moved to Key in the ConfigMap is configurable via spec.logging.valueFrom.configMapKeyRef.key.
    • from
      type: external
      name: my-config-map
    • to
      type: external
          name: my-config-map
          key: my-key
  • Existing Cruise Control logging configurations must be updated from Log4j syntax to Log4j 2 syntax.
    • For existing inline configurations, replace the cruisecontrol.root.logger property with rootLogger.level.
    • For existing external configurations, replace the existing configuration with a new configuration file named using log4j 2 syntax.

Upgrading from Strimzi 0.21

See the documentation for upgrade instructions.

Known issues

  • On Kubernetes 1.20 and newer, when user configures the Topic or User Operators in the Kafka CR to watch different namespace than the one in which they run (using the watchedNamespace option), the Entity Operator pod will not start properly because of missing RBAC. This will be fixed in 0.22.1 (expected next week). If needed, the required Role and RoleBinding for the Entity Operator can be also created manually as a workaround.