From 458049c065e65b811225bb0a42fc7975267fda8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kr=C3=A1l?= <53821852+im-konge@users.noreply.github.com> Date: Fri, 18 Oct 2024 09:47:59 +0200 Subject: [PATCH] Add proposal for archiving Canary (#134) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add proposal for archiving Canary Signed-off-by: Lukas Kral * Jakub's comment Signed-off-by: Lukas Kral * Apply suggestions from Paul Co-authored-by: PaulRMellor <47596553+PaulRMellor@users.noreply.github.com> Signed-off-by: Lukáš Král <53821852+im-konge@users.noreply.github.com> * Jakub's comments Signed-off-by: Lukas Kral * add canary proposal to README Signed-off-by: Lukas Kral --------- Signed-off-by: Lukas Kral Signed-off-by: Lukáš Král <53821852+im-konge@users.noreply.github.com> Co-authored-by: PaulRMellor <47596553+PaulRMellor@users.noreply.github.com> --- 086-archive-canary.md | 92 ++++++++++++++++++++++ README.md | 175 +++++++++++++++++++++--------------------- 2 files changed, 180 insertions(+), 87 deletions(-) create mode 100644 086-archive-canary.md diff --git a/086-archive-canary.md b/086-archive-canary.md new file mode 100644 index 00000000..e0538084 --- /dev/null +++ b/086-archive-canary.md @@ -0,0 +1,92 @@ +# Archive Canary project + +This proposal is about archiving the [Canary project](https://github.com/strimzi/strimzi-canary). + +## Current situation + +The Canary project, written in Go programming language, is a component for monitoring a Kafka cluster. +It provides functionality to periodically check the availability of the Kafka cluster during normal run, upgrades, downgrades, and rolling updates. +That is done by connection check to the cluster, but also producer and consumer, that periodically do the message transmission between Kafka cluster and Canary. +The Canary then provides Prometheus metrics and alerts for users or cluster admins to react on the Kafka cluster issues. + +## Motivation + +The Canary, as mentioned, is written in Go, however the Strimzi organization (and the engineers working on the projects inside this organization) is focused on using the Java programming language. +This means the team is missing the necessary expertise in Go in order to solve various issues in Canary. +Based on the previous proposal from PR [#58](https://github.com/strimzi/proposals/pull/58), the Sarama Kafka client library lacks features that are available in the official +Java Kafka client library - and the Sarama library is not the official Kafka library in comparison to the Java one. +Additionally, there are multiple [issues created in the Canary project](https://github.com/strimzi/strimzi-canary/issues) that have remained with comment or unresolved for a significant amount of time. +The project's dependencies haven't been updated for two years now, meaning that there can be a lot of CVEs, unresolved issues with newer Kafka versions, and so on. +The inactivity of the project shows that we do not have the time to continue developing Canary, which is also the main reason for creating this proposal. + +Because of these issues, I'm proposing to archive the Canary project. + +## Canary in Java + +After few releases of Canary we realized that there is not enough expertise for the Go language and Sarama Kafka client doesn't provide functionality we need, +so the [PR proposing to move Canary to Java](https://github.com/strimzi/proposals/pull/58) was created. +The proposal contained all issues with the current implementation together with proposed implementation and changes for the Canary in Java. +In parallel with the proposal, the POC was written in Java and is available in the [im-konge/canary-java](https://github.com/im-konge/canary-java) repository. +However, during the implementation process, we found out that few things are not possible using Java Kafka clients (for example the connection check that was one of the main features of Canary) and that +metrics related to Sarama client are not relevant anymore. +Changes like this would break the backwards compatibility, meaning that it would not be 1:1 copy of the Canary in Go. + +Other than that, we thought about changing the metrics provided by Canary to be more insightful, but we were unable to reach a consensus on the specific metrics to include. +We had discussions with community users about how the Canary can be more useful to them, but the users ended up writing their own Canary-like tool +with functionality useful to them. + +Because we didn't move forward with the proposal and agreement on the future of the Canary, after more than one year from the moment the proposal was created, we decided to close the +proposal, and we agreed to archive the project on [community meeting on May 30th 2024](https://youtu.be/UpStul__uCw?si=GTA5edXJEnGgxP1a). +If the community finds Canary valuable, provides feedback on how to improve its metrics and functionality, and we have sufficient capacity and resources, we will consider proposing a new project to rewrite Canary in Java. + +## Proposal + +After this proposal is approved, we should: +- archive the Canary project +- remove the Canary install files from Strimzi operators repository + - now from the `/packaging/install` folder + - as part of the next Strimzi release, the installation files will be removed from the `/install` folder +- delete the mentions about the Canary project from the documentation and automation files (Makefiles) +- inform users about archiving the project + +If the community: + +- finds Canary useful +- provides additional information about how to improve its metrics or functionality +- and we have the capacity to maintain the project + +we can consider proposing a new project to rewrite Canary in Java. + +## Affected/not affected projects + +The only affected project is the [Canary](https://github.com/strimzi/strimzi-canary) that should be archived. +In the Strimzi operators repository, the only affected parts are the [installation files](https://github.com/strimzi/strimzi-kafka-operator/tree/main/install/canary) and +[in development installation files](https://github.com/strimzi/strimzi-kafka-operator/tree/main/packaging/install/canary) that should be deleted by this proposal. + +## Compatibility + +The backwards compatibility is not relevant in this case, as the project will be archived and there is no other solution currently that would replace it. + +## Rejected alternatives + +### Maintaining Canary in Go and providing additional functionality + +One of the rejected alternative was to keep updating the Canary in Go and add more functionality to it. +This was discussed and rejected because of: +- lack of Go experts in the Strimzi organization +- resources - it would take a lot of time to learn Go and properly testing every new change without knowing how it will work +- missing functionality in the Sarama Kafka client + +### Maintaining Canary for dependency updates + +Another alternative was to keep Canary project and updating the dependencies. +Some of the dependency updates can be without breaking changes, but from time to time there are changes in the dependencies that requires additional +changes to the code, which brings us to the same situation as the previous alternative - someone would need to do the changes to the code, +test it properly and then release it. +Because of these issues, we decided to reject this alternative. + +### Rewrite Canary in Java + +A final alternative was to rewrite Canary in Java, but as was mentioned in the [Canary in Java](#canary-in-java), it would not be the same Canary as in Go, +and we didn't agree on how the new metrics of the Canary in Java (and the overall implementation) should look like. +Because of this, we decided to reject this alternative. \ No newline at end of file diff --git a/README.md b/README.md index f1480f21..8527a9b6 100644 --- a/README.md +++ b/README.md @@ -7,93 +7,94 @@ This repository lists proposals for the Strimzi project. A template for new proposals can be found [here](./000-template.md). -| # | Title | -| :-: |:----------------------------------------------------------------------| -| 85 | [Configure environment variables in all containers from Secrets or Config Maps](./085-configure-env-vars-based-on-secrets-or-configmaps.md) | -| 84 | [Templating `host` and `advertisedHost` fields in the `Kafka` custom resource](./084-templating-host-and-advertisedHost-fields.md) | -| 83 | [MirrorMaker Connector Offsets Support](./083-mm2-connector-offsets-support.md) | -| 82 | [Moving data between two JBOD disks using Cruise Control](./082-moving-data-between-two-jbod-disks-using-cruise-control.md) | -| 81 | [Unregistration of KRaft nodes](./081-unregistration-of-KRaft-nodes.md) | -| 80 | [Deprecation and removal of Storage overrides](./080-deprecation-and-removal-of-storage-overrides.md) | -| 79 | [Removal of Mirror Maker 1](./079-removal-of-mirror-maker-1.md) | -| 78 | [Auto-rebalancing on cluster scaling](./078-auto-rebalancing-cluster-scaling.md) | -| 77 | [Support for Apache Kafka 4.0](./077-support-for-kafka-4.0.md) | -| 76 | [Connector Offsets Support](./076-connector-offsets-support.md) | -| 75 | [Support of additional volumes](./075-additional-volumes-support.md) | -| 74 | [Extend Feature Gates to all Strimzi operators](./074-extend-feature-gates-to-all-operators.md) | -| 73 | [Improve handling of CA renewals and replacements in operands based on the Kafka clients](./073-improve-handling-of-CA-renewals-and-replacements-in-client-based-operands.md) | -| 72 | [Enhance KafkaBridge resource with consumer inactivity timeout and HTTP consumer/producer parts enablement](./072-kafkabrige-consumer-producer.md) | -| 71 | [Deprecate and remove OpenAPI v2 (Swagger) support on the Strimzi HTTP bridge](./071-deprecate-bridge-openapi-2.md) | -| 70 | [Don't fail reconciliation when Manual Rolling Update fails](./070-dont-fail-reconciliation-in-manual-rolling-update.md) | -| 69 | [Introducing Performance Testing](./069-performance-testing.md) | -| 68 | [Quotas management](./068-quotas-management.md) | -| 67 | [JBOD support in KRaft mode](./067-kraft-jbod-support.md) | -| 66 | [Topic replication factor change](./066-topic-replication-factor-change.md) | -| 65 | [Support custom tiered storage plugins](./065-support-tiered-storage.md) | -| 64 | [Prometheus Metrics Reporter](./064-prometheus-metrics-reporter.md) | -| 63 | [Pod Disruption Budget Generation Environment Variable](./063-pdb-generation-environment-variable.md) | -| 62 | [Promotion of the `UseKRaft` feature gate](./062-UseKRaft-feature-gate-promotion.md) | -| 61 | [KRaft upgrades and downgrades](./061-kraft-upgrades-and-downgrades.md) | -| 60 | [Kafka Roller KRaft Support](./060-kafka-roller-kraft.md) | -| 59 | [ZooKeeper to KRaft migration](./059-zk-kraft-migration.md) | -| 58 | [Deprecate and remove EnvVarConfigProvider](./058-deprecate-and-remove-envvar-config-provider.md) | -| 57 | [Allow running ZooKeeper and KRaft based clusters in parallel](./057-run-zk-kraft-clusters-parallel.md) | -| 56 | [Add ability to create Cruise Control REST API users](./056-cruise-control-api-users.md) | -| 55 | [Infinite auto-restart of Apache Kafka connectors](./055-infinite-auto-restart-of-Kafka-connectors.md) | -| 54 | [Support stopping Kafka Connect connectors](./054-stopping-kafka-connect-connectors.md) | -| 53 | [Record Reconciled Version in Kafka Custom Resource status](./053-record-reconciled-versions.md) | -| 52 | [Kubernetes Server Side Apply](./052-k8s-server-side-apply.md) | -| 51 | [Unidirectional Topic Operator](./051-unidirectional-topic-operator.md) | -| 50 | [Kafka Node Pools](./050-Kafka-Node-Pools.md) | -| 49 | [Prevent broker scale down if it contains partition replicas](./049-prevent-broker-scale-down-if-it-contains-partition-replicas.md) | -| 48 | [Avoid broker restart when in log recovery state](./048-avoid-broker-restarts-when-in-recovery.md) | -| 47 | [Cluster Wide Volume Usage Quota Management](./047-cluster-wide-volume-usage-quota-management.md) | -| 46 | [KRaft liveness and readiness probs](./046-kraft-liveness-readiness.md) | -| 45 | [Stable identities for Kafka Connect worker nodes](./045-Stable-identities-for-Kafka-Connect-worker-nodes.md) | -| 44 | [StrimziPodSets graduation](./044-StrimziPodSets-graduation.md) | -| 43 | [Deprecate and remove JMX Trans](./043-deprecate-and-remove-jmxtrans.md) | -| 42 | [Remove AMQP 1.0 support from the Strimzi bridge](./042-remove-bridge-amqp-support.md) | -| 41 | [User Operator: Configurable exclusion of labels](./041-user-operator-configurable-exclusion-of-labels.md) | -| 40 | [Refactor KafkaConfig files in Strimzi Client Examples](./040-refactor-client-examples.md) | -| 39 | [Reduce Strimzi test-client's images](./039-reduce-test-clients-images.md) | -| 38 | [Auto-approval mechanism for optimization proposals](./038-optimization-proposal-autoapproval.md) | -| 37 | [Pluggable Pod Security Profiles](./037-pluggable-pod-security-profiles.md) | -| 36 | [KRaft support: ZooKeeper-less Kafka](./036-kraft-mode.md) | -| 35 | [Extending the `KafkaRebalance` resource with rebalance types to help scaling the Apache Kafka cluster](./035-rebalance-types-scaling-brokers.md) | -| 34 | [Deprecate and remove MirrorMaker 2 extensions](./034-deprecate-and-remove-mirror-maker-2-extensions.md) | -| 33 | [Service Binding](./033-service-binding.md) | -| 32 | [Custom Authentication in Kafka Brokers ](./032-custom_authentication_in_kafka_brokers.md) | -| 31 | [StatefulSet Removal](./031-statefulset-removal.md) | -| 30 | [EnvVar Configuration Provider for Apache Kafka](./030-env-var-config-provider.md) | -| 29 | [Adopt the Drain Cleaner utility](./029-adopt-the-drain-cleaner-utility.md) | -| 28 | [Network Policy Generation Environment Variable](./028-network-policy-generation-environment-variable.md) | -| 27 | [Kubernetes Configuration Provider for Apache Kafka](./027-kubernetes-config-provider.md) | -| 26 | [Service Account patching](./026-service-account-patching.md) | -| 25 | [Control Plane Listener](./025-control-plain-listener.md) | -| 24 | [Adopt the Kafka Static Quota plugin](./024-adopt-the-kafka-static-quota-plugin.md) | -| 23 | [Using Red Hat Universal Base Image 8 as the new Strimzi base image](./023-using-ubi8-as-base-image.md) | -| 22 | [Feature Gates](./022-feature-gates.md) | -| 21 | [Special repository for ST clients](./021-special-repository-for-st-clients-based-on-example-clients.md) | -| 20 | [Rename the default branch of Strimzi GitHub repositories](./020-rename-default-branch-of-strimzi-github-repositories.md) | -| 19 | [Restructure the installation files](./019-restruture-the-installation-files.md) | -| 18 | [Use the admin-server REST API in strimzi-ui](./018-rest-admin-api.md) | -| 17 | [Proxy-Based Kafka Per-Topic Encryption](./017-kafka-topic-encryption.md) | -| 16 | [Modularizing Strimzi UI](./016-modularizing-strimzi-ui.md) | -| 15 | [Kafka Connect build](./015-kafka-connect-build.md) | -| 14 | [Move Container Images to Quay.io](./014-move-docker-images-to-quay.io.md) | -| 13 | [Strimzi canary](./013-kafka-canary.md) | -| 12 | [Create an Admin Server](./012-admin-server.md) | -| 11 | [Strimzi UI](./011-strimzi-ui.md) | -| 10 | [Auth additions for UI and Admin Server](./010-ui-and-admin-server-security.md) | -| 9 | [Roadmap to using the CRD v1 API](./009-crd-v1-roadmap.md) | -| 8 | [TLS encrypting the Kafka Connect REST API](./008-tls-encrypt-the-kafka-connect-rest-api.md) | -| 7 | [Restarting Kafka Connect connectors and tasks](./007-restarting-kafka-connect-connectors-and-tasks.md) | -| 6 | [Design Documentation](./006-design-docs.md) | -| 5 | [Improving configurability of Kafka listeners](./005-improving-configurability-of-kafka-listeners.md) | -| 4 | [GitHub repository restructuring](./004-github-repository-restructuring.md) | -| 3 | [Remove deprecated Topic Operator deployment in Kafka CRD](./003-remove-deprecated-topic-operator-from-kafka-crd.md) | -| 2 | [Documentation improvements](./002-documentation-improvements.md) | -| 1 | [Move Strimzi Kafka operators to Java 11](./001-move-strimzi-kafka-operators-to-java-11.md) | +| # | Title | +|:--:|:----------------------------------------------------------------------| +| 86 | [Archive Canary project](./086-archive-canary.md) | +| 85 | [Configure environment variables in all containers from Secrets or Config Maps](./085-configure-env-vars-based-on-secrets-or-configmaps.md) | +| 84 | [Templating `host` and `advertisedHost` fields in the `Kafka` custom resource](./084-templating-host-and-advertisedHost-fields.md) | +| 83 | [MirrorMaker Connector Offsets Support](./083-mm2-connector-offsets-support.md) | +| 82 | [Moving data between two JBOD disks using Cruise Control](./082-moving-data-between-two-jbod-disks-using-cruise-control.md) | +| 81 | [Unregistration of KRaft nodes](./081-unregistration-of-KRaft-nodes.md) | +| 80 | [Deprecation and removal of Storage overrides](./080-deprecation-and-removal-of-storage-overrides.md) | +| 79 | [Removal of Mirror Maker 1](./079-removal-of-mirror-maker-1.md) | +| 78 | [Auto-rebalancing on cluster scaling](./078-auto-rebalancing-cluster-scaling.md) | +| 77 | [Support for Apache Kafka 4.0](./077-support-for-kafka-4.0.md) | +| 76 | [Connector Offsets Support](./076-connector-offsets-support.md) | +| 75 | [Support of additional volumes](./075-additional-volumes-support.md) | +| 74 | [Extend Feature Gates to all Strimzi operators](./074-extend-feature-gates-to-all-operators.md) | +| 73 | [Improve handling of CA renewals and replacements in operands based on the Kafka clients](./073-improve-handling-of-CA-renewals-and-replacements-in-client-based-operands.md) | +| 72 | [Enhance KafkaBridge resource with consumer inactivity timeout and HTTP consumer/producer parts enablement](./072-kafkabrige-consumer-producer.md) | +| 71 | [Deprecate and remove OpenAPI v2 (Swagger) support on the Strimzi HTTP bridge](./071-deprecate-bridge-openapi-2.md) | +| 70 | [Don't fail reconciliation when Manual Rolling Update fails](./070-dont-fail-reconciliation-in-manual-rolling-update.md) | +| 69 | [Introducing Performance Testing](./069-performance-testing.md) | +| 68 | [Quotas management](./068-quotas-management.md) | +| 67 | [JBOD support in KRaft mode](./067-kraft-jbod-support.md) | +| 66 | [Topic replication factor change](./066-topic-replication-factor-change.md) | +| 65 | [Support custom tiered storage plugins](./065-support-tiered-storage.md) | +| 64 | [Prometheus Metrics Reporter](./064-prometheus-metrics-reporter.md) | +| 63 | [Pod Disruption Budget Generation Environment Variable](./063-pdb-generation-environment-variable.md) | +| 62 | [Promotion of the `UseKRaft` feature gate](./062-UseKRaft-feature-gate-promotion.md) | +| 61 | [KRaft upgrades and downgrades](./061-kraft-upgrades-and-downgrades.md) | +| 60 | [Kafka Roller KRaft Support](./060-kafka-roller-kraft.md) | +| 59 | [ZooKeeper to KRaft migration](./059-zk-kraft-migration.md) | +| 58 | [Deprecate and remove EnvVarConfigProvider](./058-deprecate-and-remove-envvar-config-provider.md) | +| 57 | [Allow running ZooKeeper and KRaft based clusters in parallel](./057-run-zk-kraft-clusters-parallel.md) | +| 56 | [Add ability to create Cruise Control REST API users](./056-cruise-control-api-users.md) | +| 55 | [Infinite auto-restart of Apache Kafka connectors](./055-infinite-auto-restart-of-Kafka-connectors.md) | +| 54 | [Support stopping Kafka Connect connectors](./054-stopping-kafka-connect-connectors.md) | +| 53 | [Record Reconciled Version in Kafka Custom Resource status](./053-record-reconciled-versions.md) | +| 52 | [Kubernetes Server Side Apply](./052-k8s-server-side-apply.md) | +| 51 | [Unidirectional Topic Operator](./051-unidirectional-topic-operator.md) | +| 50 | [Kafka Node Pools](./050-Kafka-Node-Pools.md) | +| 49 | [Prevent broker scale down if it contains partition replicas](./049-prevent-broker-scale-down-if-it-contains-partition-replicas.md) | +| 48 | [Avoid broker restart when in log recovery state](./048-avoid-broker-restarts-when-in-recovery.md) | +| 47 | [Cluster Wide Volume Usage Quota Management](./047-cluster-wide-volume-usage-quota-management.md) | +| 46 | [KRaft liveness and readiness probs](./046-kraft-liveness-readiness.md) | +| 45 | [Stable identities for Kafka Connect worker nodes](./045-Stable-identities-for-Kafka-Connect-worker-nodes.md) | +| 44 | [StrimziPodSets graduation](./044-StrimziPodSets-graduation.md) | +| 43 | [Deprecate and remove JMX Trans](./043-deprecate-and-remove-jmxtrans.md) | +| 42 | [Remove AMQP 1.0 support from the Strimzi bridge](./042-remove-bridge-amqp-support.md) | +| 41 | [User Operator: Configurable exclusion of labels](./041-user-operator-configurable-exclusion-of-labels.md) | +| 40 | [Refactor KafkaConfig files in Strimzi Client Examples](./040-refactor-client-examples.md) | +| 39 | [Reduce Strimzi test-client's images](./039-reduce-test-clients-images.md) | +| 38 | [Auto-approval mechanism for optimization proposals](./038-optimization-proposal-autoapproval.md) | +| 37 | [Pluggable Pod Security Profiles](./037-pluggable-pod-security-profiles.md) | +| 36 | [KRaft support: ZooKeeper-less Kafka](./036-kraft-mode.md) | +| 35 | [Extending the `KafkaRebalance` resource with rebalance types to help scaling the Apache Kafka cluster](./035-rebalance-types-scaling-brokers.md) | +| 34 | [Deprecate and remove MirrorMaker 2 extensions](./034-deprecate-and-remove-mirror-maker-2-extensions.md) | +| 33 | [Service Binding](./033-service-binding.md) | +| 32 | [Custom Authentication in Kafka Brokers ](./032-custom_authentication_in_kafka_brokers.md) | +| 31 | [StatefulSet Removal](./031-statefulset-removal.md) | +| 30 | [EnvVar Configuration Provider for Apache Kafka](./030-env-var-config-provider.md) | +| 29 | [Adopt the Drain Cleaner utility](./029-adopt-the-drain-cleaner-utility.md) | +| 28 | [Network Policy Generation Environment Variable](./028-network-policy-generation-environment-variable.md) | +| 27 | [Kubernetes Configuration Provider for Apache Kafka](./027-kubernetes-config-provider.md) | +| 26 | [Service Account patching](./026-service-account-patching.md) | +| 25 | [Control Plane Listener](./025-control-plain-listener.md) | +| 24 | [Adopt the Kafka Static Quota plugin](./024-adopt-the-kafka-static-quota-plugin.md) | +| 23 | [Using Red Hat Universal Base Image 8 as the new Strimzi base image](./023-using-ubi8-as-base-image.md) | +| 22 | [Feature Gates](./022-feature-gates.md) | +| 21 | [Special repository for ST clients](./021-special-repository-for-st-clients-based-on-example-clients.md) | +| 20 | [Rename the default branch of Strimzi GitHub repositories](./020-rename-default-branch-of-strimzi-github-repositories.md) | +| 19 | [Restructure the installation files](./019-restruture-the-installation-files.md) | +| 18 | [Use the admin-server REST API in strimzi-ui](./018-rest-admin-api.md) | +| 17 | [Proxy-Based Kafka Per-Topic Encryption](./017-kafka-topic-encryption.md) | +| 16 | [Modularizing Strimzi UI](./016-modularizing-strimzi-ui.md) | +| 15 | [Kafka Connect build](./015-kafka-connect-build.md) | +| 14 | [Move Container Images to Quay.io](./014-move-docker-images-to-quay.io.md) | +| 13 | [Strimzi canary](./013-kafka-canary.md) | +| 12 | [Create an Admin Server](./012-admin-server.md) | +| 11 | [Strimzi UI](./011-strimzi-ui.md) | +| 10 | [Auth additions for UI and Admin Server](./010-ui-and-admin-server-security.md) | +| 9 | [Roadmap to using the CRD v1 API](./009-crd-v1-roadmap.md) | +| 8 | [TLS encrypting the Kafka Connect REST API](./008-tls-encrypt-the-kafka-connect-rest-api.md) | +| 7 | [Restarting Kafka Connect connectors and tasks](./007-restarting-kafka-connect-connectors-and-tasks.md) | +| 6 | [Design Documentation](./006-design-docs.md) | +| 5 | [Improving configurability of Kafka listeners](./005-improving-configurability-of-kafka-listeners.md) | +| 4 | [GitHub repository restructuring](./004-github-repository-restructuring.md) | +| 3 | [Remove deprecated Topic Operator deployment in Kafka CRD](./003-remove-deprecated-topic-operator-from-kafka-crd.md) | +| 2 | [Documentation improvements](./002-documentation-improvements.md) | +| 1 | [Move Strimzi Kafka operators to Java 11](./001-move-strimzi-kafka-operators-to-java-11.md) | ---