OpenShift 上的 AMQ Streams 2.5 发行注记


Red Hat Streams for Apache Kafka 2.5

OpenShift Container Platform 中 AMQ Streams 发行版本的主要新功能及变化信息

摘要

本发行注记概述了 AMQ Streams 2.5 发行版本中引入的新功能、功能增强和修复。

第 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.0Kafka 3.5.1Kafka 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、v1alpha1v1beta1 API 版本已从所有 AMQ Streams 自定义资源中删除,除了 KafkaTopicKafkaUser 之外。

将自定义资源升级到 v1beta2 准备 AMQ Streams 移至 Kubernetes CRD v1,这是 Kubernetes 1.22 所需的。

如果您要从 1.7 版本之前的 AMQ Streams 版本升级:

  1. 先升级到 AMQ Streams 1.7
  2. 将自定义资源转换为 v1beta2
  3. 升级到 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 版本升级

此发行版本引入了 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
Copy to Clipboard Toggle word wrap

注意

节点池预览不支持 drain Cleaner。

请参阅配置节点池

此发行版本还包含 UnidirectionalTopicOperator 功能门,它引入了一个单向主题管理模式。使用单向模式,您可以使用 KafkaTopic 资源创建 Kafka 主题,然后由 Topic Operator 管理。此功能门达到 alpha 程度,应被视为开发者预览

要启用 UnidirectionalTopicOperator 功能门,在 Cluster Operator 配置中的 STRIMZI_FEATURE_GATES 环境变量中指定 +UnidirectionalTopicOperator

启用 UnidirectionalTopicOperator 功能门

env:
  - name: STRIMZI_FEATURE_GATES
    value: +UnidirectionalTopicOperator
Copy to Clipboard Toggle word wrap

对于这个版本,使用 Topic Operator 管理主题的唯一方法是双向模式,它与使用 ZooKeeper 进行集群管理兼容。单向模式不需要 ZooKeeper 用于集群管理,这是 Kafka 移动以使用 KRaft 模式来管理集群的重要开发。

请参阅使用主题 Operator

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
Copy to Clipboard Toggle word wrap

数据输出到指定目录。

请参阅 检索诊断和故障排除数据

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.0Kafka 3.5.1Kafka 3.5.2 发行注记。

4.2. UseStrimziPodSets 功能门变为 GA

UseStrimziPodSets 功能门已移到 GA,这意味着它现已永久启用且无法禁用。

StrimziPodSet 资源现在用于管理 pod,而不是 StatefulSet 资源。这意味着 AMQ Streams 处理 pod 的创建和管理,而不是 OpenShift,从而提供更多对功能的控制。

请参阅 UseStrimziPodSets 功能门 和功能增强发行版本

4.3. KRaft 需要节点池配置

要以 KRaft 模式部署 Kafka 集群,现在您必须启用 UseStrimziPodSetsKafkaNodePools 功能门。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 配置

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
    authorization:
      type: keycloak
      tokenEndpointUri: <https://<auth_server_-_address>/auth/realms/external/protocol/openid-connect/token>
      clientId: kafka
      # ...
      grantsMaxIdleSeconds: 300
      grantsGcPeriodSeconds: 300
      grantsAlwaysLatest: false
    #...
Copy to Clipboard Toggle word wrap

请参阅配置 OAuth 2.0 授权支持

4.6. 在提取用户名时 Oauth 2.0 支持 JsonPath 查询

要在 Kafka 集群中使用 OAuth 2.0 身份验证,您可以使用身份验证方法 oauthKafka 自定义资源中指定监听程序配置。在配置侦听器属性时,现在可以使用 JsonPath 查询从正在使用的授权服务器中提取用户名。您可以使用 JsonPath 查询来为 userNameClaimfallbackUserNameClaim 属性在侦听器中指定 username extraction 选项。这可让您通过访问嵌套数据结构中的特定值从令牌中提取用户名。例如,您可能有一个包含在 JSON 令牌数据结构中的 user info 数据结构的用户名。

下例演示了如何在使用内省端点配置令牌验证时将 JsonPath 查询与属性搭配使用。

使用内省端点配置令牌验证

- name: external
  port: 9094
  type: loadbalancer
  tls: true
  authentication:
    type: oauth
    validIssuerUri: <https://<auth-server-address>/auth/realms/external>
    introspectionEndpointUri: <https://<auth-server-address>/auth/realms/external/protocol/openid-connect/token/introspect>
    clientId: kafka-broker
    clientSecret:
      secretName: my-cluster-oauth
      key: clientSecret
    userNameClaim: "['user.info'].['user.id']" 
1

    maxSecondsWithoutReauthentication: 3600
    fallbackUserNameClaim: "['client.info'].['client.id']" 
2

    fallbackUserNamePrefix: client-account-
    # ...
Copy to Clipboard Toggle word wrap

1
在令牌中包含实际用户名的令牌声明(或密钥)。用户名是用于识别用户的 主体userNameClaim 值取决于使用的授权服务器。
2
授权服务器可能无法提供单个属性来识别常规用户和客户端。当客户端以自己的名称进行身份验证时,服务器可能会提供 客户端 ID。当用户使用用户名和密码进行身份验证时,若要获取刷新令牌或访问令牌,除了客户端 ID 外,服务器可能会提供一个 username 属性。如果主用户 ID 属性不可用,则使用这个 fallback 选项指定要使用的用户名声明(attribute)。如果需要,您可以使用 JsonPath 查询来目标嵌套属性。

请参阅 为 Kafka 代理配置 OAuth 2.0 支持

支持 Kafka Exporter 部署配置引入了新的属性,以便从从 Kafka 代理中提取的指标中排除指定的主题和消费者组。

您可以在 Kafka Exporter 规格中使用以下属性:

  • groupExcludeRegex 用来排除特定的消费者组
  • topicExcludeRegex 用来排除特定主题

在以下示例配置中,两个属性 排除了以前缀 exclude- 开头的主题和消费者组。

部署 Kafka Exporter 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  # ...
  kafkaExporter:
    image: my-registry.io/my-org/my-exporter-cluster:latest
    groupRegex: ".*"
    topicRegex: ".*"
    groupExcludeRegex: "^excluded-.*"
    topicExcludeRegex: "^excluded-.*"
# ...
Copy to Clipboard Toggle word wrap

请参阅 KafkaExporterSpec 模式参考

4.8. 指标和 OpenAPI 的 Kafka Bridge 增强

Kafka Bridge 的最新版本包括以下更改:

  • 从 HTTP 服务器相关的指标中删除 remotelocal 标签,以防止时间序列示例增长。
  • 消除对 /metrics 端点上的请求核算的 HTTP 服务器指标。
  • 通过 OpenAPI 规格公开 /metrics 端点,为指标访问和管理提供标准化的接口。
  • 修复 OffsetRecordSentList 组件模式,以返回记录偏移或错误。
  • 修复 ConsumerRecord 组件模式,将键和值返回为对象,而不仅仅是(JSON)字符串。
  • 更正 /ready/healthy 端点返回的 HTTP 状态代码:

    • 将成功响应代码从 200 改为 204,指示成功响应中没有内容。
    • 在故障问题单的规格中添加 500 状态代码,指示错误响应中没有内容。

请参阅使用 AMQ Streams Kafka Bridge

第 5 章 技术预览

AMQ Streams 2.5 中包含的技术预览功能。

重要

技术预览功能不被红帽产品服务级别协议(SLA)支持,且可能无法完成。因此,红帽不推荐在生产环境中实施任何技术预览功能。此技术预览功能为您提供对即将推出的产品创新的早期访问,允许您在开发过程中测试并提供反馈。如需有关支持范围的更多信息,请参阅 技术预览功能支持范围

5.1. Kafka 静态配额插件配置

使用 Kafka Static Quota 插件的技术预览,在 Kafka 集群中的代理上设置吞吐量和存储限制。您可以通过配置 Kafka 资源来启用插件和设置限制。您可以设置字节阈值和存储配额,以在与代理交互的客户端上放置限制。

Kafka 静态配额插件配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
    config:
      client.quota.callback.class: io.strimzi.kafka.quotas.StaticQuotaCallback
      client.quota.callback.static.produce: 1000000
      client.quota.callback.static.fetch: 1000000
      client.quota.callback.static.storage.soft: 400000000000
      client.quota.callback.static.storage.hard: 500000000000
      client.quota.callback.static.storage.check-interval: 5
Copy to Clipboard Toggle word wrap

请参阅有关使用 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
Copy to Clipboard Toggle word wrap

请参阅 StableConnectIdentities 功能门

6.4. UseKRaft 功能门

Apache Kafka 处于对 ZooKeeper 的需求。启用新的 UseKRaft 功能门后,您可以尝试在 KRaft (Kafka Raft metadata)模式下部署 Kafka 集群,而无需 ZooKeeper。

Important

此功能门是实验性的,适用于开发和测试,且不得在生产环境中启用。

要使用 KRaft 模式,还必须使用 KafkaNodePool 资源来管理节点组的配置。要启用 UseKRaft 功能门,请指定 +UseKRaft,+KafkaNodePools 作为 Cluster Operator 配置中的 STRIMZI_FEATURE_GATES 环境变量的值。

启用 UseKRaft 功能门

env:
  - name: STRIMZI_FEATURE_GATES
    value: +UseKRaft,+KafkaNodePools
Copy to Clipboard Toggle word wrap

目前,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 不再在其 CLASSPATHplugin.path 中包含示例文件连接器 FileStreamSourceConnectorFileStreamSinkConnector。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 规则的新格式

authorization:
  type: simple
  acls:
    - resource:
        type: topic
        name: my-topic
      operations:
        - Read
        - Describe
        - Create
        - Write
Copy to Clipboard Toggle word wrap

使用旧配置格式的 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)。

请参阅配置 Kafka MirrorMaker 2

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 相同的主动/被动单向复制。

请参阅配置 Kafka MirrorMaker 2

8.8. ListenerStatus 类型属性

ListenerStatustype 属性已被弃用,并将在以后的版本中删除。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 容量限制。

请参阅使用 Kafka 配置和部署 Cruise Control

第 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.1Kafka 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 的问题

Expand
表 9.1. 修复的问题
问题号Description

ENTMQST-3757

[KAFKA] Mirror Maker 2 negative lag

ENTMQST-3954

在 KafkaTopic 中没有 "spec:" 的情况下,主题不会被成功创建

ENTMQST-4430

当使用无效配置推出时,所有 Zookeeper pod 都会被删除

ENTMQST-4496

[bridge] Logged HTTP 响应状态代码可能与返回到客户端的实际不同

ENTMQST-4555

当 KafkaRebalance 资源为 Ready 时,它不应该因为 Kafka 集群失败而转换

ENTMQST-4707

使连接器任务 backoff 在 Kafka Connect 中进行配置

ENTMQST-4723

在启用了 Kafka Exporter 后,AMQ Streams Operator 不会创建 require Network Policy

ENTMQST-4735

启用 OAuth 2.0 指标时,Cruise Control 的启动失败

ENTMQST-4772

当 REST API 查询失败时,connect/Coonector operator 会卡住

ENTMQST-4774

KafkaConnect的构建中添加 insecure=true 参数,以适用于 maven 类型

ENTMQST-4822

当 Cluster Operator 在建立信任前崩溃时,证书密钥替换会失败

ENTMQST-4850

当 Cruise Control 无法生成 KafkaRebalance 提议时提供正确的错误消息

ENTMQST-4909

提高重新定义持久性卷大小的可用性

ENTMQST-5050

Cruise Control 和 KafkaNodePool 资源 - Operator 不会反映 KafkaNodePool中的副本数

ENTMQST-5051

根据副本数量修复各种验证,以用于节点池

Expand
表 9.2. 修复的常见漏洞和风险(CVE)
问题号Description

ENTMQST-4484

snakeyaml: Constructor Deserialization Remote Code Execution

ENTMQST-4995

TRIAGE-CVE-2023-34454 snappy-java-repolib: snappy-java: Integer overflow in compress result to DoS

ENTMQST-4996

TRIAGE-CVE-2023-34454 snappy-java-debuginfo: snappy-java: Integer overflow in compress result to DoS

ENTMQST-4997

TRIAGE-CVE-2023-34454 snappy-java: Integer overflow in compress leads to DoS

ENTMQST-4998

TRIAGE-CVE-2023-34455 snappy-java: Unchecked 块长度会导致 DoS

ENTMQST-5120

在导航 TLS 握手时,CVE-2023-34462 Flaw in Netty 的 SniHandler。

ENTMQST-5121

CVE-2023-0482 RESTEasy:创建不安全的临时文件

ENTMQST-5122

CVE-2022-24823 netty: 全局可读临时文件,包含敏感数据

ENTMQST-5123

CVE-2021-37137 netty-codec: SnappyFrameDecoder 不限制块长度,并可能会以不必要的方式缓冲可跳过的块

ENTMQST-5124

CVE-2021-37136 netty-codec: Bzip2Decoder 不允许为解压缩的数据设置大小限制

ENTMQST-5125

在处理精心设计的 GZIP 归档时,OOio 客户端的 CVE-2023-3635 DoS

ENTMQST-5126

带有多部分支持的 CVE-2023-26048 Jetty servlets 可能会导致客户端请求造成 OOM 错误

ENTMQST-5127

Jetty 中的 CVE-2023-26049 非标准 Cookie 解析可能会允许攻击者其他 Cookie 中的 smuggle cookies

ENTMQST-5128

CVE-2022-36944 scala: deserialization gadget 链

ENTMQST-5134

TRIAGE-CVE-2023-3635 okio: GzipSource 类不正确的异常处理

ENTMQST-5178

CVE-2023-26048 jetty-server: OutOfMemoryError for large multipart without filename via request.getParameter ()

ENTMQST-5179

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
Copy to Clipboard Toggle word wrap

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。

10.3. IPv6 集群上的 AMQ Streams Cluster Operator

AMQ Streams Cluster Operator 不会在互联网协议版本 6 (IPv6)集群中启动。

临时解决方案

这个问题有两个临时解决方案。

临时解决方案:设置 KUBERNETES_MASTER 环境变量

  1. 显示 OpenShift Container Platform 集群的 Kubernetes master 节点地址:

    oc cluster-info
    Kubernetes master is running at <master_address>
    # ...
    Copy to Clipboard Toggle word wrap

    复制 master 节点的地址。

  2. 列出所有 Operator 订阅:

    oc get subs -n <operator_namespace>
    Copy to Clipboard Toggle word wrap
  3. 编辑 AMQ Streams 的订阅资源 :

    oc edit sub amq-streams -n <operator_namespace>
    Copy to Clipboard Toggle word wrap
  4. spec.config.env 中,添加 KUBERNETES_MASTER 环境变量,设置为 Kubernetes master 节点的地址。例如:

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: amq-streams
      namespace: <operator_namespace>
    spec:
      channel: amq-streams-1.8.x
      installPlanApproval: Automatic
      name: amq-streams
      source: mirror-amq-streams
      sourceNamespace: openshift-marketplace
      config:
        env:
        - name: KUBERNETES_MASTER
          value: MASTER-ADDRESS
    Copy to Clipboard Toggle word wrap
  5. 保存并退出编辑器。
  6. 检查 订阅 是否已更新:

    oc get sub amq-streams -n <operator_namespace>
    Copy to Clipboard Toggle word wrap
  7. 检查 Cluster Operator Deployment 是否已更新为使用新环境变量:

    oc get deployment <cluster_operator_deployment_name>
    Copy to Clipboard Toggle word wrap

临时解决方案:禁用主机名验证

  1. 列出所有 Operator 订阅:

    oc get subs -n <operator_namespace>
    Copy to Clipboard Toggle word wrap
  2. 编辑 AMQ Streams 的订阅资源 :

    oc edit sub amq-streams -n <operator_namespace>
    Copy to Clipboard Toggle word wrap
  3. spec.config.env 中,添加 KUBERNETES_DISABLE_HOSTNAME_VERIFICATION 环境变量,设为 true。例如:

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: amq-streams
      namespace: <operator_namespace>
    spec:
      channel: amq-streams-1.8.x
      installPlanApproval: Automatic
      name: amq-streams
      source: mirror-amq-streams
      sourceNamespace: openshift-marketplace
      config:
        env:
        - name: KUBERNETES_DISABLE_HOSTNAME_VERIFICATION
          value: "true"
    Copy to Clipboard Toggle word wrap
  4. 保存并退出编辑器。
  5. 检查 订阅 是否已更新:

    oc get sub amq-streams -n <operator_namespace>
    Copy to Clipboard Toggle word wrap
  6. 检查 Cluster Operator Deployment 是否已更新为使用新环境变量:

    oc get deployment <cluster_operator_deployment_name>
    Copy to Clipboard Toggle word wrap

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 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
  zookeeper:
    # ...
  entityOperator:
    topicOperator: {}
    userOperator: {}
  cruiseControl:
    brokerCapacity:
      inboundNetwork: 10000KB/s
      outboundNetwork: 10000KB/s
    config:
      hard.goals: >
        com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.MinTopicLeadersPerBrokerGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaCapacityGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.DiskCapacityGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkInboundCapacityGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkOutboundCapacityGoal
      default.goals: >
        com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.MinTopicLeadersPerBrokerGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaCapacityGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.DiskCapacityGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkInboundCapacityGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkOutboundCapacityGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaDistributionGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.PotentialNwOutGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.DiskUsageDistributionGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkInboundUsageDistributionGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkOutboundUsageDistributionGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.TopicReplicaDistributionGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.LeaderReplicaDistributionGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.LeaderBytesInDistributionGoal
Copy to Clipboard Toggle word wrap

如需更多信息,请参阅 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。

Expand
平台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 发行版本的组件版本。

Expand
AMQ StreamsApache KafkaStrimzi OperatorsKafka BridgeOauthSything 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 产品文档

您可以使用红帽构建的 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

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat