OpenShift 上的 AMQ Streams 2.5 发行注记
OpenShift Container Platform 中 AMQ Streams 发行版本的主要新功能及变化信息
摘要
第 1 章 名称通知会改为 Apache Kafka 的 Streams 复制链接链接已复制到粘贴板!
AMQ Streams 被重命名为 Apache Kafka 的流,作为品牌工作的一部分。这个变化旨在提高红帽产品用于 Apache Kafka 的客户了解。在这个转换期间,您可能会遇到对旧名称 AMQ Streams 的引用。我们积极努力更新文档、资源和媒体,以反映新的名称。
第 2 章 AMQ Streams 2.5 Long Term Support 复制链接链接已复制到粘贴板!
AMQ Streams 2.5 是 AMQ Streams 的 Long Term Support (LTS) 产品。
有关 LTS 术语和日期的详情,请查看 AMQ Streams LTS 支持策略。
第 3 章 功能 复制链接链接已复制到粘贴板!
AMQ Streams 2.5 引入了本节所述的功能。
OpenShift 上的 AMQ Streams 2.5 基于 Apache Kafka 3.5.0 和 Strimzi 0.36.x。
要查看此版本中已解决的所有增强和错误,请查看 AMQ Streams Jira 项目。
3.1. AMQ Streams 2.5.x (Long Term Support) 复制链接链接已复制到粘贴板!
AMQ Streams 2.5.x 是 AMQ Streams 的 Long Term Support (LTS)产品。
最新的补丁版本是 AMQ Streams 2.5.2。AMQ Streams 产品镜像已改为 2.5.2 版本。虽然支持的 Kafka 版本被列为 3.5.0,但它包含了 Kafka 3.5.2 的更新和改进。
有关 LTS 术语和日期的详情,请查看 AMQ Streams LTS 支持策略。
3.2. OpenShift Container Platform 支持 复制链接链接已复制到粘贴板!
OpenShift Container Platform 4.12 及更新的版本支持 AMQ Streams 2.5。
如需更多信息,请参阅 第 11 章 支持的配置。
3.3. Kafka 3.5.x 支持 复制链接链接已复制到粘贴板!
AMQ Streams 支持并使用 Apache Kafka 版本 3.5.0。Kafka 3.5.2 的更新会包括在 2.5.2 补丁版本中。仅支持由红帽构建的 Kafka 发行版本。
您必须将 Cluster Operator 升级到 AMQ Streams 版本 2.5,然后才能将代理和客户端应用程序升级到 Kafka 3.5.0。有关升级说明,请参阅升级 AMQ Streams。
如需了解更多信息,请参阅 Kafka 3.5.0、Kafka 3.5.1 和 Kafka 3.5.2 发行注记。
Kafka 3.4.x 仅支持升级到 AMQ Streams 2.5。
Kafka 3.5.x 提供对 KRaft 模式的访问,其中 Kafka 在使用 Raft 协议的情况下运行没有 ZooKeeper。KRaft 模式作为开发者预览提供。
3.4. 支持 v1beta2 API 版本 复制链接链接已复制到粘贴板!
所有自定义资源的 v1beta2 API 版本都由 AMQ Streams 1.7 引入。对于 AMQ Streams 1.8、v1alpha1 和 v1beta1 API 版本已从所有 AMQ Streams 自定义资源中删除,除了 KafkaTopic 和 KafkaUser 之外。
将自定义资源升级到 v1beta2 准备 AMQ Streams 移至 Kubernetes CRD v1,这是 Kubernetes 1.22 所需的。
如果您要从 1.7 版本之前的 AMQ Streams 版本升级:
- 先升级到 AMQ Streams 1.7
-
将自定义资源转换为
v1beta2 - 升级到 AMQ Streams 1.8
在升级到 AMQ Streams 版本 2.5 之前,您必须将自定义资源升级到使用 API 版本 v1beta2。
3.4.1. 将自定义资源升级到 v1beta2 复制链接链接已复制到粘贴板!
为了支持将自定义资源升级到 v1beta2,AMQ Streams 提供了一个 API 转换工具,您可以从 AMQ Streams 1.8 软件下载页面。
您可以在两个步骤中执行自定义资源升级。
步骤一:转换自定义资源的格式
使用 API 转换工具,您可以将自定义资源的格式转换为适用于 v1beta2 的格式:
- 转换描述 AMQ Streams 自定义资源配置的 YAML 文件
- 在集群中直接转换 AMQ Streams 自定义资源
另外,您可以手动将每个自定义资源转换为适用于 v1beta2 的格式。文档中提供了手动转换自定义资源的说明。
步骤 2:将 CRD 升级到 v1beta2
接下来,在 crd-upgrade 命令中使用 API 转换工具,您必须将 v1beta2 设置为 CRD 中的 storage API 版本。您不能手动执行此步骤。
如需更多信息,请参阅从 1.7 之前的 AMQ Streams 版本升级。
3.5. (预览)用于管理 Kafka 集群中节点节点池 复制链接链接已复制到粘贴板!
此发行版本引入了 KafkaNodePools 功能门和新的 KafkaNodePool 自定义资源,该资源启用配置不同的 Apache Kafka 节点池。此功能门达到 alpha 成熟度,这意味着它默认是禁用的,应被视为 开发人员预览。
节点池指的是 Kafka 集群中不同的 Kafka 节点组。KafkaNodePool 自定义资源仅代表节点池中的节点的配置。每个池都有自己的唯一的配置,其中包括强制设置,如副本数、存储配置和分配的角色列表。由于您可以为节点池中的节点分配角色,您可以尝试使用 ZooKeeper 进行集群管理或 KRaft 模式的 Kafka 集群的功能。
要启用 KafkaNodePools 功能门,在 Cluster Operator 配置中的 STRIMZI_FEATURE_GATES 环境变量中指定 +KafkaNodePools。
启用 KafkaNodePools 功能门
env:
- name: STRIMZI_FEATURE_GATES
value: +KafkaNodePools
env:
- name: STRIMZI_FEATURE_GATES
value: +KafkaNodePools
节点池预览不支持 drain Cleaner。
3.6. (预览)使用 Topic Operator 的统一方向主题管理 复制链接链接已复制到粘贴板!
此发行版本还包含 UnidirectionalTopicOperator 功能门,它引入了一个单向主题管理模式。使用单向模式,您可以使用 KafkaTopic 资源创建 Kafka 主题,然后由 Topic Operator 管理。此功能门达到 alpha 程度,应被视为开发者预览。
要启用 UnidirectionalTopicOperator 功能门,在 Cluster Operator 配置中的 STRIMZI_FEATURE_GATES 环境变量中指定 +UnidirectionalTopicOperator。
启用 UnidirectionalTopicOperator 功能门
env:
- name: STRIMZI_FEATURE_GATES
value: +UnidirectionalTopicOperator
env:
- name: STRIMZI_FEATURE_GATES
value: +UnidirectionalTopicOperator
对于这个版本,使用 Topic Operator 管理主题的唯一方法是双向模式,它与使用 ZooKeeper 进行集群管理兼容。单向模式不需要 ZooKeeper 用于集群管理,这是 Kafka 移动以使用 KRaft 模式来管理集群的重要开发。
3.7. 用于检索诊断和故障排除数据的报告工具 复制链接链接已复制到粘贴板!
report.sh 诊断工具是由红帽提供的脚本,用于收集 OpenShift 上 AMQ Streams 部署故障排除的基本数据。它收集相关的日志、配置文件和其他诊断数据,以帮助识别和解决问题。运行脚本时,您可以使用其他参数来检索特定数据。
该工具需要 OpenShift oc 命令行工具来建立与正在运行的集群的连接。之后,您可以打开终端并运行工具来检索组件中的数据。
在以下请求中,数据会在 Kafka 集群、Kafka Bridge 集群以及 secret 密钥和数据值上收集:
使用数据收集选项的请求示例
./report.sh --namespace=my-amq-streams-namespace --cluster=my-kafka-cluster --bridge=my-bridge-component --secrets=all --out-dir=~/reports
./report.sh --namespace=my-amq-streams-namespace --cluster=my-kafka-cluster --bridge=my-bridge-component --secrets=all --out-dir=~/reports
数据输出到指定目录。
请参阅 检索诊断和故障排除数据。
3.8. OpenTelemetry 用于分布式追踪 复制链接链接已复制到粘贴板!
OpenTelemetry 用于分布式追踪已变为 GA。您可以在指定的追踪系统中使用 OpenTelemetry。OpenTelemetry 已经替换了 OpenTracing 以进行分布式追踪。对 OpenTracing 的支持已弃用。
默认情况下,OpenTelemetry 使用 OTLP (OpenTelemetry 协议) exporter 进行追踪。带有 OpenTelemetry 的 AMQ Streams 与 Jaeger exporter 一起使用,但您可以指定 OpenTelemetry 支持的其他追踪系统。AMQ Streams 计划默认迁移到使用 OTLP exporter 的 OpenTelemetry,它支持 Jaeger exporter。
请参阅分布式追踪简介。
第 4 章 功能增强 复制链接链接已复制到粘贴板!
AMQ Streams 2.5 添加了很多改进。
4.1. Kafka 3.5.x 的改进 复制链接链接已复制到粘贴板!
AMQ Streams 2.5.x 发行版本支持 Kafka 3.5.0。升级到 2.5.2 补丁版本包含来自 Kafka 3.5.2 的更新和改进。
有关 Kafka 3.5.x 中引入的增强功能概述,请参阅 Kafka 3.5.0、Kafka 3.5.1 和 Kafka 3.5.2 发行注记。
4.2. UseStrimziPodSets 功能门变为 GA 复制链接链接已复制到粘贴板!
UseStrimziPodSets 功能门已移到 GA,这意味着它现已永久启用且无法禁用。
StrimziPodSet 资源现在用于管理 pod,而不是 StatefulSet 资源。这意味着 AMQ Streams 处理 pod 的创建和管理,而不是 OpenShift,从而提供更多对功能的控制。
4.3. KRaft 需要节点池配置 复制链接链接已复制到粘贴板!
要以 KRaft 模式部署 Kafka 集群,现在您必须启用 UseStrimziPodSets 和 KafkaNodePools 功能门。KRaft 模式只支持使用 KafkaNodePool 资源来管理 Kafka 节点的配置。
如需更多信息,请参阅以下:
4.4. 对 KRaft 模式的 OAuth 2.0 支持 复制链接链接已复制到粘贴板!
由 AMQ Streams 提供的 Red Hat Single Sign-On 授权器的 KeycloakRBACAuthorizer 已被 KeycloakAuthorizer 替代。新的授权器与 ZooKeeper 集群管理或 KRaft 模式使用 AMQ Streams 兼容。与前面的授权器一样,您可以使用 Red Hat Single Sign-On 提供的 Authorization Services 的 Red Hat Single Sign-On REST 端点,您可以在 Kafka 代理上配置 KeycloakAuthorizer。使用带有 ZooKeeper 集群管理的 AMQ Streams 时仍可使用 KeycloakRBACAuthorizer,但您应该迁移到新的授权器。
4.5. 用于授予管理的 OAuth 2.0 配置属性 复制链接链接已复制到粘贴板!
现在,您可以使用其他配置从授权服务器管理 OAuth 2.0 授予。
如果您使用 Red Hat Single Sign-On 进行 OAuth 2.0 授权,您可以在 Kafka 代理的授权配置中添加以下属性:
-
grant
MaxIdleTimeSeconds指定缓存中闲置授权可以被驱除的时间(以秒为单位)。默认值为 300。 -
grantGcPeriodSeconds指定作业连续运行之间的时间(以秒为单位),从缓存中清理过时的作业。默认值为 300。 -
grantAlwaysLatest控制是否为新会话获取最新的授权。启用后,从 Red Hat Single Sign-On 检索并缓存该用户。默认值为false。
使用 OAuth 2.0 授权的 Kafka 配置
4.6. 在提取用户名时 Oauth 2.0 支持 JsonPath 查询 复制链接链接已复制到粘贴板!
要在 Kafka 集群中使用 OAuth 2.0 身份验证,您可以使用身份验证方法 oauth 在 Kafka 自定义资源中指定监听程序配置。在配置侦听器属性时,现在可以使用 JsonPath 查询从正在使用的授权服务器中提取用户名。您可以使用 JsonPath 查询来为 userNameClaim 和 fallbackUserNameClaim 属性在侦听器中指定 username extraction 选项。这可让您通过访问嵌套数据结构中的特定值从令牌中提取用户名。例如,您可能有一个包含在 JSON 令牌数据结构中的 user info 数据结构的用户名。
下例演示了如何在使用内省端点配置令牌验证时将 JsonPath 查询与属性搭配使用。
使用内省端点配置令牌验证
4.7. 添加了 Kafka Exporter 支持来排除主题和消费者组 复制链接链接已复制到粘贴板!
支持 Kafka Exporter 部署配置引入了新的属性,以便从从 Kafka 代理中提取的指标中排除指定的主题和消费者组。
您可以在 Kafka Exporter 规格中使用以下属性:
-
groupExcludeRegex用来排除特定的消费者组 -
topicExcludeRegex用来排除特定主题
在以下示例配置中,两个属性 排除了以前缀 exclude- 开头的主题和消费者组。
部署 Kafka Exporter 配置示例
4.8. 指标和 OpenAPI 的 Kafka Bridge 增强 复制链接链接已复制到粘贴板!
Kafka Bridge 的最新版本包括以下更改:
-
从 HTTP 服务器相关的指标中删除
remote和local标签,以防止时间序列示例增长。 -
消除对
/metrics端点上的请求核算的 HTTP 服务器指标。 -
通过 OpenAPI 规格公开
/metrics端点,为指标访问和管理提供标准化的接口。 -
修复
OffsetRecordSentList组件模式,以返回记录偏移或错误。 -
修复
ConsumerRecord组件模式,将键和值返回为对象,而不仅仅是(JSON)字符串。 更正
/ready和/healthy端点返回的 HTTP 状态代码:-
将成功响应代码从
200改为204,指示成功响应中没有内容。 -
在故障问题单的规格中添加
500状态代码,指示错误响应中没有内容。
-
将成功响应代码从
第 5 章 技术预览 复制链接链接已复制到粘贴板!
AMQ Streams 2.5 中包含的技术预览功能。
技术预览功能不被红帽产品服务级别协议(SLA)支持,且可能无法完成。因此,红帽不推荐在生产环境中实施任何技术预览功能。此技术预览功能为您提供对即将推出的产品创新的早期访问,允许您在开发过程中测试并提供反馈。如需有关支持范围的更多信息,请参阅 技术预览功能支持范围。
5.1. Kafka 静态配额插件配置 复制链接链接已复制到粘贴板!
使用 Kafka Static Quota 插件的技术预览,在 Kafka 集群中的代理上设置吞吐量和存储限制。您可以通过配置 Kafka 资源来启用插件和设置限制。您可以设置字节阈值和存储配额,以在与代理交互的客户端上放置限制。
Kafka 静态配额插件配置示例
第 6 章 开发者预览 复制链接链接已复制到粘贴板!
AMQ Streams 2.5 中包含的开发人员预览功能。
作为 Kafka 集群管理员,您可以使用 Cluster Operator 部署配置中的功能门切换和关闭功能子集。作为开发人员预览的功能门处于 alpha 程度,默认是禁用的。
开发者预览功能不被红帽产品服务级别协议(SLA)支持,且可能无法完成。因此,红帽不推荐在生产环境中实施任何技术预览功能。此开发者预览功能为您提供对即将推出的产品创新的早期访问,允许您在开发过程中测试并提供反馈。如需有关支持范围的更多信息,请参阅开发者预览支持范围。
6.1. KafkaNodePools 功能门 复制链接链接已复制到粘贴板!
要使用 KafkaNodePool 资源来管理 Kafka 节点池的配置,请尝试 KafkaNodePools 功能门。
如需更多信息,请参阅 第 3.5 节 “(预览)用于管理 Kafka 集群中节点节点池”。
6.2. UnidirectionalTopicOperator 功能门 复制链接链接已复制到粘贴板!
要设置 Topic Operator,使其只管理与 KafkaTopic 资源关联的 Kafka 主题,请尝试 UnidirectionalTopicOperator 功能门。
如需更多信息,请参阅 第 3.6 节 “(预览)使用 Topic Operator 的统一方向主题管理”。
6.3. StableConnectIdentities 功能门 复制链接链接已复制到粘贴板!
要使用 StrimziPodSet 资源来管理 Kafka Connect 和 Kafka MirrorMaker 2 pod,请尝试 StableConnectIdentities 功能门。
StableConnectIdentities 功能门控制使用 StrimziPodSet 资源来管理 Kafka Connect 和 Kafka MirrorMaker 2 pod,而不是使用 OpenShift Deployment 资源。这有助于最小化连接器任务的重新平衡数量。
要启用 StableConnectIdentities 功能门,请指定 +StableConnectIdentities 作为 Cluster Operator 配置中的 STRIMZI_FEATURE_GATES 环境变量的值。
启用 StableConnectIdentities 功能门
env:
- name: STRIMZI_FEATURE_GATES
value: +StableConnectIdentities
env:
- name: STRIMZI_FEATURE_GATES
value: +StableConnectIdentities
6.4. UseKRaft 功能门 复制链接链接已复制到粘贴板!
Apache Kafka 处于对 ZooKeeper 的需求。启用新的 UseKRaft 功能门后,您可以尝试在 KRaft (Kafka Raft metadata)模式下部署 Kafka 集群,而无需 ZooKeeper。
此功能门是实验性的,仅适用于开发和测试,且不得在生产环境中启用。
要使用 KRaft 模式,还必须使用 KafkaNodePool 资源来管理节点组的配置。要启用 UseKRaft 功能门,请指定 +UseKRaft,+KafkaNodePools 作为 Cluster Operator 配置中的 STRIMZI_FEATURE_GATES 环境变量的值。
启用 UseKRaft 功能门
env:
- name: STRIMZI_FEATURE_GATES
value: +UseKRaft,+KafkaNodePools
env:
- name: STRIMZI_FEATURE_GATES
value: +UseKRaft,+KafkaNodePools
目前,AMQ Streams 中的 KRaft 模式有以下主要限制:
- 不支持从 ZooKeeper 移动到 KRaft 集群或其他方法。
- 只有 controller-only 节点无法单独进行滚动更新或单独更新。
- 不支持升级和降级 Apache Kafka 版本或 Strimzi operator。用户可能需要删除集群,升级 Operator 并部署一个新的 Kafka 集群。
-
KRaft 模式 只支持 Un idirectional Topic Operator。您可以使用
UnidirectionalTopicOperator功能门启用它。不支持 Bidirectional Topic Operator,当没有启用UnidirectionalTopicOperator功能门时,spec.entityOperator.topicOperator属性 必须从Kafka自定义资源中删除。 -
不支持 JBOD 存储。可以使用
type: jbod存储,但 JBOD 数组只能包含一个磁盘。
请参见以下信息:
第 7 章 Kafka 中断更改 复制链接链接已复制到粘贴板!
本节介绍了对 Kafka 的任何需要更改 AMQ Streams 的更改,以便继续工作。
7.1. 使用 Kafka 的示例文件连接器 复制链接链接已复制到粘贴板!
Kafka 不再在其 CLASSPATH 和 plugin.path 中包含示例文件连接器 FileStreamSourceConnector 和 FileStreamSinkConnector。AMQ Streams 已更新,您仍然可以使用这些示例连接器。现在,必须将示例添加到插件路径中,如任何连接器。
提供了两个连接器配置文件示例:
-
examples/connect/kafka-connect-build.yaml提供了一个 Kafka Connect构建配置,您可以部署以使用文件连接器构建新的 Kafka Connect 镜像。 -
examples/connect/source-connector.yaml提供了部署文件连接器作为KafkaConnector资源的配置。
请参见以下信息:
第 8 章 已弃用的功能 复制链接链接已复制到粘贴板!
本发行版本中弃用的功能,以及之前的 AMQ Streams 版本中所支持的功能如下所示。
8.1. RHEL 7 在 AMQ Streams 2.5.x (LTS)中弃用 复制链接链接已复制到粘贴板!
AMQ Streams 2.5.x 中弃用了对 RHEL 7 的支持。AMQ Streams 2.5.x (LTS)是支持 RHEL 7 的最后一个 LTS 版本。
8.2. 已删除 StatefulSet 支持 复制链接链接已复制到粘贴板!
在本发行版本中,UseStrimziPodSets 功能门变为 GA,这意味着它现已永久启用且无法禁用。因此,不再支持 StatefulSet 资源来管理 pod。
Kafka 自定义资源(.spec.zookeeper.template.statefulSet 和 .spec.kafka.template.statefulSet.statefulSet)中的 StatefulSet 模板属性已弃用并忽略。您应该从自定义资源中删除它们。
8.3. AMQ Streams 2.4.0 删除了对 Java 8 的支持 复制链接链接已复制到粘贴板!
Kafka 3.0.0 和 AMQ Streams 2.0 中已弃用对 Java 8 的支持。AMQ Streams 2.4.0 中删除了对 Java 8 的支持。这适用于所有 AMQ Streams 组件,包括客户端。
AMQ Streams 支持 Java 11 和 Java 17。在开发新应用程序时使用 Java 11 或 17。计划将当前使用 Java 8 的任何应用程序迁移到 Java 11 或 17。
如果您要继续使用 Java 8 一段时间,AMQ Streams 2.2 提供了 Long Term Support (LTS)。有关 LTS 术语和日期的详情,请查看 AMQ Streams LTS 支持策略。
8.4. OpenTracing 复制链接链接已复制到粘贴板!
对 type: jaeger tracing 的支持已被弃用。
Jaeger 客户端现已停用,OpenTracing 项目存档。因此,我们不能保证其对将来的 Kafka 版本的支持。我们基于 OpenTelemetry 项目推出新的追踪实施。
8.5. ACL 规则配置 复制链接链接已复制到粘贴板!
用于配置 ACL 规则操作的 operation 属性已弃用。现在,提供了一个使用 operations 属性的新的、更无缝的配置格式。
配置 ACL 规则的新格式
使用旧配置格式的 operation 属性已弃用,但仍受支持。
8.6. Kafka MirrorMaker 2 身份复制策略 复制链接链接已复制到粘贴板!
身份复制策略是 MirrorMaker 2 的一个功能,用于覆盖远程主题的自动重命名。主题不会使用源集群的名称添加名称,而是保留其原始名称。此设置对主动/被动备份和数据迁移场景特别有用。
要实现身份复制策略,您必须在 MirrorMaker 2 配置中指定复制策略类(replication.policy.class)。在以前的版本中,您可以指定 AMQ Streams mirror-maker-2-extensions 组件中包含的 io.strimzi.kafka.connect.mirror.IdentityReplicationPolicy 类。但是,这个组件现已弃用,并将在以后的版本中删除。因此,建议您更新您的实现以使用 Kafka 自己的复制策略类(org.apache.kafka.connect.mirror.IdentityReplicationPolicy)。
8.7. Kafka MirrorMaker 1 复制链接链接已复制到粘贴板!
Kafka MirrorMaker 在两个或更多活跃 Kafka 集群之间复制数据,并在数据中心之间复制数据。Kafka MirrorMaker 1 在 Kafka 3.0.0 中已弃用,并将在 Kafka 4.0.0 中删除。MirrorMaker 2 将是唯一可用的版本。MirrorMaker 2 基于 Kafka Connect 框架,连接器管理集群之间的数据传输。
因此,用于部署 Kafka MirrorMaker 1 的 AMQ Streams KafkaMirrorMaker 自定义资源已被弃用。当使用 Kafka 4.0.0 时,KafkaMirrorMaker 资源将从 AMQ Streams 中删除。
如果您使用 MirrorMaker 1 (称为 AMQ Streams 文档中的 MirrorMaker ),使用带有 IdentityReplicationPolicy 类的 KafkaMirrorMaker2 自定义资源。MirrorMaker 2 将复制的主题重命名为目标集群。IdentityReplicationPolicy 配置会覆盖自动重命名。使用它生成与 MirrorMaker 1 相同的主动/被动单向复制。
8.8. ListenerStatus 类型属性 复制链接链接已复制到粘贴板!
ListenerStatus 的 type 属性已被弃用,并将在以后的版本中删除。ListenerStatus 用于指定内部和外部监听器的地址。地址现在通过 name 来指定,而不是使用 type。
请参阅 ListenerStatus 模式参考。
8.9. Cruise Control TLS sidecar 属性 复制链接链接已复制到粘贴板!
已删除了 Cruise Control TLS sidecar。因此,.spec.cruiseControl.tlsSidecar 和 .spec.cruiseControl.template.tlsSidecar 属性现已弃用。属性将被忽略,并将在以后的版本中删除。
8.10. 崩溃控制容量配置 复制链接链接已复制到粘贴板!
磁盘和 CPUUtilization 容量配置属性已弃用,忽略,并将在以后的版本中删除。该属性用于设置容量限制,以优化方法来确定基于资源的优化目标是否被破坏。现在,AMQ Streams 会自动生成磁盘和 CPU 容量限制。
第 9 章 修复的问题 复制链接链接已复制到粘贴板!
以下小节列出了 AMQ Streams 2.5.x 中修复的问题。红帽建议您升级到最新的补丁版本。
AMQ Streams 2.5.x 发行版本支持 Kafka 3.5.0。有关 Kafka 3.5.0 中修复的问题的详情,请参考 Kafka 3.5.0 发行注记。
9.1. 修复了 AMQ Streams 2.5.2 的问题 复制链接链接已复制到粘贴板!
AMQ Streams 2.5.2 (Long Term Support)是最新的补丁版本。补丁版本包含 Kafka 3.5.2 更新。
有关 Kafka 3.5.1 和 3.5.2 中修复的问题的详情,请参考 Kafka 3.5.1 和 Kafka 3.5.2 发行注记。
有关 AMQ Streams 2.5.2 中解决问题的更多详细信息,请参阅 AMQ Streams 2.5.x 解决问题。
9.2. 修复了 AMQ Streams 2.5.1 的问题 复制链接链接已复制到粘贴板!
KAFKA-15353
2.5.1 补丁版本包含 KAFKA-15353 的修复,它是 Kafka 3.5.2 发行版本中包含的问题。请注意,补丁版本针对这个特定问题引入了一个修复,而不是为 Kafka 3.5.2 修复的所有问题。
有关此问题的更多信息,请参阅 Kafka 3.5.2 发行注记。
HTTP/2 DoS 漏洞(CVE-2023-44487)
该发行版本解决了 CVE-2023-44487,这是 HTTP/2 协议中的关键拒绝服务(DoS)漏洞。此漏洞源自不当处理多路复用流,从而使恶意客户端能够重复请求新流,并使用 RST_STREAM 帧立即取消它们。通过这样做,攻击者可以强制服务器扩展资源设置和停止流,而无需每个连接到达活动流的服务器端限制。有关此漏洞的更多信息,请参阅 CVE-2023-44487 页面了解描述。
有关 AMQ Streams 2.5.1 中解决问题的详情,请参阅 AMQ Streams 2.5.x 解决问题。
9.3. 修复了 AMQ Streams 2.5.0 的问题 复制链接链接已复制到粘贴板!
| 问题号 | Description |
|---|---|
| [KAFKA] Mirror Maker 2 negative lag | |
| 在 KafkaTopic 中没有 "spec:" 的情况下,主题不会被成功创建 | |
| 当使用无效配置推出时,所有 Zookeeper pod 都会被删除 | |
| [bridge] Logged HTTP 响应状态代码可能与返回到客户端的实际不同 | |
| 当 KafkaRebalance 资源为 Ready 时,它不应该因为 Kafka 集群失败而转换 | |
| 使连接器任务 backoff 在 Kafka Connect 中进行配置 | |
| 在启用了 Kafka Exporter 后,AMQ Streams Operator 不会创建 require Network Policy | |
| 启用 OAuth 2.0 指标时,Cruise Control 的启动失败 | |
| 当 REST API 查询失败时,connect/Coonector operator 会卡住 | |
|
在 | |
| 当 Cluster Operator 在建立信任前崩溃时,证书密钥替换会失败 | |
|
当 Cruise Control 无法生成 | |
| 提高重新定义持久性卷大小的可用性 | |
|
Cruise Control 和 | |
| 根据副本数量修复各种验证,以用于节点池 |
| 问题号 | Description |
|---|---|
| snakeyaml: Constructor Deserialization Remote Code Execution | |
| TRIAGE-CVE-2023-34454 snappy-java-repolib: snappy-java: Integer overflow in compress result to DoS | |
| TRIAGE-CVE-2023-34454 snappy-java-debuginfo: snappy-java: Integer overflow in compress result to DoS | |
| TRIAGE-CVE-2023-34454 snappy-java: Integer overflow in compress leads to DoS | |
| TRIAGE-CVE-2023-34455 snappy-java: Unchecked 块长度会导致 DoS | |
| 在导航 TLS 握手时,CVE-2023-34462 Flaw in Netty 的 SniHandler。 | |
| CVE-2023-0482 RESTEasy:创建不安全的临时文件 | |
| CVE-2022-24823 netty: 全局可读临时文件,包含敏感数据 | |
| CVE-2021-37137 netty-codec: SnappyFrameDecoder 不限制块长度,并可能会以不必要的方式缓冲可跳过的块 | |
| CVE-2021-37136 netty-codec: Bzip2Decoder 不允许为解压缩的数据设置大小限制 | |
| 在处理精心设计的 GZIP 归档时,OOio 客户端的 CVE-2023-3635 DoS | |
| 带有多部分支持的 CVE-2023-26048 Jetty servlets 可能会导致客户端请求造成 OOM 错误 | |
| Jetty 中的 CVE-2023-26049 非标准 Cookie 解析可能会允许攻击者其他 Cookie 中的 smuggle cookies | |
| CVE-2022-36944 scala: deserialization gadget 链 | |
| TRIAGE-CVE-2023-3635 okio: GzipSource 类不正确的异常处理 | |
| CVE-2023-26048 jetty-server: OutOfMemoryError for large multipart without filename via request.getParameter () | |
| CVE-2023-26049 jetty-server: Cookie 解析带引号的值可能会从其他 Cookie 中破坏值 |
第 10 章 已知问题 复制链接链接已复制到粘贴板!
本节列出了 OpenShift 中 AMQ Streams 2.5 的已知问题。
10.1. OpenShift 4.16: Excessive generation of secrets 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform (OCP)版本 4.16 上部署 Kafka 实例会触发在 Kafka 命名空间中持续创建 dockercfg secret。
此问题是由将 openshift.io/internal-registry-pull-secret-ref 注解添加到服务帐户导致的,这会导致 Apache Kafka 和 OpenShift 的协调循环来重复重写注解。随着时间的推移,这会产生数千种不必要的 secret。
临时解决方案
要缓解这个问题,请升级到 OCP 版本 4.16.4 或更高版本,其中解决了这个问题。
如果无法立即升级,则每个服务帐户手动配置 openshift.io/internal-registry-pull-secret-ref 注解以防止协调循环。
配置注解
template:
serviceAccount:
metadata:
annotations:
openshift.io/internal-registry-pull-secret-ref: my-cluster-entity-operator-dockercfg-qxwxd
template:
serviceAccount:
metadata:
annotations:
openshift.io/internal-registry-pull-secret-ref: my-cluster-entity-operator-dockercfg-qxwxd
10.2. 在启用了 CORS 时 Kafka Bridge 发送的信息 复制链接链接已复制到粘贴板!
如果 Kafka Bridge 启用了 Cross-Origin Resource Sharing (CORS),则在发送 HTTP 请求以生成消息时会返回一个 400 bad request error。
临时解决方案
要避免这个错误,请在 Kafka Bridge 配置中禁用 CORS。要发送生成消息的 HTTP 请求,必须在 Kafka Bridge 中禁用 CORS。这个问题会在以后的 AMQ Streams 发行版本中解决。
要使用 CORS,您可以为 Kafka Bridge 部署 Red Hat 3scale。
- 有关部署 3scale 的详情,请参考在 AMQ Streams Kafka Bridge 中使用 3scale API 管理。
- 有关 3scale 请求处理的信息,请参阅管理 API 网关。
10.3. IPv6 集群上的 AMQ Streams Cluster Operator 复制链接链接已复制到粘贴板!
AMQ Streams Cluster Operator 不会在互联网协议版本 6 (IPv6)集群中启动。
临时解决方案
这个问题有两个临时解决方案。
临时解决方案:设置 KUBERNETES_MASTER 环境变量
显示 OpenShift Container Platform 集群的 Kubernetes master 节点地址:
oc cluster-info Kubernetes master is running at <master_address> # ...
oc cluster-info Kubernetes master is running at <master_address> # ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 复制 master 节点的地址。
列出所有 Operator 订阅:
oc get subs -n <operator_namespace>
oc get subs -n <operator_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑 AMQ Streams 的
订阅资源 :oc edit sub amq-streams -n <operator_namespace>
oc edit sub amq-streams -n <operator_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
spec.config.env中,添加KUBERNETES_MASTER环境变量,设置为 Kubernetes master 节点的地址。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存并退出编辑器。
检查
订阅是否已更新:oc get sub amq-streams -n <operator_namespace>
oc get sub amq-streams -n <operator_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Cluster Operator
Deployment是否已更新为使用新环境变量:oc get deployment <cluster_operator_deployment_name>
oc get deployment <cluster_operator_deployment_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
临时解决方案:禁用主机名验证
列出所有 Operator 订阅:
oc get subs -n <operator_namespace>
oc get subs -n <operator_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑 AMQ Streams 的
订阅资源 :oc edit sub amq-streams -n <operator_namespace>
oc edit sub amq-streams -n <operator_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
spec.config.env中,添加KUBERNETES_DISABLE_HOSTNAME_VERIFICATION环境变量,设为true。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存并退出编辑器。
检查
订阅是否已更新:oc get sub amq-streams -n <operator_namespace>
oc get sub amq-streams -n <operator_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Cluster Operator
Deployment是否已更新为使用新环境变量:oc get deployment <cluster_operator_deployment_name>
oc get deployment <cluster_operator_deployment_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4. 崩溃控制 CPU 利用率估算 复制链接链接已复制到粘贴板!
Cruise Control for AMQ Streams 存在一个已知问题,与 CPU 使用率估算的计算相关。CPU 使用率计算为代理 pod 定义容量的百分比。在运行具有不同 CPU 内核的节点中的 Kafka 代理时,会出现这个问题。例如,node1 可能有 2 个 CPU 内核,node2 有 4 个 CPU 内核。在这种情况下,Cruise Control 可能会低估或高估了 CPU 的负载。这个问题可能会在 pod 负载过重时导致集群无法重新平衡。
这个问题有两个临时解决方案。
临时解决方案: Equal CPU 请求和限值
您可以在 Kafka.spec.kafka.resources 中设置与 CPU 限制相等的 CPU 请求。这样,所有 CPU 资源都会保留前期,并且始终可用。此配置允许 Cruise Control 在准备基于 CPU 目标的重新平衡建议时,正确评估 CPU 利用率。
临时解决方案:排除 CPU 目标
您可以从 Cruise Control 配置中指定的硬和默认目标中排除 CPU 目标。
没有 CPU 目标的 Cruise Control 配置示例
如需更多信息,请参阅 Insufficient CPU 容量。
10.5. 以 FIPS 模式运行时的 JMX 身份验证 复制链接链接已复制到粘贴板!
当在启用了 JMX 身份验证的 FIPS 模式下运行 AMQ Streams 时,客户端可能会失败。要临时解决这个问题,在以 FIPS 模式运行时不要启用 JMX 身份验证。我们正在调查此问题,并在以后进行解决。
第 11 章 支持的配置 复制链接链接已复制到粘贴板!
AMQ Streams 2.5 发行版本支持的配置。
11.1. 支持的平台 复制链接链接已复制到粘贴板!
以下平台测试了在 OpenShift 声明版本中使用 Kafka 运行的 AMQ Streams 2.5。
| 平台 | Version | 架构 |
|---|---|---|
| OpenShift Container Platform | 4.12 及更新的版本 | x86_64, s390x (IBM Z 和 IBM® LinuxONE), aarch64 (64-bit ARM) |
| OpenShift Container Platform | 4.13 及更新的版本 | ppc64le (IBM Power) |
| OpenShift Dedicated | Latest | x86_64 |
| Microsoft Azure Red Hat OpenShift | Latest | x86_64 |
| Red Hat OpenShift Service on AWS | Latest | x86_64 |
| Red Hat MicroShift | Latest | x86_64 |
当只运行 Kafka 3.5.x 时,支持 aarch64 (64-bit ARM)应用到 AMQ Streams 2.5。
不支持的功能
- Red Hat MicroShift 不支持 Kafka Connect 的构建配置,用于使用连接器构建容器镜像。
- 在 IBM Power ppc64le、IBM Z s390x 或 IBM® LinuxONE s390x 架构上运行的 AMQ Streams 在断开连接的 OpenShift Container Platform 环境中不被支持。另外,IBM Z 和 IBM® LinuxONE s390x 架构不支持 AMQ Streams OPA 集成。
11.2. 支持的 Apache Kafka 生态系统 复制链接链接已复制到粘贴板!
在 AMQ Streams 中,只支持从 Apache Software Foundation 直接发布的以下组件:
- Apache Kafka Broker
- Apache Kafka Connect
- Apache MirrorMaker
- Apache MirrorMaker 2
- Apache Kafka Java Producer, Consumer, Management client, 和 Kafka Streams
- Apache ZooKeeper
Apache ZooKeeper 仅作为 Apache Kafka 的实现详情支持,不应出于其他目的进行修改。另外,分配给 ZooKeeper 节点的内核数或 vCPU 不包含在订阅合规计算中。换句话说,ZooKee 节点不会计算客户的订阅。
11.3. 其他支持的功能 复制链接链接已复制到粘贴板!
- Kafka Bridge
- Drain Cleaner
- Sything Control
- 分布式追踪
另请参阅 第 13 章 支持的与红帽产品集成。
11.4. 存储要求 复制链接链接已复制到粘贴板!
Kafka 需要块存储;NFS 等文件存储选项不兼容。
第 12 章 组件详情 复制链接链接已复制到粘贴板!
下表显示了每个 AMQ Streams 发行版本的组件版本。
| AMQ Streams | Apache Kafka | Strimzi Operators | Kafka Bridge | Oauth | Sything Control |
|---|---|---|---|---|---|
| 2.5.2 | 3.5.0 (+ 3.5.2) | 0.36.0 | 0.26 | 0.13.0 | 2.5.123 |
| 2.5.1 | 3.5.0 | 0.36.0 | 0.26 | 0.13.0 | 2.5.123 |
| 2.5.0 | 3.5.0 | 0.36.0 | 0.26 | 0.13.0 | 2.5.123 |
| 2.4.0 | 3.4.0 | 0.34.0 | 0.25.0 | 0.12.0 | 2.5.112 |
| 2.3.0 | 3.3.1 | 0.32.0 | 0.22.3 | 0.11.0 | 2.5.103 |
| 2.2.2 | 3.2.3 | 0.29.0 | 0.21.5 | 0.10.0 | 2.5.103 |
| 2.2.1 | 3.2.3 | 0.29.0 | 0.21.5 | 0.10.0 | 2.5.103 |
| 2.2.0 | 3.2.3 | 0.29.0 | 0.21.5 | 0.10.0 | 2.5.89 |
| 2.1.0 | 3.1.0 | 0.28.0 | 0.21.4 | 0.10.0 | 2.5.82 |
| 2.0.1 | 3.0.0 | 0.26.0 | 0.20.3 | 0.9.0 | 2.5.73 |
| 2.0.0 | 3.0.0 | 0.26.0 | 0.20.3 | 0.9.0 | 2.5.73 |
| 1.8.4 | 2.8.0 | 0.24.0 | 0.20.1 | 0.8.1 | 2.5.59 |
| 1.8.0 | 2.8.0 | 0.24.0 | 0.20.1 | 0.8.1 | 2.5.59 |
| 1.7.0 | 2.7.0 | 0.22.1 | 0.19.0 | 0.7.1 | 2.5.37 |
| 1.6.7 | 2.6.3 | 0.20.1 | 0.19.0 | 0.6.1 | 2.5.11 |
| 1.6.6 | 2.6.3 | 0.20.1 | 0.19.0 | 0.6.1 | 2.5.11 |
| 1.6.5 | 2.6.2 | 0.20.1 | 0.19.0 | 0.6.1 | 2.5.11 |
| 1.6.4 | 2.6.2 | 0.20.1 | 0.19.0 | 0.6.1 | 2.5.11 |
| 1.6.0 | 2.6.0 | 0.20.0 | 0.19.0 | 0.6.1 | 2.5.11 |
| 1.5.0 | 2.5.0 | 0.18.0 | 0.16.0 | 0.5.0 | - |
| 1.4.1 | 2.4.0 | 0.17.0 | 0.15.2 | 0.3.0 | - |
| 1.4.0 | 2.4.0 | 0.17.0 | 0.15.2 | 0.3.0 | - |
| 1.3.0 | 2.3.0 | 0.14.0 | 0.14.0 | 0.1.0 | - |
| 1.2.0 | 2.2.1 | 0.12.1 | 0.12.2 | - | - |
| 1.1.1 | 2.1.1 | 0.11.4 | - | - | - |
| 1.1.0 | 2.1.1 | 0.11.1 | - | - | - |
| 1.0 | 2.0.0 | 0.8.1 | - | - | - |
Strimzi 0.26.0 包括一个 Log4j 漏洞。产品中包含的版本已更新,以取决于不包含漏洞的版本。
第 13 章 支持的与红帽产品集成 复制链接链接已复制到粘贴板!
AMQ Streams 2.5 支持与以下红帽产品集成:
- 红帽单点登录
- 提供 OAuth 2.0 身份验证和 OAuth 2.0 授权。
- Red Hat 3scale API Management
- 保护 Kafka Bridge 并提供额外的 API 管理功能。
- 红帽构建的 Debezium
- 监控数据库并创建事件流。
- Red Hat build of Apicurio Registry
- 为数据流提供服务架构的集中存储。
- 红帽构建的 Apache Camel K
- 提供轻量级集成框架。
有关这些产品可引入您的 AMQ Streams 部署的功能信息,请参阅产品文档。
13.1. 红帽单点登录 复制链接链接已复制到粘贴板!
AMQ Streams 支持通过 Red Hat Single Sign-On Authorization Services 使用基于 OAuth 2.0 令牌的授权,它允许您集中管理安全策略和权限。
13.2. Red Hat 3scale API Management 复制链接链接已复制到粘贴板!
如果在 OpenShift Container Platform 上部署了 Kafka Bridge,您可以在 3scale 中使用它。3scale API 管理可以使用 TLS 保护 Kafka Bridge,并提供身份验证和授权。与 3scale 集成还意味着可以使用 metrics、速率限制和计费等额外功能。
有关部署 3scale 的详情,请参考在 AMQ Streams Kafka Bridge 中使用 3scale API 管理。
13.3. 红帽构建的 Debezium 用于更改数据捕获 复制链接链接已复制到粘贴板!
红帽构建的 Debezium 是一个分布式更改数据捕获平台。它捕获数据库中的行级更改,创建更改事件记录,并将记录流传输到 Kafka 主题。Debezium 基于 Apache Kafka 构建。您可以将红帽构建的 Debezium 与 AMQ Streams 一起部署并集成。部署 AMQ Streams 后,您可以通过 Kafka Connect 将 Debezium 部署为连接器配置。Debezium 将更改事件记录传递到 OpenShift 上的 AMQ Streams。应用程序可以读取 这些更改事件流,并按发生更改事件的顺序访问更改事件。
Debezium 具有多个用途,包括:
- 数据复制
- 更新缓存和搜索索引
- 简化单体式应用程序
- 数据集成
- 启用流查询
Debezium 为以下通用数据库提供连接器(基于 Kafka Connect):
- Db2
- MongoDB
- MySQL
- PostgreSQL
- SQL Server
有关使用 AMQ Streams 部署 Debezium 的更多信息,请参阅 红帽构建的 Debezium 产品文档。
13.4. 红帽构建的 Apicurio Registry 用于 schema 验证 复制链接链接已复制到粘贴板!
您可以使用红帽构建的 Apicurio Registry 作为数据流的服务架构的集中存储。对于 Kafka,您可以使用红帽构建的 Apicurio Registry 来存储 Apache Avro 或 JSON 模式。
Apicurio Registry 提供 REST API 和 Java REST 客户端,用于通过服务器端端点从客户端应用注册和查询架构。
使用 Apicurio Registry 将管理模式的过程与客户端应用程序配置分离。您可以通过在客户端代码中指定 URL 来启用应用程序从 registry 中使用 schema。
例如,消息序列化和反序列化的架构可以存储在注册表中,后者随后从使用它们的应用程序引用,以确保它们发送和接收的消息与这些模式兼容。
Kafka 客户端应用程序可以在运行时从 Apicurio Registry 中推送或拉取其模式。
有关使用带有 AMQ Streams 的红帽构建的 Apicurio Registry 的更多信息,请参阅 红帽构建的 Apicurio Registry 的产品文档。
13.5. 红帽构建的 Apache Camel K 复制链接链接已复制到粘贴板!
红帽构建的 Apache Camel K 是一个轻量级集成框架,从 Apache Camel K 构建,它在 OpenShift 上的云中原生运行。Camel K 支持无服务器集成,允许开发和部署集成任务,而无需管理底层基础架构。您可以使用 Camel K 在 AMQ Streams 环境中构建并集成事件驱动的应用程序。对于在不同系统或数据库之间需要实时数据同步的情况,Camel K 可用于捕获和转换事件的变化,并将其发送到 AMQ Streams 以分发到其他系统。
有关在 AMQ Streams 中使用 Camel K 的更多信息,请参阅 红帽构建的 Apache Camel K 产品文档。
更新于 2024-09-10