7.5. 配置功能门
AMQ Streams 操作器支持 功能门,以启用或禁用某些功能和功能。启用功能门更改了相关 Operator 的行为,并为 AMQ Streams 部署引入该功能。
功能门的默认状态是 enabled 或 disabled。
要修改功能门的默认状态,请在 Operator 配置中使用 STRIMZI_FEATURE_GATES
环境变量。您可以使用这个单一环境变量修改多个功能门。指定以逗号分隔的功能门名称和前缀列表。+
前缀可启用功能门,而 -
前缀会禁用它。
启用 FeatureGate1
并禁用 FeatureGate2
的功能门配置示例
env: - name: STRIMZI_FEATURE_GATES value: +FeatureGate1,-FeatureGate2
env:
- name: STRIMZI_FEATURE_GATES
value: +FeatureGate1,-FeatureGate2
7.5.1. ControlPlaneListener 功能门 复制链接链接已复制到粘贴板!
ControlPlaneListener
功能门已移到 GA,这意味着它现已永久启用且无法禁用。在启用了 ControlPlaneListener
的情况下,Kafka 控制器和代理之间的连接在端口 9090 上使用 一个内部 control plane 侦听器。在代理之间复制数据,以及来自 AMQ Streams operator 的内部连接、Cruise Control 或 Kafka Exporter 在端口 9091 上使用 复制监听程序。
永久启用 ControlPlaneListener
功能门后,现在可以在 AMQ Streams 1.7 及更早版本和 AMQ Streams 2.3 及更新版本之间直接升级或降级。您必须通过其中一个 AMQ Streams 版本进行升级或降级。
7.5.2. ServiceAccountPatching 功能门 复制链接链接已复制到粘贴板!
ServiceAccountPatching
功能门已移到 GA,这意味着它现已永久启用且无法禁用。启用 ServiceAccountPatching
后,Cluster Operator 始终协调服务帐户并根据需要更新它们。例如,当您使用自定义资源的 template
属性更改服务帐户标签或注解时,Operator 会在现有服务帐户资源中自动更新它们。
7.5.3. UseStrimziPodSets 功能门 复制链接链接已复制到粘贴板!
UseStrimziPodSets
功能门的默认状态 已启用。
UseStrimziPodSets
功能门引入了用于管理名为 StrimziPodSet
的 pod 的资源。启用功能门后,会使用这个资源而不是 StatefulSets。AMQ Streams 处理 pod 的创建和管理,而不是 OpenShift。使用 StrimziPodSets 而不是 StatefulSets 可提供更多对功能的控制。
禁用此功能门后,AMQ Streams 依赖于 StatefulSets 为 ZooKeeper 和 Kafka 集群创建和管理 pod。AMQ Streams 创建 StatefulSet,OpenShift 会根据 StatefulSet 定义创建 pod。删除 Pod 后,OpenShift 会负责重新创建它。StatefulSets 的使用有以下限制:
- Pod 始终根据其索引号创建或删除
- StatefulSet 中的所有 pod 需要有类似的配置
- 在 StatefulSet 中更改 Pod 的存储配置复杂
禁用 UseStrimziPodSets 功能门
要禁用 UseStrimziPodSets
功能门,请在 Cluster Operator 配置中的 STRIMZI_FEATURE_GATES
环境变量中指定 -UseStrimziPodSets
。
在将 UseStrimziPodSets
功能门降级到 AMQ Streams 2.0 及更早的版本时,必须禁用使用StrimziPodSets 功能门。
7.5.4. (Preview) UseKRaft 功能门 复制链接链接已复制到粘贴板!
UseKRaft
功能门的默认状态为 disabled。
UseKRaft
功能门在 KRaft (Kafka Raft 元数据)模式下部署 Kafka 集群,而无需 ZooKeeper。此功能门目前仅用于开发和测试。
KRaft 模式还无法在 Apache Kafka 或 AMQ Streams 中提供。
启用 UseKRaft
功能门时,Kafka 集群会在没有 ZooKeeper 的情况下部署。Kafka 自定义资源中的 .spec.zookeeper
属性将被忽略,但仍然需要存在。UseKRaft
功能门提供了一个 API,用于配置 Kafka 集群节点及其角色。API 仍在开发中,预期在 KRaft 模式生产就绪前更改。
目前,AMQ Streams 中的 KRaft 模式有以下主要限制:
- 不支持从 ZooKeeper 移动到 KRaft 集群或其他方法。
- 不支持升级和降级 Apache Kafka 版本或 AMQ Streams operator。用户可能需要删除集群,升级 Operator 并部署一个新的 Kafka 集群。
-
不支持主题 Operator。
spec.entityOperator.topicOperator
属性需要从Kafka
自定义资源中删除。 - 不支持 SCRAM-SHA-512 验证。
-
不支持 JBOD 存储。可以使用
type: jbod
存储,但 JBOD 数组只能包含一个磁盘。 - 存活度和就绪度探测被禁用。
-
所有 Kafka 节点都有
controller
和broker
KRaft 角色。不支持具有独立controller
和broker
节点的 Kafka 集群。
启用 UseStrimziPodSets 功能门
要启用 UseKRaft
功能门,请在 Cluster Operator 配置中的 STRIMZI_FEATURE_GATES
环境变量中指定 +UseKRaft
。
UseKRaft
功能门取决于 UseStrimziPodSets
功能门。启用 UseKRaft
功能门时,请确保也启用了 USeStrimziPodSets
功能门。
7.5.5. 功能门发行版本 复制链接链接已复制到粘贴板!
功能门的成熟度有三个阶段:
- alpha - 通常默认禁用
- beta - 通常默认启用
- GA (GA)- 通常总是启用
Alpha 阶段功能可能是实验性或不稳定,可能随时更改,或不充分测试用于生产用途。测试良好的测试阶段功能已充分测试,其功能不太可能改变。GA 阶段功能稳定,不应在以后改变。如果 alpha 和 beta 阶段功能没有证明有用,则会移除它们。
-
ControlPlaneListener
功能门在 AMQ Streams 2.3 中进入 GA。现在它被永久启用且无法禁用。 -
ServiceAccountPatching
功能门在 AMQ Streams 2.3 中进入 GA。现在它被永久启用且无法禁用。 -
UseStrimziPodSets
功能门移至 AMQ Streams 2.3 中的 beta 阶段。 -
UseKRaft
功能门仅适用于开发,目前没有计划迁移至 beta 阶段的版本。
功能门在到达 GA 时可能会被删除。这意味着该功能已合并到 AMQ Streams 核心功能中,且无法禁用。
功能门 | alpha | beta | GA |
---|---|---|---|
| 1.8 | 2.0 | 2.3 |
| 1.8 | 2.0 | 2.3 |
| 2.1 | 2.3 | - |
| 2.2 | - | - |
如果启用了功能门,您可能需要在从特定的 AMQ Streams 版本升级或降级前禁用它。下表显示了在升级或降级 AMQ Streams 版本时需要禁用哪些功能门。
禁用功能门 | 从 AMQ Streams 版本升级 | 降级到 AMQ Streams 版本 |
---|---|---|
| 1.7 及更早版本 | 1.7 及更早版本 |
| - | 2.0 及更早版本 |