12.2. 模式属性


12.2.1. Kafka 模式参考

Expand
属性Description

spec

Kafka 和 ZooKeeper 集群的规格和主题 Operator。

KafkaSpec

status

Kafka 和 ZooKeeper 集群的状态,以及主题 Operator。

KafkaStatus

12.2.2. KafkaSpec 模式参考

使用的: Kafka

Expand
属性Description

kafka

Kafka 集群配置。

KafkaClusterSpec

zookeeper

ZooKeeper 集群的配置。

ZookeeperClusterSpec

entityOperator

配置实体 Operator。

EntityOperatorSpec

clusterCa

集群证书颁发机构配置。

certificateAuthority

clientsCa

配置客户端证书颁发机构。

certificateAuthority

cruiseControl

配置控制部署。在指定时部署 Cruise Control 实例。

CruiseControlSpec

kafkaExporter

Kafka 导出器配置。Kafka Exporter 可以提供额外的指标,例如主题/分区中的使用者组。

KafkaExporterSpec

maintenanceTimeWindows

维护任务的时间窗口列表(即证书续订)。每次时间窗都由 cron 表达式定义。

字符串数组

12.2.3. KafkaClusterSpec 模式参考

使用的: KafkaSpec

KafkaClusterSpec 模式属性的完整列表

配置 Kafka 集群。

12.2.3.1. 监听器

使用 监听程序 属性配置监听程序来提供对 Kafka 代理的访问。

在没有身份验证的情况下配置普通(未加密)监听器的示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
spec:
  kafka:
    # ...
    listeners:
      - name: plain
        port: 9092
        type: internal
        tls: false
    # ...
  zookeeper:
    # ...
Copy to Clipboard Toggle word wrap

12.2.3.2. config

使用 config 属性将 Kafka 代理选项配置为密钥。

可以提供标准 Apache Kafka 配置,仅限于不直接由 AMQ Streams 管理的属性。

无法配置与以下内容相关的配置选项:

  • 安全(加密、验证和授权)
  • 侦听器配置
  • 代理 ID 配置
  • 配置日志数据目录
  • 在代理间通信
  • zookeeper 连接性

这些值可以是以下 JSON 类型之一:

  • 字符串
  • Number
  • 布尔值

除了直接由 AMQ Streams 管理的选项外,您可以指定并配置 Apache Kafka 文档 中列出的选项。具体来说,所有与以下字符串之一相等或开始的配置选项都会被禁止:

  • 监听器
  • 广告:
  • 代理.
  • 侦听器.
  • host.name
  • port
  • inter.broker.listener.name
  • SASL:
  • SSL.
  • 安全性.
  • 密码.
  • principal.builder.class
  • log.dir
  • zookeeper.connect
  • zookeeper.set.acl
  • 授权者.
  • super.user

当在 config 属性中存在禁止选项时,它会被忽略,并将警告消息输出到 Cluster Operator 日志文件。所有其他支持选项都传递给 Kafka。

禁止的选项有例外。对于将特定 密码套件 用于 TLS 版本的客户端连接,您可以配置允许的 ssl 属性。您还可以配置 zookeeper.connection.timeout.ms 属性来设置建立 ZooKeeper 连接的最大时间。

Kafka 代理配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
    config:
      num.partitions: 1
      num.recovery.threads.per.data.dir: 1
      default.replication.factor: 3
      offsets.topic.replication.factor: 3
      transaction.state.log.replication.factor: 3
      transaction.state.log.min.isr: 1
      log.retention.hours: 168
      log.segment.bytes: 1073741824
      log.retention.check.interval.ms: 300000
      num.network.threads: 3
      num.io.threads: 8
      socket.send.buffer.bytes: 102400
      socket.receive.buffer.bytes: 102400
      socket.request.max.bytes: 104857600
      group.initial.rebalance.delay.ms: 0
      ssl.cipher.suites: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
      ssl.enabled.protocols: "TLSv1.2"
      ssl.protocol: "TLSv1.2"
      zookeeper.connection.timeout.ms: 6000
    # ...
Copy to Clipboard Toggle word wrap

12.2.3.3. brokerRackInitImage

启用机架感知后,Kafka 代理 pod 使用 init 容器从 OpenShift 集群节点收集标签。可以使用 brokerRackInitImage 属性配置用于此容器的容器镜像。当缺少 brokerRackInitImage 字段时,会按优先级顺序使用以下镜像:

  1. 在 Cluster Operator 配置中的 STRIMZI_DEFAULT_KAFKA_INIT_IMAGE 环境变量中指定的容器镜像。
  2. registry.redhat.io/amq7/amq-streams-rhel8-operator:2.2.2 容器镜像。

brokerRackInitImage 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
    rack:
      topologyKey: topology.kubernetes.io/zone
    brokerRackInitImage: my-org/my-image:latest
    # ...
Copy to Clipboard Toggle word wrap

注意

建议您仅在需要使用其他容器 registry 的特殊情况下覆盖容器镜像。例如,因为您的网络不允许访问 AMQ Streams 使用的容器 registry。在这种情况下,您应该复制 AMQ Streams 镜像,或者从源构建它们。如果配置的镜像与 AMQ Streams 镜像不兼容,则可能无法正常工作。

12.2.3.4. logging

Kafka 都有自己的可配置的日志记录器:

  • log4j.logger.org.I0Itec.zkclient.ZkClient
  • log4j.logger.org.apache.zookeeper
  • log4j.logger.kafka
  • log4j.logger.org.apache.kafka
  • log4j.logger.kafka.request.logger
  • log4j.logger.kafka.network.Processor
  • log4j.logger.kafka.server.KafkaApis
  • log4j.logger.kafka.network.RequestChannel$
  • log4j.logger.kafka.controller
  • log4j.logger.kafka.log.LogCleaner
  • log4j.logger.state.change.logger
  • log4j.logger.kafka.authorizer.logger

Kafka 使用 Apache log4j 日志记录器实现。

使用 logging 属性配置日志记录器和日志记录器级别。

您可以通过直接指定日志记录器和级别(在线)或使用自定义(外部) ConfigMap 来设置日志级别。如果使用 ConfigMap,您可以将 logging.valueFrom.configMapKeyRef.name 属性设置为包含外部日志记录配置的 ConfigMap 的名称。在 ConfigMap 中,日志记录配置使用 log4j.properties 来描述。logging.valueFrom.configMapKeyRef.namelogging.valueFrom.configMapKeyRef.key 属性都是必须的。当 Cluster Operator 运行时,会使用指定的日志记录配置创建 ConfigMap,然后在每次协调后重新创建。如果没有指定自定义 ConfigMap,则会使用默认的日志记录设置。如果没有设置特定的日志记录器值,则会继承该日志记录器的上级日志记录器设置。有关日志级别的更多信息,请参阅 Apache 日志记录服务

此处会看到 内联外部日志记录 的示例。

内联日志

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
spec:
  # ...
  kafka:
    # ...
    logging:
      type: inline
      loggers:
        kafka.root.logger.level: "INFO"
  # ...
Copy to Clipboard Toggle word wrap

外部日志记录

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
spec:
  # ...
  logging:
    type: external
    valueFrom:
      configMapKeyRef:
        name: customConfigMap
        key: kafka-log4j.properties
  # ...
Copy to Clipboard Toggle word wrap

任何尚未配置级别的可用日志记录器都设置为 OFF

如果使用 Cluster Operator 部署 Kafka,则会动态应用对 Kafka 日志记录级别的更改。

如果使用外部日志记录,则在日志附加器更改时触发滚动更新。

垃圾收集器(GC)

也可以使用 jvmOptions 属性 来启用(或禁用)垃圾收集器日志记录。

12.2.3.5. KafkaClusterSpec 模式属性

Expand
属性Description

version

kafka 代理版本。默认为 3.2.3。参阅用户文档来了解升级或降级版本所需的流程。

字符串

replicas

集群中的 pod 数量。

整数

image

pod 的 docker 镜像。默认值取决于配置的 Kafka.spec.kafka.version

字符串

监听器

配置 Kafka 代理的监听程序。

GenericKafkaListener 数组

config

带有以下前缀的 Kafka 代理配置属性无法设置:监听器、代理、侦听器、host.name、端口、inter.broker.listener.name、sasl.、ssl、security.、password.、log.dir、zookeeper.connect、zookeeper.set.acl、zookeeper.ssl、zookeeper.ssl zookeeper.clientCnxnSocket, authorizer., super.user, cruise.control.metrics.metrics.control.metrics.reporter.bootstrap.servers,node.id, process.roles, controller. (zookeeper.connection.timeout.ms, ssl.cipher.suites, ssl.cipher.suites, SSL.protocol, ssl.enabled.protocols,cruise.control.topic.num.partitions, cruise.control.metrics.replication.replication. reasons, cruise.control.metrics.topic.retention.ms,cruise.metrics.metrics.auto.create.auto.create.retries, cruise.control.topic.autocreate.autocreate.auto.ms.ms,cruise.metrics.topic.auto.retries, cruise.control.topic.auto cruise.control.topic.min.insync.replicas,controller.quorum.election.backoff.max.ms, controller.quorum.election.timeout.ms, controller.quorum.fetch.timeout.ms)。

map

storage

存储配置(磁盘)。无法更新。这个类型取决于给定对象中的 storage.type 属性的值,它必须是 [ephemeral、persistent-claim 和 jbod] 之一。

EphemeralStorage, PersistentClaimStorage, JbodStorage

授权

Kafka 代理的授权配置。类型取决于给定对象中的 authorization.type 属性的值,它必须是 [simple, opa, keycloak, custom] 之一。

KafkaAuthorizationSimple, KafkaAuthorizationOpa, KafkaAuthorizationKeycloak, KafkaAuthorizationCustom

rack

配置 broker.rack 代理配置。

rack

brokerRackInitImage

用于初始化 代理的 init 容器的镜像。rack

字符串

livenessProbe

Pod 存活度检查。

探测

readinessProbe

Pod 就绪度检查.

探测

jvmOptions

pod 的 JVM 选项。

JvmOptions

jmxOptions

Kafka 代理的 JMX 选项。

KafkaJmxOptions

资源

要保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源查询的外部文档

ResourceRequirements

metricsConfig

指标配置。这个类型取决于给定对象中的 metricsConfig.type 属性的值,它必须是 [jmxPrometheusExporter] 之一。

JmxPrometheusExporterMetrics

logging

Kafka 的日志记录配置。类型取决于给定对象中的 logging.type 属性的值,它必须是 [inline, external] 中的一个。

InlineLogging, ExternalLogging

模板

Kafka 集群资源的模板。通过该模板,用户可以指定如何生成 StatefulSetPodServices

KafkaClusterTemplate

12.2.4. GenericKafkaListener 模式参考

使用的: KafkaClusterSpec

GenericKafkaListener 模式属性的完整列表

配置监听程序以连接到 OpenShift 内部和外部的 Kafka 代理。

您可以在 Kafka 资源中配置监听程序。

显示监听程序配置的 Kafka 资源示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    #...
    listeners:
      - name: plain
        port: 9092
        type: internal
        tls: false
      - name: tls
        port: 9093
        type: internal
        tls: true
        authentication:
          type: tls
      - name: external1
        port: 9094
        type: route
        tls: true
      - name: external2
        port: 9095
        type: ingress
        tls: true
        authentication:
          type: tls
        configuration:
          bootstrap:
            host: bootstrap.myingress.com
          brokers:
          - broker: 0
            host: broker-0.myingress.com
          - broker: 1
            host: broker-1.myingress.com
          - broker: 2
            host: broker-2.myingress.com
    #...
Copy to Clipboard Toggle word wrap

12.2.4.1. 监听器

您可以使用 Kafka 资源中的 监听程序 属性配置 Kafka 代理监听程序。侦听器定义为数组。

监听程序配置示例

listeners:
  - name: plain
    port: 9092
    type: internal
    tls: false
Copy to Clipboard Toggle word wrap

在 Kafka 集群中,名称和端口必须是唯一的。名称最多可包含 25 个字符,由小写字母和数字组成。允许的端口号为 9092 及更高版本,除了端口 9404 和 9999 除外,后者已用于 Prometheus 和 JMX。

通过为每个监听器指定唯一名称和端口,您可以配置多个监听程序。

12.2.4.2. type

这个类型设置为 内部,或将外部监听器设置为 路由loadbalancernodeportingress

internal

您可以使用 tls 属性或不加密配置内部监听程序。

内部 监听程序配置示例

#...
spec:
  kafka:
    #...
    listeners:
      #...
      - name: plain
        port: 9092
        type: internal
        tls: false
      - name: tls
        port: 9093
        type: internal
        tls: true
        authentication:
          type: tls
    #...
Copy to Clipboard Toggle word wrap

route

配置外部监听程序,以使用 OpenShift Routes 和 HAProxy 路由器公开 Kafka。

为每个 Kafka 代理 pod 创建专用的 Route。创建额外 路由 以作为 Kafka bootstrap 地址。Kafka 客户端可以使用这些 路由 连接到端口 443 上的 Kafka。客户端通过端口 443 连接默认的路由器端口,但流量会被路由到您配置的端口,本例中为 9094

路由 监听程序配置示例

#...
spec:
  kafka:
    #...
    listeners:
      #...
      - name: external1
        port: 9094
        type: route
        tls: true
    #...
Copy to Clipboard Toggle word wrap

ingress

配置一个外部监听程序,以使用 Kubernetes IngressNGINX Ingress Controller 来公开 Kafka。

为每个 Kafka 代理 pod 创建专用的 Ingress 资源。创建额外的 Ingress 资源,以用作 Kafka bootstrap 地址。Kafka 客户端可以使用这些 Ingress 资源连接到端口 443 上的 Kafka。客户端通过端口 443 连接默认的控制器端口,但流量会被路由到您配置的端口,本例中为 9095

您必须使用 GenericKafkaListenerConfigurationBootstrapGenericKafkaListenerConfigurationBroker 属性指定 bootstrap 和 per-broker 服务使用的主机名。

入口 监听程序配置示例

#...
spec:
  kafka:
    #...
    listeners:
      #...
      - name: external2
        port: 9095
        type: ingress
        tls: true
        authentication:
          type: tls
        configuration:
          bootstrap:
            host: bootstrap.myingress.com
          brokers:
          - broker: 0
            host: broker-0.myingress.com
          - broker: 1
            host: broker-1.myingress.com
          - broker: 2
            host: broker-2.myingress.com
  #...
Copy to Clipboard Toggle word wrap

注意

使用 Ingress 的外部监听程序目前只使用 Kubernetes 的 NGINX Ingress Controller 进行测试。

LoadBalancer

配置外部监听程序以公开 Kafka Loadbalancer 类型 服务

为每个 Kafka 代理 pod 创建一个新的负载均衡器服务。创建了一个额外的负载均衡器来充当 Kafka bootstrap 地址。loadbalancers 侦听指定的端口号,本例中为端口 9094

您可以使用 loadBalancerSourceRanges 属性配置 源范围 来限制对指定的 IP 地址的访问。

loadbalancer 侦听器配置示例

#...
spec:
  kafka:
    #...
    listeners:
      - name: external3
        port: 9094
        type: loadbalancer
        tls: true
        configuration:
          loadBalancerSourceRanges:
            - 10.0.0.0/8
            - 88.208.76.87/32
    #...
Copy to Clipboard Toggle word wrap

nodeport

配置外部监听程序,以使用 NodePort 类型 Services 来公开 Kafka。

Kafka 客户端直接连接到 OpenShift 节点。创建额外的 NodePort 服务类型用作 Kafka bootstrap 地址。

为 Kafka 代理 pod 配置公告的地址时,AMQ Streams 使用给定 pod 在运行的节点的地址。您可以使用 preferredNodePortAddressType 属性配置 检查的第一个地址类型作为节点地址

节点端口 监听程序配置示例

#...
spec:
  kafka:
    #...
    listeners:
      #...
      - name: external4
        port: 9095
        type: nodeport
        tls: false
        configuration:
          preferredNodePortAddressType: InternalDNS
    #...
Copy to Clipboard Toggle word wrap

注意

使用节点端口公开 Kafka 集群时,当前不支持 TLS 主机名验证。

12.2.4.3. port

端口号是 Kafka 集群中使用的端口,这可能不是客户端用来访问的端口。

  • LoadBalancer 侦听程序使用指定的端口号,作为 内部 监听程序
  • Ingress路由 监听程序使用端口 443 进行访问
  • NodePort 侦听程序使用 OpenShift 分配的端口号

对于客户端连接,请使用监听程序的 bootstrap 服务的地址和端口。您可以从 Kafka 资源的状态中检索它。

检索客户端连接的地址和端口的示例

oc get kafka <kafka_cluster_name> -o=jsonpath='{.status.listeners[?(@.name=="<listener_name>")].bootstrapServers}{"\n"}'
Copy to Clipboard Toggle word wrap

注意

监听器无法配置为使用设置代理通信的端口(9090 和 9091)和指标(9404)。

12.2.4.4. tls

TLS 属性是必需的。

默认情况下不启用 TLS 加密。要启用它,请将 tls 属性设置为 true

TLS 加密总是 与路由 监听程序一起使用。

12.2.4.5. 身份验证

侦听器的身份验证可指定为:

  • 双向 TLS (tls)
  • SCRAM-SHA-512 (scram-sha-512)
  • 基于令牌的 OAuth 2.0 (oauth)
  • 自定义(自定义)

12.2.4.6. networkPolicyPeers

使用 networkPolicyPeers 配置网络策略,以限制访问网络级别的监听程序。以下示例显示了 为纯文本tls 侦听器配置的 networkPolicyPeers 配置。

listeners:
  #...
  - name: plain
    port: 9092
    type: internal
    tls: true
    authentication:
      type: scram-sha-512
    networkPolicyPeers:
      - podSelector:
          matchLabels:
            app: kafka-sasl-consumer
      - podSelector:
          matchLabels:
            app: kafka-sasl-producer
  - name: tls
    port: 9093
    type: internal
    tls: true
    authentication:
      type: tls
    networkPolicyPeers:
      - namespaceSelector:
          matchLabels:
            project: myproject
      - namespaceSelector:
          matchLabels:
            project: myproject2
# ...
Copy to Clipboard Toggle word wrap

在示例中:

  • 只有与 labels app: kafka-sasl-consumerapp: kafka-sasl-producer 匹配的应用程序 pod 可以连接到 普通 的监听程序。应用程序 pod 必须与 Kafka 代理在同一命名空间中运行。
  • 只有在与标签 project: myproject and project: myproject2 的命名空间中运行的应用程序 pod 才可以连接到 tls 侦听程序。

networkPolicyPeers 字段的语法与 NetworkPolicy 资源中的 from 字段相同。

12.2.4.7. GenericKafkaListener 模式属性

Expand
属性Description

name

侦听器的名称。名称将用于识别监听程序和相关的 OpenShift 对象。该名称必须在给定的 Kafka 集群中唯一。名称可以包含小写字母字符和数字,最多为 11 个字符。

字符串

port

Kafka 内监听器使用的端口号。端口号必须在给定的 Kafka 集群中唯一。允许的端口号为 9092 及更高版本,除了端口 9404 和 9999 除外,后者已用于 Prometheus 和 JMX。根据监听程序类型,端口号可能与连接 Kafka 客户端的端口号不同。

整数

type

侦听器的类型。目前,支持的类型有 内部routeloadbalancernodeportingress

  • 内部 类型仅在 OpenShift 集群内部公开 Kafka。
  • 路由 类型使用 OpenShift 路由来公开 Kafka。
  • LoadBalancer 类型使用 LoadBalancer 类型服务来公开 Kafka。
  • NodePort 类型 使用 NodePort 类型服务来公开 Kafka。
  • Ingress 类型使用 OpenShift Nginx Ingress 来公开 Kafka。

字符串(一个 [ingress, internal, route, loadbalancer, nodeport])

tls

在监听器上启用 TLS 加密。这是必需的属性。

布尔值

身份验证

此侦听器的身份验证配置。这个类型取决于给定对象中的 authentication.type 属性的值,它必须是 [tls, scram-sha-512, oauth, custom] 之一。

KafkaListenerAuthenticationTls, KafkaListenerAuthenticationScramSha512, KafkaListenerAuthenticationOAuth, KafkaListenerAuthenticationCustom

配置

其他侦听器配置。

GenericKafkaListenerConfiguration

networkPolicyPeers

应连接到此侦听器的对等点列表。使用逻辑 OR 操作组合此列表中的对等点。如果此字段为空或缺失,则此监听器将允许所有连接。如果此字段存在且至少包含一个项目,则监听程序只允许与此列表中至少匹配一个项目的流量。如需更多信息,请参阅 networking.k8s.io/v1 networkpolicypeer 的外部文档

NetworkPolicyPeer 数组

12.2.5. KafkaListenerAuthenticationTls 模式参考

使用的: GenericKafkaListener

type 属性是一种差异性,用于区分来自 KafkaListenerAuthenticationScramSha512KafkaListenerAuthenticationTls 类型、KafkaListenerAuthenticationOAuthKafkaListenerAuthenticationCustom。它必须具有类型为 KafkaListenerAuthenticationTls 的值 tls

Expand
属性Description

type

必须为 tls

字符串

12.2.6. KafkaListenerAuthenticationScramSha512 模式参考

使用的: GenericKafkaListener

type 属性是一种差异性,用于区分来自 KafkaListenerAuthenticationTls, KafkaListenerAuthenticationOAuth, KafkaListenerAuthenticationCustomKafkaListenerAuthenticationScramSha512 类型。对于类型 KafkaListenerAuthenticationScramSha512,它需要值 scram-sha-512

Expand
属性Description

type

必须为 scram-sha-512

字符串

12.2.7. KafkaListenerAuthenticationOAuth 模式参考

使用的: GenericKafkaListener

type 属性是一种差异性,用于区分 KafkaListenerAuthentication OAuth 类型来自 KafkaListenerAuthenticationTlsKafkaListenerAuthenticationScramSha512KafkaListenerAuthenticationCustom。对于类型 KafkaListenerAuthenticationOAuth,它需要带有值 oauth

Expand
属性Description

accessTokenIsJwt

配置访问令牌是否被视为 JWT。如果授权服务器返回不透明令牌,则必须将其设置为 false。默认值为 true

布尔值

checkAccessTokenType

配置访问令牌类型检查是否执行。如果授权服务器在 JWT 令牌中不包含 'typ' 声明,则此项应设为 false。默认值为 true

布尔值

checkAudience

启用或禁用受众检查。受众检查确定令牌的接收者。如果启用了受众检查,还必须使用 clientId 属性配置 OAuth 客户端 ID。Kafka 代理将拒绝在其 aud (audience) 声明中没有其 clientId 的令牌。默认值为 false

布尔值

checkIssuer

启用或禁用签发者检查。默认情况下,使用由 validIssuerUri 配置的值来检查签发者。默认值为 true

布尔值

clientAudience

在向授权服务器的令牌端点发出请求时使用的对象。用于交集身份验证并使用 clientIdsecret 方法通过 PLAIN 配置 OAuth 2.0。

字符串

clientId

Kafka 代理可以用来对授权服务器进行身份验证的 OAuth 客户端 ID,并使用 introspect 端点 URI。

字符串

clientScope

向授权服务器的令牌端点发出请求时使用的范围。用于交集身份验证并使用 clientIdsecret 方法通过 PLAIN 配置 OAuth 2.0。

字符串

clientSecret

链接到包含 Kafka 代理可以用来进行授权服务器进行身份验证的 OAuth 客户端 secret 的 OpenShift Secret,并使用 introspect 端点 URI。

GenericSecretSource

connectTimeoutSeconds

连接授权服务器时出现连接超时(以秒为单位)。如果没有设置,则有效连接超时为 60 秒。

整数

customClaimCheck

JSONPath 过滤器查询以应用到 JWT 令牌,或对内省端点的响应进行额外的令牌验证。默认情况下不设置。

字符串

disableTlsHostnameVerification

启用或禁用 TLS 主机名验证。默认值为 false

布尔值

enableECDSA

enableECDSA 属性已弃用。通过安装 BouncyCastle crypto provider 启用或禁用 ECDSA 支持。ECDSA 支持始终被启用。BouncyCastle 库不再被 AMQ Streams 打包。值将被忽略。

布尔值

enableOauthBearer

启用或禁用 SASL_OAUTHBEARER 的 OAuth 身份验证。默认值为 true

布尔值

enablePlain

启用或禁用 SASL_PLAIN 的 OAuth 身份验证。使用这种机制时,不支持重新身份验证。默认值为 false

布尔值

fallbackUserNameClaim

如果不存在 userNameClaim 指定的声明,则将用于用户 ID 的回退用户名声明。当 client_credentials 身份验证仅会导致在另一个声明中提供客户端 ID 时,这很有用。只有在设置了 userNameClaim 时,它才会生效。

字符串

fallbackUserNamePrefix

要用于 fallbackUserNameClaim 值的前缀来构造用户 ID。这只有在 fallbackUserNameClaim 为 true 时才生效,并且声明的值存在。在防止名称冲突时,将用户名和客户端 ID 映射到相同的用户 id 空间非常有用。

字符串

groupsClaim

JSONPath 查询,用于在身份验证过程中提取用户的组。提取的组可被自定义授权者使用。默认情况下不提取任何组。

字符串

groupsClaimDelimiter

用于在将组提取为单个 String 值而不是 JSON 数组的分隔符。默认值为 ','(comma)。

字符串

introspectionEndpointUri

令牌内省端点的 URI,可用于验证不透明的非JWT 令牌。

字符串

jwksEndpointUri

JWKS 证书端点的 URI,可用于本地 JWT 验证。

字符串

jwksExpirySeconds

配置 JWKS 证书被视为有效的频率。到期间隔必须至少为 60 秒,然后在 jwksRefreshSeconds 中指定刷新间隔。默认为 360 秒。

整数

jwksMinRefreshPauseSeconds

连续两次刷新之间的最短暂停。遇到未知签名密钥时,立即调度刷新,但会始终等待这个最小暂停。默认为 1 秒。

整数

jwksRefreshSeconds

配置 JWKS 证书刷新的频率。刷新间隔必须至少为 60 秒,然后是 jwksExpirySeconds 中指定的到期间隔。默认值为 300 秒。

整数

maxSecondsWithoutReauthentication

经过身份验证的会话在无需再身份验证的情况下保持有效的最多秒数。这可让 Apache Kafka 重新验证功能,并在访问令牌过期时导致会话过期。如果访问令牌在最大时间或达到最大时间前过期,客户端必须重新验证,否则服务器将丢弃连接。默认不设置 - 经过身份验证的用户会话会在访问令牌过期时过期。这个选项只适用于 SASL_OAUTHBEARER 身份验证机制(在 enableOauthBearertrue时)。

整数

readTimeoutSeconds

连接到授权服务器时读取超时(以秒为单位)。如果没有设置,则有效读取超时为 60 秒。

整数

tlsTrustedCertificates

TLS 与 OAuth 服务器连接的可信证书。

CertSecretSource 数组

tokenEndpointUri

客户端通过 clientIdsecret 进行身份验证时,用于 SASL_PLAIN 机制的 Token 端点的 URI。如果设置,客户端可以通过 SASL_PLAIN 验证,方法是将 用户名 设置为 clientId,并将 密码设为 客户端 secret,也可以通过将用户名设置为 account username,并将密码设置为 account username,并将 password 设置为前缀为 $accessToken:。如果没有设置这个选项,则 密码 始终被解释为访问令牌(没有前缀),用户名作为帐户用户名 (因此名为 'no-client-credentials' 模式)。

字符串

type

必须是 oauth

字符串

userInfoEndpointUri

当 Introspection Endpoint 没有返回可以用于用户 ID 的信息时,User Info Endpoint 的 URI 用作回退来获取用户 ID。

字符串

userNameClaim

JWT 身份验证令牌声明的名称、Introspection Endpoint 响应或 User Info Endpoint 响应,用于提取用户 ID。默认为 sub

字符串

validIssuerUri

用于身份验证的令牌签发者的 URI。

字符串

validTokenType

Introspection Endpoint 返回的 token_type 属性的有效值。没有默认值,默认情况下不选中。

字符串

12.2.8. GenericSecretSource 模式参考

使用的: KafkaClientAuthenticationOAuth, KafkaListenerAuthenticationCustom, KafkaListenerAuthenticationOAuth

Expand
属性Description

key

secret 值存储在 OpenShift Secret 中的键。

字符串

secretName

包含 secret 值的 OpenShift Secret 名称。

字符串

12.2.9. CertSecretSource 模式参考

中使用的:client Tls , KafkaAuthorizationKeycloak, KafkaClientAuthenticationOAuth, KafkaListenerAuthenticationOAuth

Expand
属性Description

certificate

Secret 中文件证书的名称。

字符串

secretName

包含证书的 Secret 的名称。

字符串

12.2.10. KafkaListenerAuthenticationCustom schema 参考

使用的: GenericKafkaListener

KafkaListenerAuthenticationCustom schema 属性的完整列表

要配置自定义身份验证,请将 type 属性设置为 custom

自定义身份验证允许使用任何类型的 kafka-supported 验证。

自定义 OAuth 身份验证配置示例

spec:
  kafka:
    config:
      principal.builder.class: SimplePrincipal.class
    listeners:
      - name: oauth-bespoke
        port: 9093
        type: internal
        tls: true
        authentication:
          type: custom
          sasl: true
          listenerConfig:
            oauthbearer.sasl.client.callback.handler.class: client.class
            oauthbearer.sasl.server.callback.handler.class: server.class
            oauthbearer.sasl.login.callback.handler.class: login.class
            oauthbearer.connections.max.reauth.ms: 999999999
            sasl.enabled.mechanisms: oauthbearer
            oauthbearer.sasl.jaas.config: |
              org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required ;
          secrets:
            - name: example
Copy to Clipboard Toggle word wrap

生成协议映射,它使用 sasltls 值来确定要映射到监听程序的协议。

  • SASL = True, TLS = True SASL_SSL
  • SASL = False, TLS = True SSL
  • SASL = True, TLS = False SASL_PLAINTEXT
  • SASL = False, TLS = False PLAINTEXT

12.2.10.1. listenerConfig

使用 监听程序Config 指定的监听程序配置以 listener .name 前缀。<listener_name>-<port>.例如,sasl.enabled.mechanisms 变为 listener.name。<listener_name>-<port&gt; .sasl.enabled.mechanisms.

12.2.10.2. secrets

secret 挂载到 /opt/kafka/custom-authn-secrets/custom-listener- <listener_name>-<port&gt; / <secret_name > 中。

例如,示例配置中的挂载 secret (示例)位于 /opt/kafka/custom-authn-secrets/custom-listener-oauth-bespoke-9093/example

12.2.10.3. 主体构建器

您可以在 Kafka 集群配置中设置自定义主体构建器。但是,主体构建器有以下要求:

  • 镜像上必须存在指定的主体构建器类。在构建您自己的 之前,请检查是否已存在。您需要使用所需类重建 AMQ Streams 镜像。
  • 没有其他监听程序使用 oauth 类型验证。这是因为 OAuth 侦听器将自己的原则构建器附加到 Kafka 配置中。
  • 指定主体构建器与 AMQ Streams 兼容。

自定义主体构建器必须支持对等证书进行身份验证,因为 AMQ Streams 使用它们来管理 Kafka 集群。

注意

Kafka 的默认主体构建器类 支持根据对等证书的名称来构建主体。自定义主体构建器应使用 SSL peer 证书的名称提供类型为 用户的 主体。

以下示例显示了满足 AMQ Streams 的 OAuth 要求的自定义主体构建器。

自定义 OAuth 配置的主要构建器示例

public final class CustomKafkaPrincipalBuilder implements KafkaPrincipalBuilder {

    public KafkaPrincipalBuilder() {}

    @Override
    public KafkaPrincipal build(AuthenticationContext context) {
        if (context instanceof SslAuthenticationContext) {
            SSLSession sslSession = ((SslAuthenticationContext) context).session();
            try {
                return new KafkaPrincipal(
                    KafkaPrincipal.USER_TYPE, sslSession.getPeerPrincipal().getName());
            } catch (SSLPeerUnverifiedException e) {
                throw new IllegalArgumentException("Cannot use an unverified peer for authentication", e);
            }
        }

        // Create your own KafkaPrincipal here
        ...
    }
}
Copy to Clipboard Toggle word wrap

12.2.10.4. KafkaListenerAuthenticationCustom schema 属性

type 属性是一种差异性,用于区分 KafkaListenerAuthenticationCustom 类型来自 KafkaListenerAuthenticationTlsKafkaListenerAuthenticationScramSha512KafkaListenerAuthenticationOAuth。它必须 自定义 类型为 KafkaListenerAuthenticationCustom

Expand
属性Description

listenerConfig

用于特定侦听器的配置。所有值的前缀为 listener.name。<listener_name>

map

SASL

在此侦听器上启用或禁用 SASL。

布尔值

secrets

要挂载到 /opt/kafka/custom-authn-secrets/custom-listener- <listener_name>-<port> / <secret_name > 的 secret。

GenericSecretSource 数组

type

必须为 自定义

字符串

12.2.11. GenericKafkaListenerConfiguration 模式参考

使用的: GenericKafkaListener

GenericKafkaListenerConfiguration schema 属性的完整列表

配置 Kafka 侦听程序。

12.2.11.1. brokerCertChainAndKey

brokerCertChainAndKey 属性仅用于启用了 TLS 加密的监听程序。您可以使用 属性来提供自己的 Kafka 侦听器证书。

启用 TLS 加密的 负载均衡器外部监听程序配置示例

listeners:
  #...
  - name: external
    port: 9094
    type: loadbalancer
    tls: true
    authentication:
      type: tls
    configuration:
      brokerCertChainAndKey:
        secretName: my-secret
        certificate: my-listener-certificate.crt
        key: my-listener-key.key
# ...
Copy to Clipboard Toggle word wrap

12.2.11.2. externalTrafficPolicy

externalTrafficPolicy 属性用于 loadbalancernodeport 侦听程序。在 OpenShift 外部公开 Kafka 时,您可以选择 LocalCluster本地 避免了对其他节点的跃点,并保留客户端 IP,而 群集 则不行。默认为 Cluster

12.2.11.3. loadBalancerSourceRanges

loadBalancerSourceRanges 属性只用于负载均衡器 的监听程序。在 OpenShift 之外公开 Kafka 时,除了使用源范围外,除了标签和注解外,还要自定义创建服务的方式。

为负载均衡器监听器配置的源范围示例

listeners:
  #...
  - name: external
    port: 9094
    type: loadbalancer
    tls: false
    configuration:
      externalTrafficPolicy: Local
      loadBalancerSourceRanges:
        - 10.0.0.0/8
        - 88.208.76.87/32
      # ...
# ...
Copy to Clipboard Toggle word wrap

12.2.11.4. 类

class 属性仅适用于 入口 监听程序。您可以使用类属性配置 Ingress

使用 Ingressnginx-internal类型为 ingress 的外部监听程序示例

listeners:
  #...
  - name: external
    port: 9094
    type: ingress
    tls: true
    configuration:
      class: nginx-internal
    # ...
# ...
Copy to Clipboard Toggle word wrap

12.2.11.5. preferredNodePortAddressType

preferredNodePortAddressType 属性仅适用于 nodeport 侦听程序。

使用监听器配置中的 preferredNodePortAddressType 属性来指定检查的第一个地址类型作为节点地址。例如,如果部署不支持 DNS,或者您只想通过内部 DNS 或 IP 地址公开代理,则此属性很有用。如果找到此类型的地址,则会使用它。如果没有找到首选地址类型,AMQ Streams 以标准优先级顺序进行操作:

  1. ExternalDNS
  2. ExternalIP
  3. Hostname
  4. InternalDNS
  5. InternalIP

使用首选节点端口地址类型配置的外部监听程序示例

listeners:
  #...
  - name: external
    port: 9094
    type: nodeport
    tls: false
    configuration:
      preferredNodePortAddressType: InternalDNS
      # ...
# ...
Copy to Clipboard Toggle word wrap

12.2.11.6. useServiceDnsDomain

useServiceDnsDomain 属性仅与 内部 监听器一起使用。它定义包括集群服务后缀(通常为 .cluster.local)的完全限定的 DNS 名称。将 useServiceDnsDomain 设置为 false 时,会在没有服务后缀的情况下生成广播地址;例如,my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc。使用 useServiceDnsDomain 设置为 true,则公告的地址随服务后缀生成;例如,my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc.cluster.local。默认为 false

配置为使用 Service DNS 域的内部监听程序示例

listeners:
  #...
  - name: plain
    port: 9092
    type: internal
    tls: false
    configuration:
      useServiceDnsDomain: true
      # ...
# ...
Copy to Clipboard Toggle word wrap

如果您的 OpenShift 集群使用不同于 .cluster.local 的不同服务后缀,您可以使用 Cluster Operator 配置中的 KUBERNETES_SERVICE_DNS_DOMAIN 环境变量配置后缀。详情请查看 第 6.2.1 节 “Cluster Operator 配置”

12.2.11.7. GenericKafkaListenerConfiguration schema 属性

Expand
属性Description

brokerCertChainAndKey

引用存放用于此侦听器的证书和私钥对的 Secret。证书可选择性地包含整个链。此字段只能与启用了 TLS 加密的监听程序一起使用。

CertAndKeySecretSource

externalTrafficPolicy

指定服务是否将外部流量路由到节点本地或集群范围端点。集群 可能会导致第二个跃点进入另一个节点,并导致客户端源 IP。本地 避免对 LoadBalancer 和 Nodeport 类型服务的第二个跃点,并保留客户端源 IP (当基础架构支持时)。如果未指定,OpenShift 将使用 Cluster 作为 default.This 字段,只能用于 loadbalancernodeport 类型监听程序。

字符串([本地、Cluster] 之一)

loadBalancerSourceRanges

CIDR 范围列表(例如 10.0.0.0/8130.211.204.1/32),客户端可以连接到负载均衡器类型监听程序。如果平台支持,则通过 loadbalancer 的流量仅限于指定的 CIDR 范围。此字段仅适用于负载平衡器类型服务,如果云提供商不支持该功能,则忽略。此字段只能用于 loadbalancer 类型监听程序。

字符串数组

bootstrap

Bootstrap 配置。

GenericKafkaListenerConfigurationBootstrap

代理(broker)

按代理配置.

GenericKafkaListenerConfigurationBroker 数组

ipFamilyPolicy

指定服务使用的 IP 系列策略。可用选项包括 SingleStackPreferDualStackRequireDualStackSingleStack 用于单个 IP 系列。PreferDualStack 是双堆栈配置集群或单堆栈集群上的一个 IP 系列的两个 IP 系列。RequireDualStack 会失败,除非在配置双栈的集群中有两个 IP 系列。如果未指定,OpenShift 将根据服务类型选择默认值。包括在 OpenShift 1.20 及更新的版本中。

字符串(一个 [RequireDualStack,SingleStack,PreferDualStack])

ipFamilies

指定服务使用的 IP Families。可用的选项有 IPv4IPv6。若未指定,OpenShift 将基于 'ipFamilyPolicy 设置选择默认值。包括在 OpenShift 1.20 及更新的版本中。

字符串(一个或多个 [IPv6, IPv4])数组

createBootstrapService

是否要创建 bootstrap 服务。默认情况下创建 bootstrap 服务(如果未指定),则默认创建。此字段可用于 loadBalancer 类型监听程序。

布尔值

配置定义将要使用的 Ingress 控制器的 Ingress 类。此字段只能用于 入口 类型监听程序。如果没有指定,将使用默认 Ingress 控制器。

字符串

终结器

为为这个监听器创建的 LoadBalancer 类型服务配置的终结器列表。如果平台支持,finalizer service.kubernetes.io/load-balancer-cleanup,以确保将外部负载均衡器与服务一起删除。如需更多信息,请参阅 https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#garbage-collecting-load-balancers。此字段只能用于 loadbalancer 类型监听程序。

字符串数组

maxConnectionCreationRate

在任何时候,我们在此侦听器中允许的最大连接创建率。如果达到限制,则会减慢新连接。

整数

maxConnections

您可以随时在代理中允许此监听程序的最大连接数。如果达到限制,新连接会被阻止。

整数

preferredNodePortAddressType

定义应将哪个地址类型用作节点地址。可用类型有: ExternalDNSExternalIPInternalDNSInternalIPHostname。默认情况下,将按以下顺序使用地址(将使用第一个地址):

  • ExternalDNS
  • ExternalIP
  • InternalDNS
  • InternalIP
  • Hostname

此字段用于选择首选地址类型,首先检查该类型。如果没有找到这个地址类型的地址,则按默认顺序检查其他类型。此字段只能与 nodeport 类型监听程序一起使用。

字符串(一个 [ExternalDNS, ExternalIP, Hostname, InternalIP, InternalDNS])

useServiceDnsDomain

配置是否应使用 OpenShift 服务 DNS 域。如果设置为 true,则生成的地址将包含服务 DNS 域后缀(默认为 .cluster.local,可以使用环境变量 KUBERNETES_SERVICE_DNS_DOMAIN)进行配置。默认值为 false。此字段只能用于 内部 类型监听程序。

布尔值

12.2.12. CertAndKeySecretSource 模式参考

使用的: GenericKafkaListenerConfigurationKafkaClientAuthenticationTls

Expand
属性Description

certificate

Secret 中文件证书的名称。

字符串

key

Secret 中私钥的名称。

字符串

secretName

包含证书的 Secret 的名称。

字符串

使用的: GenericKafkaListenerConfiguration

GenericKafkaListenerConfigurationBootstrap schema 属性的完整列表

nodePort, host, loadBalancerIPannotations 属性相应的代理服务在 GenericKafkaListenerConfigurationBroker schema 中配置。

12.2.13.1. alternativeNames

您可以为 bootstrap 服务指定备选名称。名称添加到代理证书中,并可用于 TLS 主机名验证。alternativeNames 属性适用于所有类型的监听程序。

使用额外 bootstrap 地址配置的 外部路由 监听程序示例

listeners:
  #...
  - name: external
    port: 9094
    type: route
    tls: true
    authentication:
      type: tls
    configuration:
      bootstrap:
        alternativeNames:
          - example.hostname1
          - example.hostname2
# ...
Copy to Clipboard Toggle word wrap

12.2.13.2. 主机

host 属性用于 routeingress 监听程序,以指定 bootstrap 和 per-broker 服务使用的主机名。

主机 属性值对于 入口 监听器配置是必需的,因为 Ingress 控制器不会自动分配任何主机名。确保主机名解析为 Ingress 端点。AMQ Streams 将不会执行请求的主机可用的验证,并正确路由到 Ingress 端点。

入口监听器的主机配置示例

listeners:
  #...
  - name: external
    port: 9094
    type: ingress
    tls: true
    authentication:
      type: tls
    configuration:
      bootstrap:
        host: bootstrap.myingress.com
      brokers:
      - broker: 0
        host: broker-0.myingress.com
      - broker: 1
        host: broker-1.myingress.com
      - broker: 2
        host: broker-2.myingress.com
# ...
Copy to Clipboard Toggle word wrap

默认情况下,路由 监听程序主机由 OpenShift 自动分配。但是,您可以通过指定主机来覆盖分配的路由主机。

AMQ Streams 不执行请求主机可用的验证。您必须保证它们可用,且可以使用。

路由监听程序的主机配置示例

# ...
listeners:
  #...
  - name: external
    port: 9094
    type: route
    tls: true
    authentication:
      type: tls
    configuration:
      bootstrap:
        host: bootstrap.myrouter.com
      brokers:
      - broker: 0
        host: broker-0.myrouter.com
      - broker: 1
        host: broker-1.myrouter.com
      - broker: 2
        host: broker-2.myrouter.com
# ...
Copy to Clipboard Toggle word wrap

12.2.13.3. nodePort

默认情况下,OpenShift 会自动分配用于 bootstrap 和 broker 服务的端口号。您可以通过指定请求的端口号来覆盖为 节点端口 监听的节点端口。

AMQ Streams 在请求的端口上执行任何验证。您必须保证它们可用,且可以使用。

为节点端口配置覆盖的外部监听程序示例

# ...
listeners:
  #...
  - name: external
    port: 9094
    type: nodeport
    tls: true
    authentication:
      type: tls
    configuration:
      bootstrap:
        nodePort: 32100
      brokers:
      - broker: 0
        nodePort: 32000
      - broker: 1
        nodePort: 32001
      - broker: 2
        nodePort: 32002
# ...
Copy to Clipboard Toggle word wrap

12.2.13.4. loadBalancerIP

在创建负载平衡器时,使用 loadBalancerIP 属性来请求特定的 IP 地址。当您需要使用带有特定 IP 地址的负载均衡器时,请使用此属性。如果云供应商不支持该功能,则会忽略 loadBalancerIP 字段。

带有特定负载均衡器 IP 地址请求的 loadbalancer 类型的外部监听程序示例

# ...
listeners:
  #...
  - name: external
    port: 9094
    type: loadbalancer
    tls: true
    authentication:
      type: tls
    configuration:
      bootstrap:
        loadBalancerIP: 172.29.3.10
      brokers:
      - broker: 0
        loadBalancerIP: 172.29.3.1
      - broker: 1
        loadBalancerIP: 172.29.3.2
      - broker: 2
        loadBalancerIP: 172.29.3.3
# ...
Copy to Clipboard Toggle word wrap

12.2.13.5. annotations

使用 annotations 属性向与监听程序相关的 OpenShift 资源添加注解。例如,您可以使用这些注解来检测 DNS 工具,如 外部 DNS,这将自动为负载均衡器服务分配 DNS 名称。

类型为 loadbalancer 的使用 annotations 的一个外部监听程序的示例。

# ...
listeners:
  #...
  - name: external
    port: 9094
    type: loadbalancer
    tls: true
    authentication:
      type: tls
    configuration:
      bootstrap:
        annotations:
          external-dns.alpha.kubernetes.io/hostname: kafka-bootstrap.mydomain.com.
          external-dns.alpha.kubernetes.io/ttl: "60"
      brokers:
      - broker: 0
        annotations:
          external-dns.alpha.kubernetes.io/hostname: kafka-broker-0.mydomain.com.
          external-dns.alpha.kubernetes.io/ttl: "60"
      - broker: 1
        annotations:
          external-dns.alpha.kubernetes.io/hostname: kafka-broker-1.mydomain.com.
          external-dns.alpha.kubernetes.io/ttl: "60"
      - broker: 2
        annotations:
          external-dns.alpha.kubernetes.io/hostname: kafka-broker-2.mydomain.com.
          external-dns.alpha.kubernetes.io/ttl: "60"
# ...
Copy to Clipboard Toggle word wrap

Expand
属性Description

alternativeNames

bootstrap 服务的其他替代名称。其他名称将添加到 TLS 证书的主题备用名称列表中。

字符串数组

主机

bootstrap 主机。此字段将在 Ingress 资源或 Route 资源中使用,以指定所需主机名。此字段只能用于 route (可选)或 ingress (必需)类型监听程序。

字符串

nodePort

bootstrap 服务的节点端口。此字段只能与 nodeport 类型监听程序一起使用。

整数

loadBalancerIP

负载均衡器请求使用此字段中指定的 IP 地址。此功能取决于创建负载均衡器时是否支持指定 loadBalancerIP。如果云供应商不支持 功能,则此字段将被忽略。此字段只能用于 loadbalancer 类型监听程序。

字符串

annotations

将添加到 IngressRouteService 资源中的注解。您可以使用此字段配置 DNS 供应商,如外部 DNS。此字段只能用于 loadbalancernodeportRouteingress 类型监听程序。

map

labels

将添加到 IngressRouteService 资源的标签。此字段只能用于 loadbalancernodeportRouteingress 类型监听程序。

map

使用的: GenericKafkaListenerConfiguration

GenericKafkaListenerConfigurationBroker schema 属性的完整列表

您可以在 GenericKafkaListenerConfigurationBootstrap 模式 中看到 nodePorthostloadBalancerIPannotations 属性配置示例,以配置 bootstrap 服务覆盖。

为代理公告的地址

默认情况下,AMQ Streams 会尝试自动决定 Kafka 集群为其客户端公告的主机名和端口。这在所有情况下都不够,因为运行 AMQ Streams 的基础架构可能无法提供可以访问 Kafka 的适当主机名或端口。

您可以指定代理 ID,并在监听程序的配置属性中自定义公告的主机名和端口。AMQ Streams 会在 Kafka 代理中自动配置广播地址,并将其添加到代理证书中,以便它可用于 TLS 主机名验证。覆盖公告的主机和端口可用于所有类型的监听程序。

为公告的地址配置了覆盖的 外部路由 监听程序示例

listeners:
  #...
  - name: external
    port: 9094
    type: route
    tls: true
    authentication:
      type: tls
    configuration:
      brokers:
      - broker: 0
        advertisedHost: example.hostname.0
        advertisedPort: 12340
      - broker: 1
        advertisedHost: example.hostname.1
        advertisedPort: 12341
      - broker: 2
        advertisedHost: example.hostname.2
        advertisedPort: 12342
# ...
Copy to Clipboard Toggle word wrap

Expand
属性Description

broker

kafka 代理(broker 标识符)的 ID。代理 ID 从 0 开始,对应于代理副本数。

整数

advertisedHost

代理的 advertised.brokers 中使用的主机名。

字符串

advertisedPort

代理的 advertised.brokers 中使用的端口号。

整数

主机

代理主机。此字段将在 Ingress 资源或 Route 资源中使用,以指定所需主机名。此字段只能用于 route (可选)或 ingress (必需)类型监听程序。

字符串

nodePort

每个broker 服务的节点端口。此字段只能与 nodeport 类型监听程序一起使用。

整数

loadBalancerIP

负载均衡器请求使用此字段中指定的 IP 地址。此功能取决于创建负载均衡器时是否支持指定 loadBalancerIP。如果云供应商不支持 功能,则此字段将被忽略。此字段只能用于 loadbalancer 类型监听程序。

字符串

annotations

将添加到 IngressService 资源中的注解。您可以使用此字段配置 DNS 供应商,如外部 DNS。此字段只能用于 loadbalancernodeportingress 类型监听程序。

map

labels

将添加到 IngressRouteService 资源的标签。此字段只能用于 loadbalancernodeportRouteingress 类型监听程序。

map

12.2.15. EphemeralStorage schema 参考

使用的: JbodStorage, KafkaClusterSpec, ZookeeperClusterSpec

type 属性是一种分ator,用于区分使用 PersistentClaimStorageEphemeralStorage 类型。它必须具有类型为 EphemeralStorage 的值 临时 的值。

Expand
属性Description

id

存储识别号.这只适用于在存储类型 'jbod' 中定义的存储卷。

整数

sizeLimit

当 type=ephemeral 时,定义这个 EmptyDir 卷所需的本地存储总量(例如 1Gi)。

字符串

type

必须 是临时的

字符串

12.2.16. PersistentClaimStorage schema 参考

使用的: JbodStorage, KafkaClusterSpec, ZookeeperClusterSpec

type 属性是一个差异性,用于区分使用来自 EphemeralStoragePersistentClaimStorage 类型。它必须具有类型为 PersistentClaimStoragepersistent-claim 值。

Expand
属性Description

type

必须为 persistent-claim

字符串

size

当 type=persistent-claim 时,定义持久性卷声明的大小(例如 1Gi)。type=persistent-claim 时必需。

字符串

selector

指定要使用的特定持久性卷。它包含代表选择此类卷的标签的 key:value 对。

map

deleteClaim

指定在集群没有部署时是否必须删除持久性卷声明。

布尔值

用于动态卷分配的存储类。

字符串

id

存储识别号.这只适用于在存储类型 'jbod' 中定义的存储卷。

整数

overrides

覆盖单个代理。overrides 字段允许为不同的代理指定不同的配置。

PersistentClaimStorageOverride 数组

12.2.17. PersistentClaimStorageOverride 模式参考

使用的: PersistentClaimStorage

Expand
属性Description

用于这个代理的动态卷分配的存储类。

字符串

broker

kafka 代理(broker 标识符)的 ID。

整数

12.2.18. JbodStorage schema 参考

使用的: KafkaClusterSpec

type 属性是一种分ator,用于区分 JbodStorage 类型与 EphemeralStorage ( PersistentClaimStorage )。它必须具有类型 JbodStorage 的值 jbod

Expand
属性Description

type

必须为 jbod

字符串

卷列表作为代表 JBOD 存储阵列的 Storage 对象。

EphemeralStorage, PersistentClaimStorage 数组

12.2.19. KafkaAuthorizationSimple 模式参考

使用的: KafkaClusterSpec

KafkaAuthorizationSimple schema 属性的完整列表

AMQ Streams 中的简单授权使用 AclAuthorizer 插件,即 Apache Kafka 提供的默认访问控制列表(ACL)授权插件。通过 ACL,您可以定义哪些用户有权访问在粒度级别上哪些资源。

Kafka 自定义资源配置为使用简单授权。将 authorization 部分中的 type 属性设置为 simple 的值,并配置超级用户列表。

KafkaUser 配置访问规则,如 ACLRule 模式引用 中所述。

12.2.19.1. 超级用户

用户主体列表被视为超级用户,以便在不查询 ACL 规则的情况下始终允许它们。如需更多信息,请参阅 Kafka 授权

简单的授权配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
  namespace: myproject
spec:
  kafka:
    # ...
    authorization:
      type: simple
      superUsers:
        - CN=client_1
        - user_2
        - CN=client_3
    # ...
Copy to Clipboard Toggle word wrap

注意

Kafka.spec.kafka 中的 config 配置属性中的 super.user 配置选项会被忽略。改为指定 授权 属性中的超级用户。如需更多信息,请参阅 Kafka 代理配置

12.2.19.2. KafkaAuthorizationSimple 模式属性

type 属性是一种差异性,用于区分 KafkaAuthorizationSimple type from KafkaAuthorizationOpa, KafkaAuthorizationKeycloak, KafkaAuthorizationCustom。它必须使 type KafkaAuthorizationSimple 的值 很简单

Expand
属性Description

type

必须 非常简单

字符串

superUsers

超级用户列表。应包含用户主体列表,其应获得无限访问权限。

字符串数组

12.2.20. KafkaAuthorizationOpa 模式参考

使用的: KafkaClusterSpec

KafkaAuthorizationOpa schema 属性的完整列表

要使用 Open Policy Agent 授权,将 authorization 部分中的 type 属性设置为 opa 的值,并根据需要配置 OPA 属性。AMQ Streams 将 Open Policy Agent 插件作为授权器使用 Open Policy Agent 插件。有关输入数据和策略示例的更多信息,请参阅 适用于 Kafka 授权的 Open Policy Agent 插件

12.2.20.1. url

用于连接到 Open Policy Agent 服务器的 URL。URL 必须包括由授权器查询的策略。必需。

12.2.20.2. allowOnError

定义在授权器无法查询 Open Policy Agent 时是否应允许或拒绝 Kafka 客户端,例如临时不可用时。默认值为 false - 所有操作都将被拒绝。

12.2.20.3. initialCacheCapacity

授权者用来查询开放策略代理的本地缓存的初始容量,以避免为每个请求查询 Open Policy Agent。默认值为 5000

12.2.20.4. maximumCacheSize

授权者使用的本地缓存的最大容量以避免为每个请求查询 Open Policy Agent。默认为 50000

12.2.20.5. expireAfterMs

记录的过期时间保存在本地缓存中,以避免为每个请求查询 Open Policy Agent。定义从 Open Policy Agent 服务器重新加载缓存的授权决策的频率。以毫秒为单位。默认为 3600000 毫秒(1 小时)。

12.2.20.6. 超级用户

用户主体列表被视为超级用户,以便在不查询开放策略代理策略的情况下始终允许它们。如需更多信息,请参阅 Kafka 授权

Open Policy Agent 授权器配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
  namespace: myproject
spec:
  kafka:
    # ...
    authorization:
      type: opa
      url: http://opa:8181/v1/data/kafka/allow
      allowOnError: false
      initialCacheCapacity: 1000
      maximumCacheSize: 10000
      expireAfterMs: 60000
      superUsers:
        - CN=fred
        - sam
        - CN=edward
    # ...
Copy to Clipboard Toggle word wrap

12.2.20.7. KafkaAuthorizationOpa schema 属性

type 属性是一种差异性,用于区分在 KafkaAuthorizationSimple, KafkaAuthorizationKeycloak, KafkaAuthorizationKeycloak、KafkaAuthorizationCustom 中的 KafkaAuthorizationOpa 类型。对于类型 KafkaAuthorizationOpa,它需要是值 opa

Expand
属性Description

type

必须为 opa

字符串

url

用于连接到 Open Policy Agent 服务器的 URL。URL 必须包括由授权器查询的策略。这个选项是必需的。

字符串

allowOnError

定义当授权器无法查询 Open Policy Agent 时(例如,临时不可用)应允许或拒绝 Kafka 客户端。默认值为 false - 所有操作都将被拒绝。

布尔值

initialCacheCapacity

授权者使用的本地缓存的初始容量,以避免为每个请求默认查询 Open Policy Agent 变为 5000

整数

maximumCacheSize

授权者使用的本地缓存的最大容量以避免为每个请求查询 Open Policy Agent。默认为 50000

整数

expireAfterMs

记录的过期时间保存在本地缓存中,以避免为每个请求查询 Open Policy Agent。定义从 Open Policy Agent 服务器重新加载缓存的授权决策的频率。以毫秒为单位。默认为 3600000

整数

superUsers

超级用户列表,特别是具有无限访问权限的用户主体列表。

字符串数组

enableMetrics

定义 Open Policy Agent 授权器插件是否应提供指标。默认值为 false

布尔值

12.2.21. KafkaAuthorizationKeycloak 模式参考

使用的: KafkaClusterSpec

type 属性是一种差异性,用于区分在 KafkaAuthorizationKeycloak 类型中的 KafkaAuthorizationSimple, KafkaAuthorizationOpa, KafkaAuthorizationCustom。对于类型 KafkaAuthorizationKeycloak,它需要有值 keycloak

Expand
属性Description

type

必须是 keycloak

字符串

clientId

Kafka 客户端可以用来向 OAuth 服务器进行身份验证并使用令牌端点 URI 的 OAuth 客户端 ID。

字符串

tokenEndpointUri

授权服务器令牌端点 URI。

字符串

tlsTrustedCertificates

TLS 与 OAuth 服务器连接的可信证书。

CertSecretSource 数组

disableTlsHostnameVerification

启用或禁用 TLS 主机名验证。默认值为 false

布尔值

delegateToKafkaAcls

如果红帽单点登录授权服务策略 DENIED,是否应该授权决定为 'Simple' 授权程序。默认值为 false

布尔值

grantsRefreshPeriodSeconds

连续两次授权刷新运行的时间(以秒为单位)。默认值为 60。

整数

grantsRefreshPoolSize

用于刷新活跃会话的线程数量。线程数越多,并行,因此作业完成速度越快。但是,使用更多线程可以在授权服务器上放置负载。默认值为 5。

整数

superUsers

超级用户列表。应包含用户主体列表,其应获得无限访问权限。

字符串数组

connectTimeoutSeconds

连接授权服务器时出现连接超时(以秒为单位)。如果没有设置,则有效连接超时为 60 秒。

整数

readTimeoutSeconds

连接到授权服务器时读取超时(以秒为单位)。如果没有设置,则有效读取超时为 60 秒。

整数

12.2.22. KafkaAuthorizationCustom schema 参考

使用的: KafkaClusterSpec

KafkaAuthorizationCustom schema 属性的完整列表

要在 AMQ Streams 中使用自定义授权,您可以配置自己的 Authorizer 插件来定义访问控制列表(ACL)。

通过 ACL,您可以定义哪些用户有权访问在粒度级别上哪些资源。

Kafka 自定义资源配置为使用自定义授权。将 authorization 部分中的 type 属性设置为 custom 的值,再设置以下属性:

重要

自定义授权器必须实施 org.apache.kafka.server.authorizer.Authorizer 接口,并使用 super.users 配置属性支持 super.users 的配置。

12.2.22.1. authorizerClass

(必需)实现 org.apache.kafka.server.authorizer.Authorizer 接口的 Java 类,以支持自定义 ACL。

12.2.22.2. 超级用户

用户主体列表被视为超级用户,以便在不查询 ACL 规则的情况下始终允许它们。如需更多信息,请参阅 Kafka 授权

您可以使用 Kafka.spec.kafka.config 添加初始化自定义授权器的配置。

Kafka.spec下的自定义授权配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
  namespace: myproject
spec:
  kafka:
    # ...
    authorization:
      type: custom
      authorizerClass: io.mycompany.CustomAuthorizer
      superUsers:
        - CN=client_1
        - user_2
        - CN=client_3
    # ...
    config:
      authorization.custom.property1=value1
      authorization.custom.property2=value2
    # ...
Copy to Clipboard Toggle word wrap

除了 Kafka 自定义资源配置外,包含自定义授权器类及其依赖项的 JAR 文件必须在 Kafka 代理的类路径上可用。

AMQ Streams Maven 构建过程提供了将自定义第三方库添加到生成的 Kafka 代理容器镜像的机制,方法是将它们添加为 docker-images/kafka/kafka-thirdparty-libs 目录中的 pom.xml 文件中的依赖项。目录包含不同 Kafka 版本的不同文件夹。选择相应的文件夹。在修改 pom.xml 文件前,第三方库必须在 Maven 存储库中可用,且 Maven 存储库必须可以被 AMQ Streams 构建过程访问。

注意

Kafka.spec.kafka 中的 config 配置属性中的 super.user 配置选项会被忽略。改为指定 授权 属性中的超级用户。如需更多信息,请参阅 Kafka 代理配置

在使用 oauth 身份验证和配置 groupsClaim 配置属性时,自定义授权可以在身份验证期间使用从 JWT 令牌提取的组成员资格信息。组在 authorize ()调用过程中位于 OAuthKafkaPrincipal 对象上,如下所示:

    public List<AuthorizationResult> authorize(AuthorizableRequestContext requestContext, List<Action> actions) {

        KafkaPrincipal principal = requestContext.principal();
        if (principal instanceof OAuthKafkaPrincipal) {
            OAuthKafkaPrincipal p = (OAuthKafkaPrincipal) principal;

            for (String group: p.getGroups()) {
                System.out.println("Group: " + group);
            }
        }
    }
Copy to Clipboard Toggle word wrap

12.2.22.3. KafkaAuthorizationCustom schema 属性

type 属性是一种差异性,用于区分在 KafkaAuthorizationSimpleKafkaAuthorizationOpaKafkaAuthorizationKeycloak 中使用 KafkaAuthorizationKeycloak 的 KafkaAuthorizationCustom 类型。它必须 自定义 类型为 KafkaAuthorizationCustom 的值。

Expand
属性Description

type

必须为 自定义

字符串

authorizerClass

授权实施类必须在 classpath 中提供。

字符串

superUsers

超级用户列表,它们是具有无限访问权限的用户主体。

字符串数组

supportsAdminApi

指明自定义授权器是否支持使用 Kafka Admin API 管理 ACL。默认值为 false

布尔值

12.2.23. 机架 架构参考

使用的: KafkaClusterSpec, KafkaConnectSpec, KafkaMirrorMaker2Spec

Rack schema 属性的完整列表

机架 选项配置机架意识。机架 可以代表一个可用性区域、数据中心或数据中心中的实际机架。机架 通过 topologyKey 配置。topologyKey 标识 OpenShift 节点上的标签,其包含其值中的拓扑名称。这种标签的示例是 topology.kubernetes.io/zone (或较旧 OpenShift 版本的 failure-domain.beta.kubernetes.io/zone ),其中包含 OpenShift 节点运行的可用区的名称。您可以将 Kafka 集群配置为了解其运行的 机架,并启用额外的功能,如在不同机架之间进行分散分区或消耗来自最接近的副本的消息。

如需有关 OpenShift 节点标签的更多信息,请参阅 Well -Known Labels、An Annotations 和 Taints。请查阅 OpenShift 管理员,了解代表部署该节点的区域或机架的节点标签。

12.2.23.1. 在机架之间分散分区副本

配置机架感知后,AMQ Streams 会为每个 Kafka 代理设置 broker.rack 配置。broker.rack 配置为每个代理分配一个机架 ID。配置 broker.rack 时,Kafka 代理将尽可能将分区副本分散到不同的机架中。当副本分散到多个机架时,多个副本可以同时出现故障的概率会低于在同一机架中。分散副本提高了弹性,对于可用性和可靠性至关重要。要在 Kafka 中启用机架感知,请将 rack 选项添加到 Kafka 自定义资源的 .spec.kafka 部分,如下例所示。

Kafka 的 机架 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
    rack:
      topologyKey: topology.kubernetes.io/zone
    # ...
Copy to Clipboard Toggle word wrap

注意

在删除或重启 pod 时,运行代理的 机架 在某些情况下可能会改变。因此,在不同机架中运行的副本可能会共享相同的机架。使用 Cruise Control 和 KafkaRebalance 资源与 RackAwareGoal,以确保副本在不同的机架之间保持分布。

当在 Kafka 自定义资源中启用机架感知时,AMQ Streams 会自动添加 OpenShift preferredDuringSchedulingIgnoredDuringExecution 关联性规则,以在不同的机架之间分发 Kafka 代理。但是,首选 规则不能保证代理会被分散。根据您的 OpenShift 和 Kafka 配置,您应该添加额外的 关联性规则,或为 ZooKeeper 和 Kafka 配置 topologySpreadConstraints,以确保节点尽可能正确分布。更多信息请参阅 第 2.9 节 “配置 pod 调度”

12.2.23.2. 消耗来自最接近的副本的消息

机架意识还可用于消费者从最接近的副本中获取数据。当 Kafka 集群跨越多个数据中心时,这可以降低网络中的负载,并可在公共云中运行 Kafka 时降低成本。但是,这可能会增加延迟。

为了能使用最接近的副本,必须在 Kafka 集群中配置机架意识,并且必须启用 RackAwareReplicaSelector。副本选择器插件提供逻辑,使客户端能够从最接近的副本消耗。默认实现使用 LeaderSelector 来始终为客户端选择领导副本。为 replica.selector.class 指定 RackAwareReplicaSelector 来从默认的实现中切换。

带有启用副本感知选择器的 rack 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
    rack:
      topologyKey: topology.kubernetes.io/zone
    config:
      # ...
      replica.selector.class: org.apache.kafka.common.replica.RackAwareReplicaSelector
    # ...
Copy to Clipboard Toggle word wrap

除了 Kafka 代理配置外,您还需要在消费者中指定 client.rack 选项。client.rack 选项应该指定运行使用者的 机架 IDRackAwareReplicaSelector 关联匹配的 broker.rackclient.rack ID,以查找最接近的副本并使用它。如果同一机架中有多个副本,RackAwareReplicaSelector 始终选择最新的副本。如果没有指定机架 ID,或者找不到具有相同机架 ID 的副本,它将回退到领导副本。

图 12.1. 显示在同一可用区中消耗的副本的客户端示例

您还可以配置 Kafka Connect 和 MirrorMaker 2.0,以便连接器使用最接近的副本的消息。您可在 KafkaConnectKafkaMirrorMaker2 自定义资源中启用机架意识。该配置不设置关联性规则,但您也可以配置 关联性拓扑 规则。更多信息请参阅 第 2.9 节 “配置 pod 调度”

使用 AMQ Streams 部署 Kafka Connect 时,您可以使用 KafkaConnect 自定义资源中的 rack 部分自动配置 client.rack 选项。

Kafka Connect 的 机架 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
# ...
spec:
  # ...
  rack:
    topologyKey: topology.kubernetes.io/zone
  # ...
Copy to Clipboard Toggle word wrap

使用 AMQ Streams 部署 MirrorMaker 2 时,您可以使用 KafkaMirrorMaker2 自定义资源中的 rack 部分自动配置 client.rack 选项。

MirrorMaker 2.0 的 rack 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker2
# ...
spec:
  # ...
  rack:
    topologyKey: topology.kubernetes.io/zone
  # ...
Copy to Clipboard Toggle word wrap

12.2.23.3. 机架 架构属性

Expand
属性Description

topologyKey

与分配给 OpenShift 集群节点的标签匹配的键。标签的值用于设置代理的 broker.rack 配置,以及 Kafka Connect 或 MirrorMaker 2.0 的 client.rack 配置。

字符串

12.2.24. 探测 模式参考

使用的: CruiseControlSpec, EntityTopicOperatorSpec, EntityUserOperatorSpec, KafkaBridgeSpec, KafkaClusterSpec, KafkaConnectSpec, KafkaExporterSpec, KafkaMirrorMaker2Spec, KafkaMirrorMakerSpec, TlsSidecar, ZookeeperClusterSpec

Expand
属性Description

failureThreshold

在成功后,探测的最小连续故障会被视为失败。默认为 3。最小值为 1。

整数

initialDelaySeconds

第一次检查健康检查前的初始延迟。默认为 15 秒。最小值为 0。

整数

periodSeconds

执行探测的频率(以秒为单位)。默认为 10 秒。最小值为 1。

整数

successThreshold

在失败后,探测的最小连续成功才被视为成功。默认为 1。对于存活度,必须为 1。最小值为 1。

整数

timeoutSeconds

每次尝试健康检查的超时时间。默认为 5 秒。最小值为 1。

整数

12.2.25. JvmOptions 模式参考

使用的: CruiseControlSpec, EntityTopicOperatorSpec, EntityUserOperatorSpec, KafkaBridgeSpec, KafkaConnectSpec, KafkaConnectSpec, KafkaMirrorMaker2Spec, KafkaMirrorMakerSpec, ZookeeperClusterSpec

Expand
属性Description

-XX

JVM 的 -XX 选项映射。

map

-Xms

JVM 的 -Xms 选项。

字符串

-Xmx

JVM 的 -Xmx 选项。

字符串

gcLoggingEnabled

指定是否启用 Garbage Collection 日志记录。默认值为 false。

布尔值

javaSystemProperties

使用 -D 选项传递给 JVM 的其他系统属性映射。

SystemProperty 数组

12.2.26. SystemProperty 模式参考

used in: JvmOptions

Expand
属性Description

name

系统属性名称。

字符串

value

系统属性值。

字符串

12.2.27. KafkaJmxOptions 模式参考

使用的: KafkaClusterSpec, KafkaConnectSpec, KafkaMirrorMaker2Spec, ZookeeperClusterSpec

KafkaJmxOptions schema 属性的完整列表

配置 JMX 连接选项。

通过连接到端口 9999,从 Kafka 代理、ZooKeeper 节点、Kafka Connect 和 MirrorMaker 2.0. 获取 JMX 指标。使用 jmxOptions 属性配置受密码保护或未受保护的 JMX 端口。使用密码保护可防止未授权的 pod 访问端口。

然后,您可以获取有关组件的指标。

例如,对于每个 Kafka 代理,您可以从客户端获取字节/秒使用量数据,或者代理网络的请求率。

若要为 JMX 端口启用安全性,请将 身份验证 字段中的 type 参数设置为 password

Kafka 代理和 ZooKeeper 节点的受密码保护的 JMX 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
    jmxOptions:
      authentication:
        type: "password"
    # ...
  zookeeper:
    # ...
    jmxOptions:
      authentication:
        type: "password"
    #...
Copy to Clipboard Toggle word wrap

然后,您可以通过指定您要寻址的代理,将 pod 部署到集群中,并使用无头服务获取 JMX 指标。

例如,从代理 0 中获取 JMX 指标,您可以指定:

"CLUSTER-NAME-kafka-0.CLUSTER-NAME-kafka-brokers"
Copy to Clipboard Toggle word wrap

CLUSTER-NAME-kafka-0 是代理 pod 的名称,CLUSTER-NAME-kafka-brokers 是无头服务的名称,以返回代理 pod 的 IP。

如果 JMX 端口设有保护,您可以通过从 Pod 部署中的 JMX Secret 中引用它们来获取用户名和密码。

对于未受保护的 JMX 端口,请使用空对象 {} 打开无头服务的 JMX 端口。您部署 pod 并通过与受保护端口相同的方式获取指标,但在这种情况下,任何 pod 可以从 JMX 端口读取。

Kafka 代理和 ZooKeeper 节点的开放端口 JMX 示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
    jmxOptions: {}
    # ...
  zookeeper:
    # ...
    jmxOptions: {}
    # ...
Copy to Clipboard Toggle word wrap

12.2.27.1. KafkaJmxOptions 模式属性

Expand
属性Description

身份验证

用于连接到 JMX 端口的身份验证配置。类型取决于给定对象中的 authentication.type 属性的值,它必须是 [password] 中的一个。

KafkaJmxAuthenticationPassword

12.2.28. KafkaJmxAuthenticationPassword schema 参考

使用的: KafkaJmxOptions

type 属性是一种分ator,用于区分使用其他子类型中的 KafkaJmxAuthenticationPassword 类型,可在以后添加。对于类型 KafkaJmxAuthenticationPassword,它需要是值 password

Expand
属性Description

type

必须为 密码

字符串

12.2.29. JmxPrometheusExporterMetrics 模式参考

使用的: CruiseControlSpec, KafkaClusterSpec, KafkaConnectSpec, KafkaMirrorMaker2Spec, KafkaMirrorMakerSpec, ZookeeperClusterSpec

type 属性是一个差异性符,用于区分来自其他子类型的 JmxPrometheusExporterMetrics 类型,可在以后添加它。对于类型 JmxPrometheusExporterMetrics,它需要有值 jmxPrometheusExporter

Expand
属性Description

type

必须为 jmxPrometheusExporter

字符串

valueFrom

存储 Prometheus JMX Exporter 配置的 ConfigMap 条目。有关此配置结构的详情,请查看 Prometheus JMX Exporter

ExternalConfigurationReference

12.2.30. ExternalConfigurationReference 模式参考

使用的: ExternalLoggingJmxPrometheusExporterMetrics

Expand
属性Description

configMapKeyRef

对包含配置的 ConfigMap 中的键引用。如需更多信息,请参阅 core/v1 configmapkeyselector 的外部文档

ConfigMapKeySelector

12.2.31. InlineLogging 模式参考

使用的: CruiseControlSpec, EntityTopicOperatorSpec, EntityUserOperatorSpec, KafkaBridgeSpec, KafkaConnectSpec, KafkaConnectSpec, KafkaMirrorMaker2Spec, KafkaMirrorMakerSpec, ZookeeperClusterSpec

type 属性是一种分辨符,用于区分来自 ExternalLoggingInlineLogging 类型。它必须具有类型为 InlineLogging 的值 内联 值。

Expand
属性Description

type

必须是 inline

字符串

日志记录器

从日志记录器名称到日志记录器级别的映射。

map

12.2.32. ExternalLogging 模式参考

使用的: CruiseControlSpec, EntityTopicOperatorSpec, EntityUserOperatorSpec, KafkaBridgeSpec, KafkaConnectSpec, KafkaConnectSpec, KafkaMirrorMaker2Spec, KafkaMirrorMakerSpec, ZookeeperClusterSpec

type 属性是一种分辨符,用于区分来自 InlineLoggingExternalLogging 类型。对于类型 ExternalLogging,它需要的值是 external

Expand
属性Description

type

必须是 外部

字符串

valueFrom

存储日志记录配置的 ConfigMap 条目。

ExternalConfigurationReference

12.2.33. KafkaClusterTemplate 模式参考

使用的: KafkaClusterSpec

Expand
属性Description

statefulset

Kafka StatefulSet 的模板。

StatefulSetTemplate

Pod

Kafka Pod 模板。

PodTemplate

bootstrapService

Kafka bootstrap Service 的模板。

InternalServiceTemplate

brokersService

Kafka 代理服务 的模板

InternalServiceTemplate

externalBootstrapService

Kafka 外部 bootstrap Service 模板。

resourcetemplate

perPodService

用于 OpenShift 外部的 Kafka 每个 pod 服务 模板。

resourcetemplate

externalBootstrapRoute

Kafka 外部 bootstrap 路由的模板

resourcetemplate

perPodRoute

用于从 OpenShift 外部访问的 Kafka 每个 pod 路由 模板。

resourcetemplate

externalBootstrapIngress

Kafka 外部 bootstrap Ingress 模板。

resourcetemplate

perPodIngress

用于从 OpenShift 外部访问的 Kafka 每个 pod 入口 模板。

resourcetemplate

persistentVolumeClaim

所有 Kafka PersistentVolumeClaim 的模板

resourcetemplate

podDisruptionBudget

Kafka PodDisruptionBudget 模板。

PodDisruptionBudgetTemplate

kafkaContainer

Kafka 代理容器的模板。

ContainerTemplate

initContainer

Kafka init 容器的模板。

ContainerTemplate

clusterCaCert

带有 Kafka 集群证书公钥的 Secret 模板。

resourcetemplate

serviceAccount

Kafka 服务帐户的模板。

resourcetemplate

jmxSecret

Kafka 集群 JMX 身份验证的 Secret 模板。

resourcetemplate

clusterRoleBinding

Kafka ClusterRoleBinding 的模板。

resourcetemplate

podSet

Kafka StrimziPodSet 资源的模板。

resourcetemplate

12.2.34. StatefulSetTemplate 模式参考

使用的: KafkaClusterTemplate, ZookeeperClusterTemplate

Expand
属性Description

metadata

应用到资源的元数据。

MetadataTemplate

podManagementPolicy

PodManagementPolicy,用于此 StatefulSet。有效值为 ParallelOrderedReady。默认为 Parallel

string (one of [OrderedReady, Parallel])

12.2.35. MetadataTemplate 模式参考

使用的: BuildConfigTemplateDeploymentTemplateInternalServiceTemplatePodDisruptionBudgetTemplatePodTemplateResourceTemplate、StatefulTemplate、StatefulTemplate

完整 元数据模板 模式属性列表

LabelsAnnotations 用于识别和组织资源,并在 metadata 属性中配置。

例如:

# ...
template:
  pod:
    metadata:
      labels:
        label1: value1
        label2: value2
      annotations:
        annotation1: value1
        annotation2: value2
# ...
Copy to Clipboard Toggle word wrap

labelsannotations 字段可以包含没有保留字符串 strimzi.io 的任何标签或注解。包含 strimzi.io 的标签和注解由 AMQ Streams 内部使用,且无法配置。

12.2.35.1. 元数据模板 架构属性

Expand
属性Description

labels

添加到资源模板的标签。可以应用到不同的资源,如 StatefulSetsDeploymentPodServices

map

annotations

添加到资源模板中的注解。可以应用到不同的资源,如 StatefulSetsDeploymentPodServices

map

12.2.36. PodTemplate 模式参考

用于:CruiseControlTemplate, EntityOperatorTemplate, KafkaBridgeTemplate, KafkaClusterTemplate, KafkaConnectTemplate, KafkaExporterTemplate, KafkaMirrorMakerTemplate, ZookeeperClusterTemplate

PodTemplate 模式属性的完整列表

配置 Kafka pod 模板。

PodTemplate 配置示例

# ...
template:
  pod:
    metadata:
      labels:
        label1: value1
      annotations:
        anno1: value1
    imagePullSecrets:
      - name: my-docker-credentials
    securityContext:
      runAsUser: 1000001
      fsGroup: 0
    terminationGracePeriodSeconds: 120
# ...
Copy to Clipboard Toggle word wrap

12.2.36.1. hostAliases

使用 hostAliases 属性来指定主机和 IP 地址列表,这些地址被注入到 pod 的 /etc/hosts 文件中。

当用户也请求集群外的连接时,这个配置对 Kafka Connect 或 MirrorMaker 特别有用。

hostAliases 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
#...
spec:
  # ...
  template:
    pod:
      hostAliases:
      - ip: "192.168.1.86"
        hostnames:
        - "my-host-1"
        - "my-host-2"
      #...
Copy to Clipboard Toggle word wrap

12.2.36.2. PodTemplate 模式属性

Expand
属性Description

metadata

应用到资源的元数据。

MetadataTemplate

imagePullSecrets

对同一命名空间中的 secret 的引用列表,用于拉取此 Pod 使用的任何镜像。当指定 Cluster Operator 中的 STRIMZI_IMAGE_PULL_SECRETS 环境变量和 imagePullSecrets 选项时,只使用 imagePullSecrets 变量,并将忽略 STRIMZI_IMAGE_PULL_SECRETS 变量。如需更多信息,请参阅 core/v1 localobjectreference 的外部文档

LocalObjectReference 数组

securityContext

配置 pod 级别的安全属性和通用容器设置。如需更多信息,请参阅 core/v1 podsecuritycontext 的外部文档

PodSecurityContext

terminationGracePeriodSeconds

宽限期是 Pod 中运行的进程发送终止信号后的持续时间(以秒为单位),以及进程被强制停止的时间(使用 kill 信号)。将这个值设置为比您的进程预期的清理时间长。值必须是非负的整数。零值表示立即删除。您可能需要为非常大的 Kafka 集群增加宽限期,以便 Kafka 代理有足够的时间将其工作传输至另一个代理,然后再被终止。默认为 30 秒。

整数

关联性

pod 的关联性规则。如需更多信息,请参阅 core/v1 关联性的外部文档

关联性

容限(tolerations)

pod 的容限。如需更多信息,请参阅 core/v1 容限的外部文档

容限 数组

priorityClassName

用于为 pod 分配优先级的优先级类的名称。有关优先级类的更多信息,请参阅 Pod 优先级和抢占

字符串

schedulerName

用于分配此 Pod 的调度程序的名称。如果没有指定,将使用默认调度程序。

字符串

hostAliases

pod 的 HostAliases。hostAliases 是主机和 IP 的可选列表,在指定时将注入到 Pod 的主机文件中。如需更多信息,请参阅 core/v1 hostalias 的外部文档

HostAlias 数组

tmpDirSizeLimit

定义临时 EmptyDir 卷(/tmp)所需的本地存储总量(例如 1Gi)。默认值为 5Mi

字符串

enableServiceLinks

指明有关服务的信息是否应该注入到 Pod 的环境变量中。

布尔值

topologySpreadConstraints

pod 的拓扑分布限制。如需更多信息,请参阅 core/v1 topologyspreadconstraint 的外部文档

TopologySpreadConstraint 数组

12.2.37. InternalServiceTemplate 模式参考

使用的: CruiseControlTemplate, KafkaBridgeTemplate, KafkaClusterTemplate, KafkaConnectTemplate, ZookeeperClusterTemplate

Expand
属性Description

metadata

应用到资源的元数据。

MetadataTemplate

ipFamilyPolicy

指定服务使用的 IP 系列策略。可用选项包括 SingleStackPreferDualStackRequireDualStackSingleStack 用于单个 IP 系列。PreferDualStack 是双堆栈配置集群或单堆栈集群上的一个 IP 系列的两个 IP 系列。RequireDualStack 会失败,除非在配置双栈的集群中有两个 IP 系列。如果未指定,OpenShift 将根据服务类型选择默认值。包括在 OpenShift 1.20 及更新的版本中。

字符串(一个 [RequireDualStack,SingleStack,PreferDualStack])

ipFamilies

指定服务使用的 IP Families。可用的选项有 IPv4IPv6。若未指定,OpenShift 将基于 'ipFamilyPolicy 设置选择默认值。包括在 OpenShift 1.20 及更新的版本中。

字符串(一个或多个 [IPv6, IPv4])数组

12.2.38. resourcetemplate 模式参考

用于:CruiseControlTemplate, EntityOperatorTemplate, KafkaBridgeTemplate, KafkaClusterTemplate, KafkaConnectTemplate, KafkaExporterTemplate, KafkaMirrorMakerTemplate, KafkaUserTemplate, ZookeeperClusterTemplate

Expand
属性Description

metadata

应用到资源的元数据。

MetadataTemplate

12.2.39. PodDisruptionBudgetTemplate 模式参考

使用的: CruiseControlTemplate, KafkaBridgeTemplate, KafkaClusterTemplate, KafkaConnectTemplate, KafkaMirrorMakerTemplate, ZookeeperClusterTemplate

PodDisruptionBudgetTemplate 模式属性的完整列表

AMQ Streams 为每个新的 StatefulSetDeployment 创建一个 PodDisruptionBudget。默认情况下,pod 中断预算只允许一个 pod 在给定时间不可用。您可以通过更改 maxUnavailable 属性的默认值来增加允许的不可用 pod 量。

PodDisruptionBudget 模板示例

# ...
template:
  podDisruptionBudget:
    metadata:
      labels:
        key1: label1
        key2: label2
      annotations:
        key1: label1
        key2: label2
    maxUnavailable: 1
# ...
Copy to Clipboard Toggle word wrap

12.2.39.1. PodDisruptionBudgetTemplate 模式属性

Expand
属性Description

metadata

应用到 PodDisruptionBudgetTemplate 资源的元数据。

MetadataTemplate

maxUnavailable

允许自动 pod 驱除的最大不可用 pod 数量。当 maxUnavailable 数量的 pod 或更少的 pod 在驱除后不可用时,允许 pod 驱除。将此值设置为 0 可防止所有自愿驱除,因此必须手动驱除 pod。默认为 1。

整数

12.2.40. ContainerTemplate 模式参考

用于:CruiseControlTemplate, EntityOperatorTemplate, KafkaBridgeTemplate, KafkaClusterTemplate, KafkaConnectTemplate, KafkaExporterTemplate, KafkaMirrorMakerTemplate, ZookeeperClusterTemplate

ContainerTemplate 模式属性的完整列表

您可以为容器设置自定义安全上下文和环境变量。

环境变量在 env 属性下定义为带有 namevalue 字段的对象列表。以下示例显示了为 Kafka 代理容器设置的两个自定义环境变量和自定义安全上下文:

# ...
template:
  kafkaContainer:
    env:
    - name: EXAMPLE_ENV_1
      value: example.env.one
    - name: EXAMPLE_ENV_2
      value: example.env.two
    securityContext:
      runAsUser: 2000
# ...
Copy to Clipboard Toggle word wrap

前缀为 KAFKA_ 的环境变量是 AMQ Streams 的内部,应该避免。如果您设置了AMQ Streams 已使用的自定义环境变量,它会被忽略,并在日志中记录警告信息。

12.2.40.1. ContainerTemplate 模式属性

Expand
属性Description

env

应该应用到容器的环境变量。

ContainerEnvVar 数组

securityContext

容器的安全上下文。如需更多信息,请参阅 core/v1 安全上下文的外部文档

securityContext

12.2.41. ContainerEnvVar 模式参考

used in: ContainerTemplate

Expand
属性Description

name

环境变量键。

字符串

value

环境变量值。

字符串

12.2.42. ZookeeperClusterSpec 模式参考

使用的: KafkaSpec

ZookeeperClusterSpec schema 属性的完整列表

配置 ZooKeeper 集群。

12.2.42.1. config

使用 config 属性将 ZooKeeper 选项配置为键。

可以提供标准 Apache ZooKeeper 配置,仅限于不直接由 AMQ Streams 管理的属性。

无法配置与以下内容相关的配置选项:

  • 安全(加密、验证和授权)
  • 侦听器配置
  • 配置数据目录
  • zookeeper 集群组成

这些值可以是以下 JSON 类型之一:

  • 字符串
  • Number
  • 布尔值

您可以指定并配置 ZooKeeper 文档 中列出的选项,但那些直接由 AMQ Streams 管理的选项除外。具体来说,所有与以下字符串之一相等或开始的配置选项都会被禁止:

  • 服务器.
  • dataDir
  • dataLogDir
  • clientPort
  • authProvider
  • quorum.auth
  • requireClientAuthScheme

当在 config 属性中存在禁止选项时,它会被忽略,并将警告消息输出到 Cluster Operator 日志文件。所有其他支持选项都传递到 ZooKeeper。

禁止的选项有例外。对于将特定 密码套件 用于 TLS 版本的客户端连接,您可以配置允许的 ssl 属性

ZooKeeper 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
spec:
  kafka:
    # ...
  zookeeper:
    # ...
    config:
      autopurge.snapRetainCount: 3
      autopurge.purgeInterval: 1
      ssl.cipher.suites: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
      ssl.enabled.protocols: "TLSv1.2"
      ssl.protocol: "TLSv1.2"
    # ...
Copy to Clipboard Toggle word wrap

12.2.42.2. logging

zookeeper 有一个可配置的日志记录器:

  • zookeeper.root.logger

zookeeper 使用 Apache log4j 日志记录器实现。

使用 logging 属性配置日志记录器和日志记录器级别。

您可以通过直接指定日志记录器和级别(在线)或使用自定义(外部) ConfigMap 来设置日志级别。如果使用 ConfigMap,您可以将 logging.valueFrom.configMapKeyRef.name 属性设置为包含外部日志记录配置的 ConfigMap 的名称。在 ConfigMap 中,日志记录配置使用 log4j.properties 来描述。logging.valueFrom.configMapKeyRef.namelogging.valueFrom.configMapKeyRef.key 属性都是必须的。当 Cluster Operator 运行时,会使用指定的日志记录配置创建 ConfigMap,然后在每次协调后重新创建。如果没有指定自定义 ConfigMap,则会使用默认的日志记录设置。如果没有设置特定的日志记录器值,则会继承该日志记录器的上级日志记录器设置。有关日志级别的更多信息,请参阅 Apache 日志记录服务

此处会看到 内联外部日志记录 的示例。

内联日志

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
spec:
  # ...
  zookeeper:
    # ...
    logging:
      type: inline
      loggers:
        zookeeper.root.logger: "INFO"
    # ...
Copy to Clipboard Toggle word wrap

外部日志记录

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
spec:
  # ...
  zookeeper:
    # ...
    logging:
      type: external
      valueFrom:
        configMapKeyRef:
          name: customConfigMap
          key: zookeeper-log4j.properties
  # ...
Copy to Clipboard Toggle word wrap

垃圾收集器(GC)

也可以使用 jvmOptions 属性 来启用(或禁用)垃圾收集器日志记录。

12.2.42.3. ZookeeperClusterSpec schema 属性

Expand
属性Description

replicas

集群中的 pod 数量。

整数

image

pod 的 docker 镜像。

字符串

storage

存储配置(磁盘)。无法更新。类型取决于给定对象中的 storage.type 属性的值,它必须是 [ephemeral, persistent-claim] 中的一个。

EphemeralStorage, PersistentClaimStorage

config

ZooKeeper 代理配置。无法设置以下前缀的属性:server.、dataDir、dataLogDir、clientPort、authProvider、quorum.auth、serverCnxnFactoreme、snapshot.trust.empty、standaloneEnabled、reconfigEnabled、seconfigEnabled、4lw.commands.whitelist、secureClientPort、ssl.、serverCnxnFactory、sslQuorum (Iprotocol 除外) SSL.quorum.protocol, ssl.enabledProtocols, ssl.quorum.enabledProtocols, ssl.ciphersuites, ssl.quorum.ciphersuites, ssl.hostnameVerification, ssl.quorum.hostnameVerification)。

map

livenessProbe

Pod 存活度检查。

探测

readinessProbe

Pod 就绪度检查.

探测

jvmOptions

pod 的 JVM 选项。

JvmOptions

jmxOptions

Zookeeper 节点的 JMX 选项.

KafkaJmxOptions

资源

要保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源查询的外部文档

ResourceRequirements

metricsConfig

指标配置。这个类型取决于给定对象中的 metricsConfig.type 属性的值,它必须是 [jmxPrometheusExporter] 之一。

JmxPrometheusExporterMetrics

logging

ZooKeeper 的日志记录配置。类型取决于给定对象中的 logging.type 属性的值,它必须是 [inline, external] 中的一个。

InlineLogging, ExternalLogging

模板

ZooKeeper 集群资源模板。通过该模板,用户可以指定如何生成 StatefulSetPodServices

ZookeeperClusterTemplate

12.2.43. ZookeeperClusterTemplate 模式参考

使用的: ZookeeperClusterSpec

Expand
属性Description

statefulset

ZooKeeper StatefulSet 模板。

StatefulSetTemplate

Pod

ZooKeeper Pod 模板.

PodTemplate

clientService

ZooKeeper 客户端服务 模板.

InternalServiceTemplate

nodesService

ZooKeeper 节点服务 模板.

InternalServiceTemplate

persistentVolumeClaim

所有 ZooKeeper PersistentVolumeClaim 的模板

resourcetemplate

podDisruptionBudget

ZooKeeper PodDisruptionBudget 模板。

PodDisruptionBudgetTemplate

zookeeperContainer

ZooKeeper 容器的模板。

ContainerTemplate

serviceAccount

ZooKeeper 服务帐户的模板。

resourcetemplate

jmxSecret

Zookeeper 集群 JMX 身份验证的 Secret 模板。

resourcetemplate

podSet

ZooKeeper StrimziPodSet 资源的模板。

resourcetemplate

12.2.44. EntityOperatorSpec 模式参考

使用的: KafkaSpec

Expand
属性Description

topicOperator

配置主题 Operator。

EntityTopicOperatorSpec

userOperator

User Operator 配置。

EntityUserOperatorSpec

tlsSidecar

TLS sidecar 配置。

TlsSidecar

模板

Entity Operator 资源的模板。通过该模板,用户可以指定如何生成 DeploymentPod

EntityOperatorTemplate

12.2.45. EntityTopicOperatorSpec 模式参考

used in: EntityOperatorSpec

EntityTopicOperatorSpec 模式属性的完整列表

配置主题 Operator。

12.2.45.1. logging

主题 Operator 有一个可配置的日志记录器:

  • rootLogger.level

主题 Operator 使用 Apache log4j2 日志记录器实现。

使用 Kafka 资源 Kafka 资源的 entityOperator.topicOperator 字段中的 logging 属性来配置日志记录器和日志记录器级别。

您可以通过直接指定日志记录器和级别(在线)或使用自定义(外部) ConfigMap 来设置日志级别。如果使用 ConfigMap,您可以将 logging.valueFrom.configMapKeyRef.name 属性设置为包含外部日志记录配置的 ConfigMap 的名称。在 ConfigMap 中,日志记录配置使用 log4j2.properties 来描述。logging.valueFrom.configMapKeyRef.namelogging.valueFrom.configMapKeyRef.key 属性都是必须的。当 Cluster Operator 运行时,会使用指定的日志记录配置创建 ConfigMap,然后在每次协调后重新创建。如果没有指定自定义 ConfigMap,则会使用默认的日志记录设置。如果没有设置特定的日志记录器值,则会继承该日志记录器的上级日志记录器设置。有关日志级别的更多信息,请参阅 Apache 日志记录服务

此处会看到 内联外部日志记录 的示例。

内联日志

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
  zookeeper:
    # ...
  entityOperator:
    # ...
    topicOperator:
      watchedNamespace: my-topic-namespace
      reconciliationIntervalSeconds: 60
      logging:
        type: inline
        loggers:
          rootLogger.level: INFO
  # ...
Copy to Clipboard Toggle word wrap

外部日志记录

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
  zookeeper:
    # ...
  entityOperator:
    # ...
    topicOperator:
      watchedNamespace: my-topic-namespace
      reconciliationIntervalSeconds: 60
      logging:
        type: external
        valueFrom:
          configMapKeyRef:
            name: customConfigMap
            key: topic-operator-log4j2.properties
  # ...
Copy to Clipboard Toggle word wrap

垃圾收集器(GC)

也可以使用 jvmOptions 属性 来启用(或禁用)垃圾收集器日志记录。

12.2.45.2. EntityTopicOperatorSpec 模式属性

Expand
属性Description

watchedNamespace

应该监视主题 Operator 的命名空间。

字符串

image

用于主题 Operator 的镜像。

字符串

reconciliationIntervalSeconds

定期协调之间的间隔。

整数

zookeeperSessionTimeoutSeconds

ZooKeeper 会话的超时。

整数

startupProbe

Pod 启动检查.

探测

livenessProbe

Pod 存活度检查。

探测

readinessProbe

Pod 就绪度检查.

探测

资源

要保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源查询的外部文档

ResourceRequirements

topicMetadataMaxAttempts

获取主题元数据时的尝试次数。

整数

logging

日志记录配置。类型取决于给定对象中的 logging.type 属性的值,它必须是 [inline, external] 中的一个。

InlineLogging, ExternalLogging

jvmOptions

pod 的 JVM 选项。

JvmOptions

12.2.46. EntityUserOperatorSpec 模式参考

used in: EntityOperatorSpec

EntityUserOperatorSpec schema 属性的完整列表

配置用户 Operator。

12.2.46.1. logging

User Operator 有一个可配置的日志记录器:

  • rootLogger.level

User Operator 使用 Apache log4j2 日志记录器实现。

使用 Kafka 资源的 entityOperator.userOperator 字段中的 logging 属性来配置日志记录器和日志记录器级别。

您可以通过直接指定日志记录器和级别(在线)或使用自定义(外部) ConfigMap 来设置日志级别。如果使用 ConfigMap,您可以将 logging.valueFrom.configMapKeyRef.name 属性设置为包含外部日志记录配置的 ConfigMap 的名称。在 ConfigMap 中,日志记录配置使用 log4j2.properties 来描述。logging.valueFrom.configMapKeyRef.namelogging.valueFrom.configMapKeyRef.key 属性都是必须的。当 Cluster Operator 运行时,会使用指定的日志记录配置创建 ConfigMap,然后在每次协调后重新创建。如果没有指定自定义 ConfigMap,则会使用默认的日志记录设置。如果没有设置特定的日志记录器值,则会继承该日志记录器的上级日志记录器设置。有关日志级别的更多信息,请参阅 Apache 日志记录服务

此处会看到 内联外部日志记录 的示例。

内联日志

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
  zookeeper:
    # ...
  entityOperator:
    # ...
    userOperator:
      watchedNamespace: my-topic-namespace
      reconciliationIntervalSeconds: 60
      logging:
        type: inline
        loggers:
          rootLogger.level: INFO
  # ...
Copy to Clipboard Toggle word wrap

外部日志记录

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
  zookeeper:
    # ...
  entityOperator:
    # ...
    userOperator:
      watchedNamespace: my-topic-namespace
      reconciliationIntervalSeconds: 60
      logging:
        type: external
        valueFrom:
          configMapKeyRef:
            name: customConfigMap
            key: user-operator-log4j2.properties
   # ...
Copy to Clipboard Toggle word wrap

垃圾收集器(GC)

也可以使用 jvmOptions 属性 来启用(或禁用)垃圾收集器日志记录。

12.2.46.2. EntityUserOperatorSpec 模式属性

Expand
属性Description

watchedNamespace

User Operator 应该监视的命名空间。

字符串

image

用于 User Operator 的镜像。

字符串

reconciliationIntervalSeconds

定期协调之间的间隔。

整数

zookeeperSessionTimeoutSeconds

zookeeperSessionTimeoutSeconds 属性已弃用。此属性已弃用,因为 User Operator 不再使用 ZooKeeper。ZooKeeper 会话的超时。

整数

secretPrefix

将添加到 KafkaUser 名称的前缀,用作 Secret 名称。

字符串

livenessProbe

Pod 存活度检查。

探测

readinessProbe

Pod 就绪度检查.

探测

资源

要保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源查询的外部文档

ResourceRequirements

logging

日志记录配置。类型取决于给定对象中的 logging.type 属性的值,它必须是 [inline, external] 中的一个。

InlineLogging, ExternalLogging

jvmOptions

pod 的 JVM 选项。

JvmOptions

12.2.47. TlsSidecar 模式参考

使用的: CruiseControlSpec, EntityOperatorSpec

TlsSidecar 模式属性的完整列表

配置 TLS sidecar,这是在 pod 中运行但满足支持目的的容器。在 AMQ Streams 中,TLS sidecar 使用 TLS 来加密和解密组件与 ZooKeeper 之间的通信。

TLS sidecar 在 Entity Operator 中使用。

TLS sidecar 使用 Kafka.spec.entityOperator 中的 tlsSidecar 属性进行配置。

TLS sidecar 支持以下附加选项:

  • image
  • 资源
  • logLevel
  • readinessProbe
  • livenessProbe

resources 属性指定为 TLS sidecar 分配的 内存和 CPU 资源

image 属性配置将使用的容器镜像

readinessProbelivenessProbe 属性为 TLS sidecar 配置 健康检查探测

logLevel 属性指定日志级别。支持以下日志记录级别:

  • emerg
  • alert
  • crit
  • err
  • warning
  • 备注
  • info
  • debug

默认值为 notice

TLS sidecar 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  # ...
  entityOperator:
    # ...
    tlsSidecar:
      resources:
        requests:
          cpu: 200m
          memory: 64Mi
        limits:
          cpu: 500m
          memory: 128Mi
    # ...
Copy to Clipboard Toggle word wrap

12.2.47.1. TlsSidecar 模式属性

Expand
属性Description

image

容器的 Docker 镜像。

字符串

livenessProbe

Pod 存活度检查。

探测

logLevel

TLS sidecar 的日志级别。默认值为 notice

string (one of [emerg, debug, crit, err, alert, warning, notice, info])

readinessProbe

Pod 就绪度检查.

探测

资源

要保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源查询的外部文档

ResourceRequirements

12.2.48. EntityOperatorTemplate 模式参考

used in: EntityOperatorSpec

Expand
属性Description

部署

Entity Operator Deployment 的模板。

resourcetemplate

Pod

实体 Operator Pod 的模板

PodTemplate

topicOperatorContainer

Entity Topic Operator 容器的模板。

ContainerTemplate

userOperatorContainer

Entity User Operator 容器的模板。

ContainerTemplate

tlsSidecarContainer

Entity Operator TLS sidecar 容器的模板。

ContainerTemplate

serviceAccount

Entity Operator 服务帐户的模板。

resourcetemplate

12.2.49. certificateAuthority 模式参考

使用的: KafkaSpec

在集群中如何使用 TLS 证书的配置。这适用于用于集群中内部通信的证书,以及通过 Kafka.spec.kafka.listeners.tls 用于访问的证书。

Expand
属性Description

generateCertificateAuthority

如果为 true,则会自动生成证书颁发机构证书。否则,用户需要提供 CA 证书的 Secret。默认为 true。

布尔值

generateSecretOwnerReference

如果为 true,Cluster 和客户端 CA Secret 将使用 ownerReference 设置为 Kafka 资源来配置。如果在 true 时删除了 Kafka 资源,则 CA Secret 也会被删除。若为 false,则 ownerReference 被禁用。如果 Kafka 资源在 false 时删除,则 CA Secret 会被保留并可用于重复使用。默认为 true

布尔值

validityDays

生成的证书应有效天数。默认值为 365。

整数

renewalDays

证书续订期间的天数。这是证书过期之前可以执行续订操作的天数。当 generateCertificateAuthority 为 true 时,这将导致新证书的生成。当 generateCertificateAuthority 为 true 时,这会导致额外的日志记录级别在 WARN 级别有关待处理证书过期的情况。默认值为 30。

整数

certificateExpirationPolicy

在生成 CertificateAuthority=true 时,如何处理 CA 证书过期。默认值用于重复使用现有私钥的新 CA 证书。

string (one of [replace-key, renew-certificate])

12.2.50. CruiseControlSpec 模式参考

使用的: KafkaSpec

CruiseControlSpec schema 属性的完整列表

配置一个 Cruise Control 集群。

配置选项与:

  • 目标配置
  • 资源分布目标的容量限制

12.2.50.1. config

使用 配置属性 将控制选项配置为密钥。

可以提供标准 Cruise Control 配置,仅限于不直接由 AMQ Streams 管理的属性。

无法配置与以下内容相关的配置选项:

  • 安全(加密、验证和授权)
  • 连接到 Kafka 集群
  • 客户端 ID 配置
  • zookeeper 连接性
  • Web 服务器配置
  • 自我修复

这些值可以是以下 JSON 类型之一:

  • 字符串
  • Number
  • 布尔值

您可以指定并配置 Cruise Control 文档 中列出的选项,但那些直接由 AMQ Streams 管理的选项除外。如需禁止前缀列表,请参阅 config 属性的描述。

当在 config 属性中存在禁止选项时,它会被忽略,并将警告消息输出到 Cluster Operator 日志文件。所有其他支持选项都传递到 Cruise Control。

禁止的选项有例外。对于将特定 密码套件 用于 TLS 版本的客户端连接,您可以配置允许的 ssl 属性。您还可以配置 webserver 属性,以启用跨资源共享(CORS)。

Cruise Control 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  # ...
  cruiseControl:
    # ...
    config:
      default.goals: >
        com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaCapacityGoal
      cpu.balance.threshold: 1.1
      metadata.max.age.ms: 300000
      send.buffer.bytes: 131072
      webserver.http.cors.enabled: true
      webserver.http.cors.origin: "*"
      webserver.http.cors.exposeheaders: "User-Task-ID,Content-Type"
    # ...
Copy to Clipboard Toggle word wrap

12.2.50.2. 跨资源共享(CORS)

跨资源共享(CORS)是控制对 REST API 的访问的 HTTP 机制。限制是指客户端应用的访问方法或原始 URL。您可以使用 config 中的 webserver.http.cors.enabled 属性启用 CORS。启用后,CORS 允许从不同于 AMQ Streams 的应用程序读取对 Cruise Control REST API 的访问。这允许来自指定源中的应用程序通过 Cruise Control API 来使用 GET 请求获取 Kafka 集群的信息。例如,应用程序可以获取当前集群负载或最新优化方案的信息。不允许 POST 请求。

注意

有关使用带有 Cruise Control 的 CORS 的更多信息,请参阅 Cruise Control Wiki 中的 REST API

为 Cruise Control 启用 CORS

您可以在 Kafka.spec.cruiseControl.config 中启用和配置 CORS。

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  # ...
  cruiseControl:
    # ...
    config:
      webserver.http.cors.enabled: true 
1

      webserver.http.cors.origin: "*" 
2

      webserver.http.cors.exposeheaders: "User-Task-ID,Content-Type" 
3


    # ...
Copy to Clipboard Toggle word wrap
1
启用 CORS。
2
Access-Control-Allow-Origin HTTP 响应标头指定允许的来源。您可以使用通配符或指定一个源作为 URL。如果使用通配符,则从任何原始请求返回响应。
3
Access-Control-Expose-Headers HTTP 响应标头公开指定的标头名称。允许的源中的应用程序可以通过指定标头读取响应。

12.2.50.3. Cruise Control REST API 安全性

Cruise Control REST API 使用 HTTP 基本身份验证和 SSL 保护集群,以防止集群出现潜在的 Cruise Control 操作,如弃用 Kafka 代理。我们推荐在 AMQ Streams 中 Cruise Control 用来启用这些设置

但是,可以通过指定以下 Cruise Control 配置来禁用这些设置:

  • 要禁用内置 HTTP 基本身份验证,请将 webserver.security.enable 设置为 false
  • 要禁用内置 SSL,请将 webserver.ssl.enable 设置为 false

Cruise Control 配置来禁用 API 授权、身份验证和 SSL

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  # ...
  cruiseControl:
    config:
      webserver.security.enable: false
      webserver.ssl.enable: false
# ...
Copy to Clipboard Toggle word wrap

12.2.50.4. brokerCapacity

Cruise Control 使用容量限制来确定资源分布的优化目标是否被破坏。这个类型有 4 个目标:

  • DiskUsageDistributionGoal - 磁盘使用分布
  • CpuUsageDistributionGoal - CPU utilization distribution
  • NetworkInboundUsageDistributionGoal - 网络入站利用率分发
  • NetworkOutboundUsageDistributionGoal - 网络出站利用率分发

您可以在 Kafka.spec.cruiseControl 中的 brokerCapacity 属性中指定 Kafka 代理资源的容量限制。它们会被默认启用,您可以更改其默认值。可以为以下代理资源设置容量限制:

  • inboundNetwork - 每秒以字节单位的入站网络吞吐量(默认值:10000KiB/s)
  • outboundNetwork - 出站网络吞吐量,以每秒字节数为单位(默认值:10000KiB/s)

对于网络吞吐量,请使用带有标准 OpenShift 字节单元(K、M、G)或其 bibyte (双字节(Ki, Mi, Gi)的整数值。

注意

磁盘和 CPU 容量限制由 AMQ Streams 自动生成,因此您不需要设置它们。

注意

为了保证使用 CPU 目标时准确重新平衡提议,您可以在 Kafka.spec.kafka.resources 中设置与 CPU 限值相等的 CPU 请求。这样,所有 CPU 资源都会保留前期,并且始终可用。此配置允许 Cruise Control 在准备基于 CPU 目标的重新平衡建议时,正确评估 CPU 利用率。

使用 bibyte 单位的 Cruise Control 代理容量配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  # ...
  cruiseControl:
    # ...
    brokerCapacity:
      inboundNetwork: 10000KiB/s
      outboundNetwork: 10000KiB/s
    # ...
Copy to Clipboard Toggle word wrap

12.2.50.5. 日志记录配置

Cruise Control 有自己的可配置的日志记录器:

  • rootLogger.level

Cruise Control 使用 Apache log4j2 日志记录器实施。

使用 logging 属性配置日志记录器和日志记录器级别。

您可以通过直接指定日志记录器和级别(在线)或使用自定义(外部) ConfigMap 来设置日志级别。如果使用 ConfigMap,您可以将 logging.valueFrom.configMapKeyRef.name 属性设置为包含外部日志记录配置的 ConfigMap 的名称。在 ConfigMap 中,日志记录配置使用 log4j.properties 来描述。logging.valueFrom.configMapKeyRef.namelogging.valueFrom.configMapKeyRef.key 属性都是必须的。当 Cluster Operator 运行时,会使用指定的日志记录配置创建 ConfigMap,然后在每次协调后重新创建。如果没有指定自定义 ConfigMap,则会使用默认的日志记录设置。如果没有设置特定的日志记录器值,则会继承该日志记录器的上级日志记录器设置。此处会看到 内联外部日志记录 的示例。

内联日志

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
# ...
spec:
  cruiseControl:
    # ...
    logging:
      type: inline
      loggers:
        rootLogger.level: "INFO"
    # ...
Copy to Clipboard Toggle word wrap

外部日志记录

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
# ...
spec:
  cruiseControl:
    # ...
    logging:
      type: external
      valueFrom:
        configMapKeyRef:
          name: customConfigMap
          key: cruise-control-log4j.properties
    # ...
Copy to Clipboard Toggle word wrap

垃圾收集器(GC)

也可以使用 jvmOptions 属性 来启用(或禁用)垃圾收集器日志记录。

12.2.50.6. CruiseControlSpec schema 属性

Expand
属性Description

image

pod 的 docker 镜像。

字符串

tlsSidecar

tlsSidecar 属性已弃用。TLS sidecar 配置。

TlsSidecar

资源

为 Cruise Control 容器保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源查询的外部文档

ResourceRequirements

livenessProbe

对 Cruise Control 容器进行 Pod 存活度检查。

探测

readinessProbe

Pod 就绪度检查是否有 Cruise Control 容器。

探测

jvmOptions

断路器控制容器的 JVM 选项。

JvmOptions

logging

用于 Cruise Control 的日志记录配置(Log4j 2)类型取决于给定对象中的 logging.type 属性的值,它必须是 [inline, external] 中的一个。

InlineLogging, ExternalLogging

模板

模板以指定如何生成控制资源 、部署和 Pod

CruiseControlTemplate

brokerCapacity

崩溃控制 代理容量 配置。

BrokerCapacity

config

断路器控制配置。有关配置选项的完整列表请参考 https://github.com/linkedin/cruise-control/wiki/Configurations。请注意,无法设置以下前缀的属性:bootstrap.servers、client.id、zookeeper.、network.、security., failed.brokers.zk.path,webserver.http.http., webserver.api.urlprefix, webserver.session.path, webserver.accesslog., two.step., request.reason.required, metric.reporter.sampler.bootstrap.servers, capacity.config.file, self.healing., ssl., kafka.broker.failure.detection.enable, topic.config.provider.class (例外: ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols, webserver.http.cors.enabled, webserver.http.cors.enabled, webserver.http.cors.origin, webserver.http.cors.exposeheaders, webserver.security.enable, webserver.ssl.enable)。

map

metricsConfig

指标配置。这个类型取决于给定对象中的 metricsConfig.type 属性的值,它必须是 [jmxPrometheusExporter] 之一。

JmxPrometheusExporterMetrics

12.2.51. CruiseControlTemplate 模式参考

使用的: CruiseControlSpec

Expand
属性Description

部署

用于控制部署的模板 .

resourcetemplate

Pod

用于控制 Pod 的模板。

PodTemplate

apiService

用于控制 API 服务 的模板

InternalServiceTemplate

podDisruptionBudget

用于控制 PodDisruptionBudget 的模板。

PodDisruptionBudgetTemplate

cruiseControlContainer

Cruise Control 容器的模板。

ContainerTemplate

tlsSidecarContainer

tlsSidecarContainer 属性已弃用。Cruise Control TLS sidecar 容器的模板。

ContainerTemplate

serviceAccount

Cruise Control 服务帐户的模板。

resourcetemplate

12.2.52. BrokerCapacity schema 参考

使用的: CruiseControlSpec

Expand
属性Description

disk

disk 属性已弃用。Cruise Control disk capacity 设置已弃用,它会被忽略,并将在以后的代理容量中删除用于磁盘,以字节为单位。使用带有标准 OpenShift 字节单元(K、M、G 或 T)、其 bibyte (双字节(Ki、Mi、Gi 或 Ti)或 Ti 的字节值,或使用 E 表示法的字节值。例如: 100000M、100000Mi、104857600000 或 1e+11。

字符串

cpuUtilization

cpuUtilization 属性已弃用。Cruise Control CPU 容量设置已弃用,被忽略,并将在以后的代理容量中删除,作为百分比(0 - 100)。

整数

inboundNetwork

用于入站网络吞吐量的代理容量(以字节/秒为单位)。使用标准 OpenShift 字节单元(K、M、G)或其 bibyte (双字节(Ki, Mi, Gi)的整数值。例如,10000KiB/s。

字符串

outboundNetwork

代理容量,用于出站网络吞吐量(以字节/秒为单位)。使用标准 OpenShift 字节单元(K、M、G)或其 bibyte (双字节(Ki, Mi, Gi)的整数值。例如,10000KiB/s。

字符串

12.2.53. KafkaExporterSpec schema reference

使用的: KafkaSpec

Expand
属性Description

image

pod 的 docker 镜像。

字符串

groupRegex

正则表达式,以指定要收集哪些消费者组。默认值为 .*

字符串

topicRegex

正则表达式,以指定要收集哪些主题。默认值为 .*

字符串

资源

要保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源查询的外部文档

ResourceRequirements

logging

仅记录给定严重性或更高严重性的日志消息。有效级别: [info,debug,trace]。默认日志级别为 info

字符串

enableSaramaLogging

启用 Sarama 日志记录,这是 Kafka Exporter 使用的 Go 客户端库。

布尔值

模板

自定义部署模板和 pod。

KafkaExporterTemplate

livenessProbe

Pod 存活度检查。

探测

readinessProbe

Pod 就绪度检查。

探测

12.2.54. KafkaExporterTemplate 模式参考

使用的: KafkaExporterSpec

Expand
属性Description

部署

Kafka 导出器 部署模板.

resourcetemplate

Pod

Kafka 导出器 Pod 的模板

PodTemplate

service

service 属性已弃用。Kafka Exporter 服务已被删除。Kafka Exporter Service 模板。

resourcetemplate

container

Kafka Exporter 容器的模板。

ContainerTemplate

serviceAccount

Kafka Exporter 服务帐户的模板。

resourcetemplate

12.2.55. KafkaStatus 模式参考

使用的: Kafka

Expand
属性Description

conditions

状态条件列表。

状况 数组

observedGeneration

Operator 最后协调的 CRD 的生成。

整数

监听器

内部和外部监听程序的地址。

ListenerStatus 数组

clusterId

Kafka 集群 Id。

字符串

12.2.56. 条件 模式参考

used in: KafkaBridgeStatus, KafkaConnectorStatus, KafkaConnectStatus, KafkaMirrorMaker2Status, KafkaMirrorMakerStatus, KafkaRebalanceStatus, KafkaTopicStatus, KafkaTopicStatus, KafkaUserStatus

Expand
属性Description

type

条件的唯一标识符,用于区分资源中的其他条件。

字符串

status

条件的状态,可以是 True、False 或 Unknown。

字符串

lastTransitionTime

最后一次类型的条件从一个状态更改为另一个状态。所需格式为 UTC 时区中的 'yyyy-MM-ddTHH:mm:ssZ'。

字符串

reason

条件最后一次转换的原因(CamelCase 中的一个词)。

字符串

message

人类可读的消息,表示有关条件最后一次转换的详细信息。

字符串

12.2.57. ListenerStatus 模式参考

使用的: KafkaStatus

Expand
属性Description

type

type 属性已弃用,现在应 使用名称 进行配置。侦听器的名称。

字符串

name

侦听器的名称。

字符串

addresses

此侦听器的地址列表。

ListenerAddress 数组

bootstrapServers

用于使用此侦听器连接到 Kafka 集群的 host:port 对的逗号分隔列表。

字符串

证书

用于在连接到给定侦听器时验证服务器身份的 TLS 证书列表。仅为 tls外部 监听程序设置。

字符串数组

12.2.58. ListenerAddress 模式参考

used in: ListenerStatus

Expand
属性Description

主机

Kafka bootstrap 服务的 DNS 名称或 IP 地址。

字符串

port

Kafka bootstrap 服务的端口。

整数

12.2.59. KafkaConnect 模式参考

Expand
属性Description

spec

Kafka Connect 集群的规格。

KafkaConnectSpec

status

Kafka Connect 集群的状态。

KafkaConnectStatus

12.2.60. KafkaConnectSpec 模式参考

使用的: KafkaConnect

KafkaConnectSpec schema 属性的完整列表

配置 Kafka Connect 集群。

12.2.60.1. config

使用 config 属性将 Kafka 选项配置为密钥。

可以提供标准 Apache Kafka Connect 配置,仅限于不直接由 AMQ Streams 管理的属性。

无法配置与以下内容相关的配置选项:

  • Kafka 集群 bootstrap 地址
  • 安全(加密、验证和授权)
  • 侦听器/ REST 接口配置
  • 插件路径配置

这些值可以是以下 JSON 类型之一:

  • 字符串
  • Number
  • 布尔值

除了直接由 AMQ Streams 管理的选项外,您可以指定并配置 Apache Kafka 文档 中列出的选项。特别是,禁止使用与以下字符串之一相等或开始的配置选项:

  • SSL.
  • SASL:
  • 安全性.
  • 监听器
  • plugin.path
  • REST.
  • bootstrap.servers

当在 config 属性中存在禁止选项时,它会被忽略,并将警告消息输出到 Cluster Operator 日志文件。所有其他选项都传递到 Kafka Connect。

重要

Cluster Operator 不验证提供的配置对象中的 密钥或 值。当提供无效的配置时,Kafka Connect 集群可能无法启动,也可能不稳定。在这种情形中,修正 KafkaConnect.spec.config 对象中的配置,然后 Cluster Operator 可以向所有 Kafka Connect 节点推出新配置。

某些选项有默认值:

  • 带有默认值 connect-clustergroup.id
  • 使用默认值 connect-cluster-offsetsoffset.storage.topic
  • config.storage.topic with default value connect-cluster-configs
  • status.storage.topic with default value connect-cluster-status
  • key.converter with default value org.apache.kafka.connect.json.JsonConverter
  • value.converter with default value org.apache.kafka.connect.json.JsonConverter

如果 KafkaConnect.spec.config 属性中没有它们,则会自动配置这些选项。

禁止的选项有例外。您可以使用特定 密码套件 作为 TLS 版本,为客户端连接使用三个允许的 ssl 配置选项。密码套件结合了用于安全连接和数据传输的算法。您还可以配置 ssl.endpoint.identification.algorithm 属性来启用或禁用主机名验证。

Kafka Connect 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
  name: my-connect
spec:
  # ...
  config:
    group.id: my-connect-cluster
    offset.storage.topic: my-connect-cluster-offsets
    config.storage.topic: my-connect-cluster-configs
    status.storage.topic: my-connect-cluster-status
    key.converter: org.apache.kafka.connect.json.JsonConverter
    value.converter: org.apache.kafka.connect.json.JsonConverter
    key.converter.schemas.enable: true
    value.converter.schemas.enable: true
    config.storage.replication.factor: 3
    offset.storage.replication.factor: 3
    status.storage.replication.factor: 3
    ssl.cipher.suites: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
    ssl.enabled.protocols: "TLSv1.2"
    ssl.protocol: "TLSv1.2"
    ssl.endpoint.identification.algorithm: HTTPS
  # ...
Copy to Clipboard Toggle word wrap

对于将特定 密码套件 用于 TLS 版本的客户端连接,您可以配置允许的 ssl 属性您还可以配置 ssl.endpoint.identification.algorithm 属性 来启用或禁用主机名验证。

12.2.60.2. logging

Kafka Connect 都有自己的可配置的日志记录器:

  • connect.root.logger.level
  • log4j.logger.org.reflections

根据运行的 Kafka Connect 插件,添加了进一步的日志记录器。

使用 curl 请求获取在任何 Kafka 代理 pod 上运行的 Kafka Connect 日志记录器的完整列表:

curl -s http://<connect-cluster-name>-connect-api:8083/admin/loggers/
Copy to Clipboard Toggle word wrap

Kafka Connect 使用 Apache log4j 日志记录器实现。

使用 logging 属性配置日志记录器和日志记录器级别。

您可以通过直接指定日志记录器和级别(在线)或使用自定义(外部) ConfigMap 来设置日志级别。如果使用 ConfigMap,您可以将 logging.valueFrom.configMapKeyRef.name 属性设置为包含外部日志记录配置的 ConfigMap 的名称。在 ConfigMap 中,日志记录配置使用 log4j.properties 来描述。logging.valueFrom.configMapKeyRef.namelogging.valueFrom.configMapKeyRef.key 属性都是必须的。当 Cluster Operator 运行时,会使用指定的日志记录配置创建 ConfigMap,然后在每次协调后重新创建。如果没有指定自定义 ConfigMap,则会使用默认的日志记录设置。如果没有设置特定的日志记录器值,则会继承该日志记录器的上级日志记录器设置。有关日志级别的更多信息,请参阅 Apache 日志记录服务

此处会看到 内联外部日志记录 的示例。

内联日志

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
spec:
  # ...
  logging:
    type: inline
    loggers:
      connect.root.logger.level: "INFO"
  # ...
Copy to Clipboard Toggle word wrap

外部日志记录

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
spec:
  # ...
  logging:
    type: external
    valueFrom:
      configMapKeyRef:
        name: customConfigMap
        key: connect-logging.log4j
  # ...
Copy to Clipboard Toggle word wrap

任何尚未配置级别的可用日志记录器都设置为 OFF

如果使用 Cluster Operator 部署 Kafka Connect,则会动态应用对 Kafka Connect 日志记录级别的更改。

如果使用外部日志记录,则在日志附加器更改时触发滚动更新。

垃圾收集器(GC)

也可以使用 jvmOptions 属性 来启用(或禁用)垃圾收集器日志记录。

12.2.60.3. KafkaConnectSpec 模式属性

Expand
属性Description

version

Kafka Connect 版本。默认为 3.2.3。参阅用户文档来了解升级或降级版本所需的流程。

字符串

replicas

Kafka Connect 组中的 pod 数量。

整数

image

pod 的 docker 镜像。

字符串

bootstrapServers

要连接的 bootstrap 服务器。这应该被指定为以逗号分开的 < hostname> :_&lt;port>_ 对列表。

字符串

tls

TLS 配置。

ClientTls

身份验证

Kafka Connect 的身份验证配置。这个类型取决于给定对象中的 authentication.type 属性的值,它必须是 [tls, scram-sha-256, scram-sha-256, scram-sha-512, plain, oauth]。

KafkaClientAuthenticationTls, KafkaClientAuthenticationScramSha256, KafkaClientAuthenticationScramSha512, KafkaClientAuthenticationPlain, KafkaClientAuthenticationOAuth

config

Kafka Connect 配置。无法设置以下前缀的属性: ssl., sasl., security.,监听程序, plugin.path, rest., bootstrap.servers, consumer.interceptor.classes, producer.interceptor.classes (权限为 ssl.endpoint.identification.algorithm、ssl.cipher.suites、ssl.protocol.enabled ssl.protocols)。

map

资源

CPU 和内存资源和请求的初始资源的最大限制。如需更多信息,请参阅 core/v1 资源查询的外部文档

ResourceRequirements

livenessProbe

Pod 存活度检查。

探测

readinessProbe

Pod 就绪度检查.

探测

jvmOptions

pod 的 JVM 选项。

JvmOptions

jmxOptions

JMX 选项.

KafkaJmxOptions

logging

Kafka Connect 的日志记录配置。类型取决于给定对象中的 logging.type 属性的值,它必须是 [inline, external] 中的一个。

InlineLogging, ExternalLogging

clientRackInitImage

用于初始化 客户端的 init 容器的镜像。

字符串

rack

配置用作 客户端的节点标签。rack consumer 配置。

rack

tracing

在 Kafka Connect 中配置追踪。类型取决于给定对象中的 tracing.type 属性的值,它必须是 [jaeger] 中的一个。

Jaegertracing

模板

Kafka Connect 和 Kafka Mirror Maker 2 资源的模板。这个模板允许用户指定如何生成 Deployment, PodsService

KafkaConnectTemplate

externalConfiguration

将 Secret 或 ConfigMap 中的数据传递给 Kafka Connect pod,并使用它们配置连接器。

ExternalConfiguration

build

配置应如何构建 Connect 容器镜像。可选。

Build

metricsConfig

指标配置。这个类型取决于给定对象中的 metricsConfig.type 属性的值,它必须是 [jmxPrometheusExporter] 之一。

JmxPrometheusExporterMetrics

12.2.61. ClientTls 模式参考

used in: KafkaBridgeSpec, KafkaConnectSpec, KafkaMirrorMaker2ClusterSpec, KafkaMirrorMakerConsumerSpec, KafkaMirrorMakerProducerSpec

ClientTls 模式属性的完整列表

配置用于连接 KafkaConnect、KafkaBridge、KafkaMirror、KafkaMirrorMaker2 到集群的 TLS 可信证书。

12.2.61.1. trustedCertificates

使用 trustedCertificates 属性 提供一个 secret 列表。

12.2.61.2. ClientTls 模式属性

Expand
属性Description

trustedCertificates

TLS 连接的可信证书。

CertSecretSource 数组

12.2.62. KafkaClientAuthenticationTls 模式参考

used in: KafkaBridgeSpec, KafkaConnectSpec, KafkaMirrorMaker2ClusterSpec, KafkaMirrorMakerConsumerSpec, KafkaMirrorMakerProducerSpec

KafkaClientAuthenticationTls schema 属性的完整列表

要配置 TLS 客户端身份验证,请将 type 属性设置为 tls 的值。TLS 客户端身份验证使用 TLS 证书进行身份验证。

12.2.62.1. certificateAndKey

证书在 certificateAndKey 属性中指定,始终从 OpenShift secret 加载。在 secret 中,证书必须以 X509 格式存储在两个不同的密钥下:public 和 private。

您可以使用 User Operator 创建的 secret,或者您可以使用用于身份验证的密钥创建自己的 TLS 证书文件,然后从文件创建 Secret

oc create secret generic MY-SECRET \
--from-file=MY-PUBLIC-TLS-CERTIFICATE-FILE.crt \
--from-file=MY-PRIVATE.key
Copy to Clipboard Toggle word wrap
注意

TLS 客户端身份验证只能与 TLS 连接一起使用。

TLS 客户端身份验证配置示例

authentication:
  type: tls
  certificateAndKey:
    secretName: my-secret
    certificate: my-public-tls-certificate-file.crt
    key: private.key
Copy to Clipboard Toggle word wrap

12.2.62.2. KafkaClientAuthenticationTls 模式属性

type 属性是一种差异性,用于区分 KafkaClientAuthenticationTls 类型来自 KafkaClientAuthenticationScramSha256KafkaClientAuthenticationScramSha512KafkaClientAuthenticationPlainKafkaClientAuthentication Plain。它必须具有类型为 KafkaClientAuthenticationTls 的值 tls

Expand
属性Description

certificateAndKey

对包含证书和私钥对的 Secret 的引用。

CertAndKeySecretSource

type

必须为 tls

字符串

used in: KafkaBridgeSpec, KafkaConnectSpec, KafkaMirrorMaker2ClusterSpec, KafkaMirrorMakerConsumerSpec, KafkaMirrorMakerProducerSpec

KafkaClientAuthenticationScramSha256 模式属性的完整列表

要配置基于 SASL 的 SCRAM-SHA-256 身份验证,请将 type 属性设置为 scram-sha-256。SCRAM-SHA-256 身份验证机制需要用户名和密码。

12.2.63.1. username

username 属性中指定用户名。

12.2.63.2. passwordSecret

passwordSecret 属性中,指定指向包含密码的 Secret 的链接。

您可以使用 User Operator 创建的 secret。

如果需要,您可以在明文中创建一个包含密码的文本文件,以用于身份验证:

echo -n PASSWORD > MY-PASSWORD.txt
Copy to Clipboard Toggle word wrap

然后,您可以从文本文件中创建 Secret,为密码设置您自己的字段名称(密钥):

oc create secret generic MY-CONNECT-SECRET-NAME --from-file=MY-PASSWORD-FIELD-NAME=./MY-PASSWORD.txt
Copy to Clipboard Toggle word wrap

Kafka Connect 的 SCRAM-SHA-256 客户端身份验证的 Secret 示例

apiVersion: v1
kind: Secret
metadata:
  name: my-connect-secret-name
type: Opaque
data:
  my-connect-password-field: LFTIyFRFlMmU2N2Tm
Copy to Clipboard Toggle word wrap

secretName 属性包含 Secret 的名称,password 属性包含密码存储在 Secret 中的键的名称。

重要

不要在 password 属性中指定 实际密码

Kafka Connect 基于 SASL 的 SCRAM-SHA-256 客户端验证配置示例

authentication:
  type: scram-sha-256
  username: my-connect-username
  passwordSecret:
    secretName: my-connect-secret-name
    password: my-connect-password-field
Copy to Clipboard Toggle word wrap

Expand
属性Description

passwordSecret

对包含密码的 Secret 的引用。

PasswordSecretSource

type

必须是 scram-sha-256

字符串

username

用于身份验证的用户名。

字符串

12.2.64. PasswordSecretSource 架构参考

使用的: KafkaClientAuthenticationPlain, KafkaClientAuthenticationScramSha256, KafkaClientAuthenticationScramSha512

Expand
属性Description

password

存储密码的 Secret 中的密钥名称。

字符串

secretName

包含密码的 Secret 名称。

字符串

12.2.65. KafkaClientAuthenticationScramSha512 模式参考

used in: KafkaBridgeSpec, KafkaConnectSpec, KafkaMirrorMaker2ClusterSpec, KafkaMirrorMakerConsumerSpec, KafkaMirrorMakerProducerSpec

KafkaClientAuthenticationScramSha512 架构属性的完整列表

要配置基于 SASL 的 SCRAM-SHA-512 身份验证,请将 type 属性设置为 scram-sha-512。SCRAM-SHA-512 身份验证机制需要用户名和密码。

12.2.65.1. username

username 属性中指定用户名。

12.2.65.2. passwordSecret

passwordSecret 属性中,指定指向包含密码的 Secret 的链接。

您可以使用 User Operator 创建的 secret。

如果需要,您可以在明文中创建一个包含密码的文本文件,以用于身份验证:

echo -n PASSWORD > MY-PASSWORD.txt
Copy to Clipboard Toggle word wrap

然后,您可以从文本文件中创建 Secret,为密码设置您自己的字段名称(密钥):

oc create secret generic MY-CONNECT-SECRET-NAME --from-file=MY-PASSWORD-FIELD-NAME=./MY-PASSWORD.txt
Copy to Clipboard Toggle word wrap

Kafka Connect 的 SCRAM-SHA-512 客户端身份验证的 Secret 示例

apiVersion: v1
kind: Secret
metadata:
  name: my-connect-secret-name
type: Opaque
data:
  my-connect-password-field: LFTIyFRFlMmU2N2Tm
Copy to Clipboard Toggle word wrap

secretName 属性包含 Secret 的名称,password 属性包含密码存储在 Secret 中的键的名称。

重要

不要在 password 属性中指定 实际密码

Kafka Connect 基于 SASL 的 SCRAM-SHA-512 客户端身份验证配置示例

authentication:
  type: scram-sha-512
  username: my-connect-username
  passwordSecret:
    secretName: my-connect-secret-name
    password: my-connect-password-field
Copy to Clipboard Toggle word wrap

Expand
属性Description

passwordSecret

对包含密码的 Secret 的引用。

PasswordSecretSource

type

必须为 scram-sha-512

字符串

username

用于身份验证的用户名。

字符串

12.2.66. KafkaClientAuthenticationPlain 模式参考

used in: KafkaBridgeSpec, KafkaConnectSpec, KafkaMirrorMaker2ClusterSpec, KafkaMirrorMakerConsumerSpec, KafkaMirrorMakerProducerSpec

KafkaClientAuthenticationPlain schema 属性的完整列表

要配置基于 SASL 的 PLAIN 身份验证,请将 type 属性设置为 。SASL PLAIN 身份验证机制需要一个用户名和密码。

警告

SASL PLAIN 机制将在网络以明文形式传输用户名和密码。如果启用了 TLS 加密,只有使用 SASL PLAIN 身份验证。

12.2.66.1. username

username 属性中指定用户名。

12.2.66.2. passwordSecret

passwordSecret 属性中,指定指向包含密码的 Secret 的链接。

您可以使用 User Operator 创建的 secret。

如果需要,创建一个包含密码的文本文件(以明文形式用于身份验证):

echo -n PASSWORD > MY-PASSWORD.txt
Copy to Clipboard Toggle word wrap

然后,您可以从文本文件中创建 Secret,为密码设置您自己的字段名称(密钥):

oc create secret generic MY-CONNECT-SECRET-NAME --from-file=MY-PASSWORD-FIELD-NAME=./MY-PASSWORD.txt
Copy to Clipboard Toggle word wrap

Kafka Connect 的 PLAIN 客户端身份验证的 Secret 示例

apiVersion: v1
kind: Secret
metadata:
  name: my-connect-secret-name
type: Opaque
data:
  my-password-field-name: LFTIyFRFlMmU2N2Tm
Copy to Clipboard Toggle word wrap

secretName 属性包含 Secret 的名称,password 属性包含密码存储在 Secret 中的键的名称。

重要

不要在 password 属性中指定 实际密码

基于 SASL 的 PLAIN 客户端验证配置示例

authentication:
  type: plain
  username: my-connect-username
  passwordSecret:
    secretName: my-connect-secret-name
    password: my-password-field-name
Copy to Clipboard Toggle word wrap

12.2.66.3. KafkaClientAuthenticationPlain schema 属性

type 属性是一种差异性,用于区分来自 KafkaClientAuthenticationTls, KafkaClientAuthenticationScramSha256, KafkaClientAuthenticationScramSha512, KafkaClientAuthenticationOAuthKafkaClientAuthenticationPlain 类型。对于类型 KafkaClientAuthenticationPlain,它需要是值 plain

Expand
属性Description

passwordSecret

对包含密码的 Secret 的引用。

PasswordSecretSource

type

必须为

字符串

username

用于身份验证的用户名。

字符串

12.2.67. KafkaClientAuthenticationOAuth 模式参考

used in: KafkaBridgeSpec, KafkaConnectSpec, KafkaMirrorMaker2ClusterSpec, KafkaMirrorMakerConsumerSpec, KafkaMirrorMakerProducerSpec

KafkaClientAuthenticationOAuth 模式属性的完整列表

要配置 OAuth 客户端身份验证,请将 type 属性设置为 oauth

可以使用以下选项之一配置 OAuth 身份验证:

  • 客户端 ID 和 secret
  • 客户端 ID 和刷新令牌
  • 访问令牌
  • TLS

客户端 ID 和 secret

您可以在 tokenEndpointUri 属性中配置授权服务器的地址和身份验证中使用的客户端 ID 和客户端 secret。OAuth 客户端将连接到 OAuth 服务器,使用客户端 ID 和 secret 进行身份验证,并获取它用来与 Kafka 代理进行身份验证的访问令牌。在 clientSecret 属性中,指定指向包含客户端 secret 的 Secret 的链接。

使用客户端 ID 和客户端 secret 的 OAuth 客户端身份验证示例

authentication:
  type: oauth
  tokenEndpointUri: https://sso.myproject.svc:8443/auth/realms/internal/protocol/openid-connect/token
  clientId: my-client-id
  clientSecret:
    secretName: my-client-oauth-secret
    key: client-secret
Copy to Clipboard Toggle word wrap

如果需要,可以指定 范围受众

客户端 ID 和刷新令牌

您可以在 tokenEndpointUri 属性中配置 OAuth 服务器的地址和 OAuth 客户端 ID 和刷新令牌。OAuth 客户端将连接到 OAuth 服务器,使用客户端 ID 和刷新令牌进行身份验证,并获取一个用于与 Kafka 代理进行身份验证的访问令牌。在 refreshToken 属性中,指定指向包含刷新令牌的 Secret 的链接。

+ 使用客户端 ID 和刷新令牌的 OAuth 客户端身份验证示例

authentication:
  type: oauth
  tokenEndpointUri: https://sso.myproject.svc:8443/auth/realms/internal/protocol/openid-connect/token
  clientId: my-client-id
  refreshToken:
    secretName: my-refresh-token-secret
    key: refresh-token
Copy to Clipboard Toggle word wrap

访问令牌

您可以配置用于直接与 Kafka 代理身份验证的访问令牌。在这种情况下,您不指定 tokenEndpointUri。在 accessToken 属性中,指定指向包含访问令牌的 Secret 的链接。

仅使用访问令牌的 OAuth 客户端身份验证示例

authentication:
  type: oauth
  accessToken:
    secretName: my-access-token-secret
    key: access-token
Copy to Clipboard Toggle word wrap

TLS

使用 HTTPS 协议访问 OAuth 服务器不需要任何其他配置,只要其使用的 TLS 证书由可信证书颁发机构签名,并且其主机名在证书中列出。

如果您的 OAuth 服务器使用自签名证书,或者由不受可信的证书颁发机构签名,您可以在自定义资源中配置可信证书列表。tlsTrustedCertificates 属性包含一个 secret 列表,其中存储了证书的密钥名称。证书必须以 X509 格式存储。

提供的 TLS 证书示例

authentication:
  type: oauth
  tokenEndpointUri: https://sso.myproject.svc:8443/auth/realms/internal/protocol/openid-connect/token
  clientId: my-client-id
  refreshToken:
    secretName: my-refresh-token-secret
    key: refresh-token
  tlsTrustedCertificates:
    - secretName: oauth-server-ca
      certificate: tls.crt
Copy to Clipboard Toggle word wrap

OAuth 客户端默认将验证您的 OAuth 服务器的主机名是否与证书主体或其中一个替代 DNS 名称匹配。如果不需要,您可以禁用主机名验证。

禁用 TLS 主机名验证示例

authentication:
  type: oauth
  tokenEndpointUri: https://sso.myproject.svc:8443/auth/realms/internal/protocol/openid-connect/token
  clientId: my-client-id
  refreshToken:
    secretName: my-refresh-token-secret
    key: refresh-token
  disableTlsHostnameVerification: true
Copy to Clipboard Toggle word wrap

12.2.67.1. KafkaClientAuthenticationOAuth 模式属性

type 属性是一个差异性程序,它区分来自 KafkaClientAuthenticationTls, KafkaClientAuthenticationScramSha256, KafkaClientAuthenticationScramSha512, KafkaClientAuthenticationPlainKafkaClientAuthenticationOAuth 类型。对于类型 KafkaClientAuthenticationOAuth,它需要是值 oauth

Expand
属性Description

accessToken

链接到包含从授权服务器获取的访问令牌的 OpenShift Secret。

GenericSecretSource

accessTokenIsJwt

配置访问令牌是否应被视为 JWT。如果授权服务器返回不透明令牌,则此项应设为 false。默认值为 true

布尔值

受众

对授权服务器进行身份验证时使用的 OAuth 使用者。某些授权服务器需要明确设置使用者。可能的值取决于配置授权服务器的方式。默认情况下,在执行令牌端点请求时,不会指定 使用者

字符串

clientId

Kafka 客户端可以用来向 OAuth 服务器进行身份验证并使用令牌端点 URI 的 OAuth 客户端 ID。

字符串

clientSecret

链接到包含 Kafka 客户端 secret 的 OpenShift Secret,这些 secret 可以用来与 OAuth 服务器进行身份验证,并使用令牌端点 URI。

GenericSecretSource

connectTimeoutSeconds

连接授权服务器时出现连接超时(以秒为单位)。如果没有设置,则有效连接超时为 60 秒。

整数

disableTlsHostnameVerification

启用或禁用 TLS 主机名验证。默认值为 false

布尔值

maxTokenExpirySeconds

设置或限制访问令牌的生存时间到指定的秒数。如果授权服务器返回不透明令牌,则应设置此项。

整数

readTimeoutSeconds

连接到授权服务器时读取超时(以秒为单位)。如果没有设置,则有效读取超时为 60 秒。

整数

refreshToken

链接到包含刷新令牌的 OpenShift Secret,该令牌可用于从授权服务器获取访问令牌。

GenericSecretSource

scope

对授权服务器进行身份验证时使用的 OAuth 范围。些授权服务器需要设置此项。可能的值取决于配置授权服务器的方式。默认情况下,在执行令牌端点请求时不指定 范围

字符串

tlsTrustedCertificates

TLS 与 OAuth 服务器连接的可信证书。

CertSecretSource 数组

tokenEndpointUri

授权服务器令牌端点 URI。

字符串

type

必须是 oauth

字符串

12.2.68. Jaegertracing 模式 参考

used in: KafkaBridgeSpec, KafkaConnectSpec, KafkaMirrorMaker2Spec, KafkaMirrorMakerSpec

type 属性是一种分ator,用于区分使用与其它子类型中添加的 JaegerTracing 类型。它必须具有 jaeger 值才能类型 JaegerTracing

Expand
属性Description

type

必须为 jaeger

字符串

12.2.69. KafkaConnectTemplate 模式参考

使用的: KafkaConnectSpec, KafkaMirrorMaker2Spec

Expand
属性Description

部署

Kafka Connect Deployment 的模板。

DeploymentTemplate

Pod

Kafka Connect Pod 模板。

PodTemplate

apiService

Kafka Connect API Service 的模板。

InternalServiceTemplate

connectContainer

Kafka Connect 容器的模板。

ContainerTemplate

initContainer

Kafka init 容器的模板。

ContainerTemplate

podDisruptionBudget

Kafka Connect PodDisruptionBudget 模板。

PodDisruptionBudgetTemplate

serviceAccount

Kafka Connect 服务帐户的模板。

resourcetemplate

clusterRoleBinding

Kafka Connect ClusterRoleBinding 的模板。

resourcetemplate

buildPod

Kafka Connect Build Pod 的模板。构建 Pod 仅适用于 OpenShift。

PodTemplate

buildContainer

Kafka Connect Build 容器的模板。构建容器仅用于 OpenShift。

ContainerTemplate

buildConfig

用于构建新容器镜像的 Kafka Connect BuildConfig 模板。BuildConfig 仅适用于 OpenShift。

BuildConfigTemplate

buildServiceAccount

Kafka Connect Build 服务帐户的模板。

resourcetemplate

jmxSecret

Kafka Connect Cluster JMX 身份验证的 Secret 模板。

resourcetemplate

12.2.70. DeploymentTemplate 模式参考

used in: KafkaBridgeTemplate, KafkaConnectTemplate, KafkaMirrorMakerTemplate

Expand
属性Description

metadata

应用到资源的元数据。

MetadataTemplate

deploymentStrategy

用于此 Deployment 的 DeploymentStrategy。有效值为 RollingUpdateRecreate。默认为 RollingUpdate

字符串(一个 [RollingUpdate, Recreate])

12.2.71. BuildConfigTemplate 模式参考

使用的: KafkaConnectTemplate

Expand
属性Description

metadata

应用到 PodDisruptionBudgetTemplate 资源的元数据。

MetadataTemplate

pullSecret

带有用于拉取基础镜像的凭证的 Container Registry Secret。

字符串

12.2.72. ExternalConfiguration 模式参考

使用的: KafkaConnectSpec, KafkaMirrorMaker2Spec

ExternalConfiguration 模式属性的完整列表

配置外部存储属性,以定义 Kafka 连接连接器的配置选项。

您可以将 ConfigMap 或 Secret 挂载到 Kafka Connect pod 中,作为环境变量或卷。卷和环境变量在 KafkaConnect.specexternalConfiguration 属性中配置。

应用时,环境变量和卷可在开发您的连接器时使用。

12.2.72.1. env

使用 env 属性指定一个或多个环境变量。这些变量可以包含 ConfigMap 或 Secret 中的值。

包含环境变量值的 Secret 示例

apiVersion: v1
kind: Secret
metadata:
  name: aws-creds
type: Opaque
data:
  awsAccessKey: QUtJQVhYWFhYWFhYWFhYWFg=
  awsSecretAccessKey: Ylhsd1lYTnpkMjl5WkE=
Copy to Clipboard Toggle word wrap

注意

用户定义的环境变量的名称不能以 KAFKA_STRIMZI_ 开头。

要将 Secret 的值挂载到环境变量,请使用 valueFrom 属性和 secretKeyRef

将环境变量设置为来自 Secret 的值的环境变量示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
  name: my-connect
spec:
  # ...
  externalConfiguration:
    env:
      - name: AWS_ACCESS_KEY_ID
        valueFrom:
          secretKeyRef:
            name: aws-creds
            key: awsAccessKey
      - name: AWS_SECRET_ACCESS_KEY
        valueFrom:
          secretKeyRef:
            name: aws-creds
            key: awsSecretAccessKey
Copy to Clipboard Toggle word wrap

挂载 Secret 的常见用例是用于与 Amazon AWS 通信的连接器。连接器需要能够读取 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY

要将 ConfigMap 中的值挂载到环境变量,请在 valueFrom 属性中使用 configMapKeyRef,如下例所示。

从 ConfigMap 中设置为值的环境变量示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
  name: my-connect
spec:
  # ...
  externalConfiguration:
    env:
      - name: MY_ENVIRONMENT_VARIABLE
        valueFrom:
          configMapKeyRef:
            name: my-config-map
            key: my-key
Copy to Clipboard Toggle word wrap

12.2.72.2. 卷

使用卷将 ConfigMap 或 Secret 挂载到 Kafka Connect pod。

在以下场景中使用卷而不是环境变量非常有用:

  • 挂载用于配置 Kafka 连接连接器的属性文件
  • 使用 TLS 证书挂载信任存储或密钥存储

卷挂载到路径 /opt/kafka/external-configuration/ <volume-name> 上的 Kafka Connect 容器中。例如,名为 connector-config 的卷中的文件将出现在目录 /opt/kafka/external-configuration/connector-config

配置 提供程序 从配置外部加载值。使用提供程序机制避免在 Kafka Connect REST 接口上传递受限信息。

  • FileConfigProvider 从文件中的属性加载配置值。
  • DirectoryConfigProvider 从目录结构中分离文件加载配置值。

如果要添加多个供应商,包括自定义供应商,请使用逗号分隔的列表。您可以使用自定义供应商从其他文件位置加载值。

使用 FileConfigProvider 加载属性值

在本例中,名为 mysecret 的 Secret 包含 connector 属性,用于指定数据库名称和密码:

带有数据库属性的 Secret 示例

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
stringData:
  connector.properties: |- 
1

    dbUsername: my-username 
2

    dbPassword: my-password
Copy to Clipboard Toggle word wrap

1
属性文件格式的连接器配置。
2
配置中使用的数据库用户名和密码属性。

Secret 和 FileConfigProvider 配置供应商在 Kafka Connect 配置中指定。

  • Secret 挂载到名为 connector-config 的卷。
  • FileConfigProvider 是提供别名 文件

来自 Secret 的外部卷设置为值示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
  name: my-connect
spec:
  # ...
  config:
    config.providers: file 
1

    config.providers.file.class: org.apache.kafka.common.config.provider.FileConfigProvider 
2

  #...
  externalConfiguration:
    volumes:
      - name: connector-config 
3

        secret:
          secretName: mysecret 
4
Copy to Clipboard Toggle word wrap

1
配置提供程序的别名用于定义其他配置参数。
2
FileConfigProvider 从属性文件提供值。参数使用 config.providers 中的别名,格式为 config.providers.${alias}.class
3
包含 Secret 的卷名称。每个卷都必须在 name 属性中指定 名称,并引用 ConfigMap 或 Secret。
4
Secret 的名称。

Secret 中属性值的占位符在连接器配置中被引用。占位符结构为 file:PATH-AND-FILE-NAME :PROPERTYFileConfigProvider 从连接程序配置中挂载的 Secret 读取并提取数据库的 usernamepassword 属性值。

显示外部值的占位符示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnector
metadata:
  name: my-source-connector
  labels:
    strimzi.io/cluster: my-connect-cluster
spec:
  class: io.debezium.connector.mysql.MySqlConnector
  tasksMax: 2
  config:
    database.hostname: 192.168.99.1
    database.port: "3306"
    database.user: "${file:/opt/kafka/external-configuration/connector-config/mysecret:dbUsername}"
    database.password: "${file:/opt/kafka/external-configuration/connector-config/mysecret:dbPassword}"
    database.server.id: "184054"
    #...
Copy to Clipboard Toggle word wrap

使用 DirectoryConfigProvider 从独立文件加载属性值

在本例中,Secret 在单独的文件中包含 TLS 信任存储和密钥存储用户凭证。

带有用户凭证的 Secret 示例

apiVersion: v1
kind: Secret
metadata:
  name: my-user
  labels:
    strimzi.io/kind: KafkaUser
    strimzi.io/cluster: my-cluster
type: Opaque
data: 
1

  ca.crt: # Public key of the client CA
  user.crt: # User certificate that contains the public key of the user
  user.key: # Private key of the user
  user.p12: # PKCS #12 archive file for storing certificates and keys
  user.password: # Password for protecting the PKCS #12 archive file
Copy to Clipboard Toggle word wrap

Secret 和 DirectoryConfigProvider 配置供应商在 Kafka Connect 配置中指定。

  • Secret 挂载到名为 connector-config 的卷。
  • DirectoryConfigProvider 是提供别名 目录

为用户凭证文件设置的外部卷示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
  name: my-connect
spec:
  # ...
  config:
    config.providers: directory
    config.providers.directory.class: org.apache.kafka.common.config.provider.DirectoryConfigProvider 
1

  #...
  externalConfiguration:
    volumes:
      - name: cluster-ca
        secret:
          secretName: my-cluster-cluster-ca-cert
      - name: my-user
        secret:
          secretName: my-user
Copy to Clipboard Toggle word wrap

1 1
DirectoryConfigProvider 提供来自目录中的文件的值。参数使用 config.providers 中的别名,格式为 config.providers.${alias}.class

凭据的占位符在连接器配置中引用。占位符结构 是目录:PATH:FILE-NAMEDirectoryConfigProvider 在连接器配置中从挂载的 Secret 中读取并提取凭证。

显示外部值的占位符示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnector
metadata:
  name: my-source-connector
  labels:
    strimzi.io/cluster: my-connect-cluster
spec:
  class: io.debezium.connector.mysql.MySqlConnector
  tasksMax: 2
  config:
    # ...
    database.history.producer.security.protocol: SSL
    database.history.producer.ssl.truststore.type: PEM
    database.history.producer.ssl.truststore.certificates: "${directory:/opt/kafka/external-configuration/cluster-ca:ca.crt}"
    database.history.producer.ssl.keystore.type: PEM
    database.history.producer.ssl.keystore.certificate.chain: "${directory:/opt/kafka/external-configuration/my-user:user.crt}"
    database.history.producer.ssl.keystore.key: "${directory:/opt/kafka/external-configuration/my-user:user.key}"
    #...
Copy to Clipboard Toggle word wrap

12.2.72.3. ExternalConfiguration schema 属性

Expand
属性Description

env

使 Kafka Connect pod 中的 Secret 或 ConfigMap 的数据作为环境变量提供。

ExternalConfigurationEnv 数组

使 Kafka Connect pod 中的 Secret 或 ConfigMap 的数据作为卷可用。

ExternalConfigurationVolumeSource 数组

12.2.73. ExternalConfigurationEnv 模式参考

used in: ExternalConfiguration

Expand
属性Description

name

传递给 Kafka Connect pod 的环境变量的名称。环境变量的名称不能以 KAFKA_STRIMZI_ 开头。

字符串

valueFrom

将传递给 Kafka Connect pod 的环境变量值。它可以作为 Secret 或 ConfigMap 字段的引用传递。该字段必须正好指定一个 Secret 或 ConfigMap。

ExternalConfigurationEnvVarSource

12.2.74. ExternalConfigurationEnvVarSource 模式参考

used in: ExternalConfigurationEnv

Expand
属性Description

configMapKeyRef

引用 ConfigMap 中的键。如需更多信息,请参阅 core/v1 configmapkeyselector 的外部文档

ConfigMapKeySelector

secretKeyRef

引用 Secret 中的密钥。如需更多信息,请参阅 core/v1 secretkeyselector 的外部文档

SecretKeySelector

12.2.75. ExternalConfigurationVolumeSource schema 引用

used in: ExternalConfiguration

Expand
属性Description

configMap

引用 ConfigMap 中的键。必须指定一个 Secret 或 ConfigMap。如需更多信息,请参阅 core/v1 configmapvolumesource 的外部文档

ConfigMapVolumeSource

name

添加至 Kafka Connect pod 的卷名称。

字符串

secret

引用 Secret 中的密钥。必须指定一个 Secret 或 ConfigMap。如需更多信息,请参阅 core/v1 secretvolume 源的外部文档

SecretVolumeSource

12.2.76. 构建 架构参考

使用的: KafkaConnectSpec

Build 架构属性的完整列表

为 Kafka Connect 部署配置额外的连接器。

12.2.76.1. output

要使用额外的连接器插件构建新容器镜像,AMQ Streams 需要一个容器 registry,其中可将镜像推送到、存储和拉取(pull)镜像。AMQ Streams 没有运行自己的容器 registry,因此必须提供 registry。AMQ Streams 支持私有容器 registry 和公共 registry,如 QuayDocker Hub。容器 registry 在 KafkaConnect 自定义资源的 .spec.build.output 部分中配置。输出 配置(需要它)支持两种类型: dockerimagestream

使用 Docker registry

要使用 Docker 注册表,您必须将 类型指定为 docker,而 image 字段则具有新容器镜像的完整名称。全名必须包含:

  • registry 的地址
  • 端口号(如果监听非标准端口)
  • 新容器镜像的标签

有效容器镜像名称示例:

  • docker.io/my-org/my-image/my-tag
  • quay.io/my-org/my-image/my-tag
  • image-registry.image-registry.svc:5000/myproject/kafka-connect-build:latest

每个 Kafka Connect 部署都必须使用单独的镜像,这可能代表在最基本的级别的不同标签。

如果 registry 需要身份验证,请使用 pushSecret 使用 registry 凭证设置 Secret 名称。对于 Secret,使用 kubernetes.io/dockerconfigjson 类型和一个 .dockerconfigjson 文件来包含 Docker 凭证。有关从私有 registry 中拉取镜像的更多信息,请参阅 基于现有 Docker 凭证创建 Secret

输出 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
  name: my-connect-cluster
spec:
  #...
  build:
    output:
      type: docker 
1

      image: my-registry.io/my-org/my-connect-cluster:latest 
2

      pushSecret: my-registry-credentials 
3

  #...
Copy to Clipboard Toggle word wrap

1
(必需)AMQ Streams 使用的输出类型。
2
(必需)使用的镜像名称,包括存储库和标签。
3
(可选)带有容器 registry 凭证的 secret 名称。

Using OpenShift ImageStream

您可以使用 OpenShift ImageStream 来存储新的容器镜像,而不是 Docker。在部署 Kafka 连接前,必须手动创建 ImageStream。要使用 ImageStream,将类型设置为 imagestream,并使用 image 属性指定 ImageStream 和所用的标签的名称。例如,my-connect-image-stream:latest

输出 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
  name: my-connect-cluster
spec:
  #...
  build:
    output:
      type: imagestream 
1

      image: my-connect-build:latest 
2

  #...
Copy to Clipboard Toggle word wrap

1
(必需)AMQ Streams 使用的输出类型。
2
(必需)ImageStream 和标签的名称。

12.2.76.2. plugins

连接器插件是一组文件,用于定义连接到特定类型的外部系统所需的实施。容器镜像所需的连接器插件必须使用 KafkaConnect 自定义资源的 .spec.build.plugins 属性进行配置。每个连接器插件都必须有一个名称,该名称在 Kafka Connect 部署中是唯一的。另外,必须列出插件工件。这些工件由 AMQ Streams 下载,添加到新容器镜像中,并在 Kafka Connect 部署中使用。连接器插件工件还可以包括其他组件,如(de) serializers。每个连接器插件都会下载到单独的目录中,以便不同的连接器及其依赖关系被正确 沙盒。每个插件必须至少配置一个 工件

带有两个连接器 插件 插件配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
  name: my-connect-cluster
spec:
  #...
  build:
    output:
      #...
    plugins: 
1

      - name: debezium-postgres-connector
        artifacts:
          - type: tgz
            url: https://repo1.maven.org/maven2/io/debezium/debezium-connector-postgres/1.3.1.Final/debezium-connector-postgres-1.3.1.Final-plugin.tar.gz
            sha512sum: 962a12151bdf9a5a30627eebac739955a4fd95a08d373b86bdcea2b4d0c27dd6e1edd5cb548045e115e33a9e69b1b2a352bee24df035a0447cb820077af00c03
      - name: camel-telegram
        artifacts:
          - type: tgz
            url: https://repo.maven.apache.org/maven2/org/apache/camel/kafkaconnector/camel-telegram-kafka-connector/0.7.0/camel-telegram-kafka-connector-0.7.0-package.tar.gz
            sha512sum: a9b1ac63e3284bea7836d7d24d84208c49cdf5600070e6bd1535de654f6920b74ad950d51733e8020bf4187870699819f54ef5859c7846ee4081507f48873479
  #...
Copy to Clipboard Toggle word wrap

1
(必需)连接器插件列表及其工件。

AMQ Streams 支持以下工件类型:

  • JAR 文件,用于下载并直接使用
  • TGZ 归档,下载和解包
  • ZIP 归档,下载和解包
  • Maven 工件,使用 Maven 协调
  • 其他工件(即下载并直接使用)
重要

AMQ Streams 不执行下载工件的任何安全扫描。为安全起见,您应该首先手动验证工件,并配置 checksum 验证以确保在自动构建和 Kafka Connect 部署中使用相同的工件。

使用 JAR 工件

JAR 工件表示已下载并添加到容器镜像的 JAR 文件。要使用 JAR 工件,将 type 属性设置为 jar,并使用 url 属性指定下载位置。

另外,您可以指定工件的 SHA-512 校验和。如果指定,AMQ Streams 会在构建新容器镜像时验证工件的 checksum。

JAR 工件示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
  name: my-connect-cluster
spec:
  #...
  build:
    output:
      #...
    plugins:
      - name: my-plugin
        artifacts:
          - type: jar 
1

            url: https://my-domain.tld/my-jar.jar 
2

            sha512sum: 589...ab4 
3

          - type: jar
            url: https://my-domain.tld/my-jar2.jar
  #...
Copy to Clipboard Toggle word wrap

1
(必需)工件类型。
2
(必需)从中下载工件的 URL。
3
(可选)SHA-512 校验和以验证构件。

使用 TGZ 工件

TGZ 工件用于下载使用 Gzip 压缩方式压缩的 TAR 归档。TGZ 构件可以包含整个 Kafka Connect 连接器,即使组成了多个不同的文件。在构建新容器镜像时,AMQ Streams 会自动下载并解压缩 TGZ 工件。要使用 TGZ 工件,将 type 属性设置为 tgz,并使用 url 属性指定下载位置。

另外,您可以指定工件的 SHA-512 校验和。如果指定,AMQ Streams 会在解包和构建新容器镜像前验证 checksum。

TGZ 工件示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
  name: my-connect-cluster
spec:
  #...
  build:
    output:
      #...
    plugins:
      - name: my-plugin
        artifacts:
          - type: tgz 
1

            url: https://my-domain.tld/my-connector-archive.tgz 
2

            sha512sum: 158...jg10 
3

  #...
Copy to Clipboard Toggle word wrap

1
(必需)工件类型。
2
(必需)下载存档的 URL。
3
(可选)SHA-512 校验和以验证构件。

使用 ZIP 工件

ZIP 工件用于下载 ZIP 压缩存档。使用与上一节中描述的 TGZ 工件相同的方式使用 ZIP 工件。唯一的区别是您指定 type: zip 而不是 type: tgz

使用 Maven 工件

Maven 工件用于将连接器插件工件指定为 Maven 协调。Maven 会协调识别插件工件和依赖项,以便它们可以定位并从 Maven 存储库获取。

注意

连接器构建过程必须可以访问 Maven 存储库,才能将工件添加到容器镜像中。

Maven 工件示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
  name: my-connect-cluster
spec:
  #...
  build:
    output:
      #...
    plugins:
      - name: my-plugin
        artifacts:
          - type: maven 
1

            repository: https://mvnrepository.com 
2

            group: org.apache.camel.kafkaconnector 
3

            artifact: camel-kafka-connector 
4

            version: 0.11.0 
5

  #...
Copy to Clipboard Toggle word wrap

1
(必需)工件类型。
2
(可选)用于从中下载工件的 Maven 存储库。如果没有指定存储库,则默认使用 Maven Central 存储库
3
(必需)Maven 组 ID。
4
(必需)Maven 构件类型。
5
(必需)Maven 版本号。

使用其他 工件

其他 工件(artifact)代表下载并添加到容器镜像的任何文件。如果要在生成的容器镜像中使用特定名称作为工件,请使用 fileName 字段。如果没有指定文件名,则根据 URL 哈希来命名该文件。

另外,您可以指定工件的 SHA-512 校验和。如果指定,AMQ Streams 会在构建新容器镜像时验证工件的 checksum。

其他 工件示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
  name: my-connect-cluster
spec:
  #...
  build:
    output:
      #...
    plugins:
      - name: my-plugin
        artifacts:
          - type: other  
1

            url: https://my-domain.tld/my-other-file.ext  
2

            sha512sum: 589...ab4  
3

            fileName: name-the-file.ext  
4

  #...
Copy to Clipboard Toggle word wrap

1
(必需)工件类型。
2
(必需)从中下载工件的 URL。
3
(可选)SHA-512 校验和以验证构件。
4
(可选)文件存储在生成的容器镜像中的名称。

12.2.76.3. 构建 架构属性

Expand
属性Description

output

配置应存储新构建的镜像的位置。必需。类型取决于给定对象中的 output.type 属性的值,它必须是 [docker, imagestream] 中的一个。

Docker 输出, ImageStreamOutput

资源

为构建保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源查询的外部文档

ResourceRequirements

plugins

应该添加到 Kafka 连接中的连接器插件列表。必需。

plugin 数组

12.2.77. DockerOutput 模式参考

使用的: 构建

type 属性是一种分ator,用于区分 DockerOutput 类型与 ImageStreamOutput 类型。它必须具有 docker 的值才能类型为 DockerOutput

Expand
属性Description

image

用于标记和推送新构建的镜像的完整名称。例如,quay.io/my-organization/my-custom-connect:latest。必需。

字符串

pushSecret

带有用于推送新构建的镜像的凭证的 Container Registry Secret。

字符串

additionalKanikoOptions

配置构建新连接镜像时将传递给 Kaniko executor 的额外选项。允许的选项有:--customPlatform, --insecure-pull, --insecure-registry, --log-format, --log-timestamp, --registry-mirror, --reproducible, --single-snapshot, --skip-tls-verify, --skip-tls-verify-pull, --skip-tls-verify-pull, --skip-tls-verify-registry, --verbosity, --snapshotMode-new-run.这些选项仅适用于使用 Kaniko executor 的 OpenShift。OpenShift 中会忽略它们。这些选项在 Kaniko GitHub 存储库中 描述。更改此字段不会触发 Kafka Connect 镜像的新构建。

字符串数组

type

必须是 docker

字符串

12.2.78. ImageStreamOutput 模式参考

使用的: 构建

type 属性是一种分ator,用于区分 ImageStreamOutput 类型与 DockerOutput 类型。它必须具有类型 ImageStreamOutput 的值 镜像流

Expand
属性Description

image

将新构建镜像的 ImageStream 的名称和标签。例如,my-custom-connect:latest。必需。

字符串

type

必须是 镜像流

字符串

12.2.79. 插件 架构参考

使用的: 构建

Expand
属性Description

name

连接器插件的唯一名称。将用于生成将存储连接器工件的路径。名称必须在 KafkaConnect 资源中唯一。名称必须遵循以下模式: ^[a-z][-_a-z0-9]*[a-z]$.必需。

字符串

工件

属于此连接器插件的工件列表。必需。

JarArtifact, TgzArtifact, ZipArtifact, MavenArtifact, OtherArtifact 数组

12.2.80. JarArtifact 模式参考

使用的: 插件

Expand
属性Description

url

要下载的构件的 URL。AMQ Streams 不执行下载工件的任何安全扫描。为安全起见,您应该首先手动验证工件并配置 checksum 验证,以确保自动构建中使用相同的工件。jarziptgz 和其他 工件是必需的。不适用于 maven 工件类型。

字符串

sha512sum

工件的 SHA512 校验和。可选。如果指定,则在构建新容器时将验证校验和。如果没有指定,则不会验证下载的工件。不适用于 maven 工件类型。

字符串

insecure

默认情况下,验证使用 TLS 的连接来检查它们是否安全。使用的服务器证书必须是有效、可信,并且包含服务器名称。通过将此选项设置为 true,禁用所有 TLS 验证,即使服务器被视为不安全,也会下载工件。

布尔值

type

必须是 jar

字符串

12.2.81. TgzArtifact 模式参考

使用的: 插件

Expand
属性Description

url

要下载的构件的 URL。AMQ Streams 不执行下载工件的任何安全扫描。为安全起见,您应该首先手动验证工件并配置 checksum 验证,以确保自动构建中使用相同的工件。jarziptgz 和其他 工件是必需的。不适用于 maven 工件类型。

字符串

sha512sum

工件的 SHA512 校验和。可选。如果指定,则在构建新容器时将验证校验和。如果没有指定,则不会验证下载的工件。不适用于 maven 工件类型。

字符串

insecure

默认情况下,验证使用 TLS 的连接来检查它们是否安全。使用的服务器证书必须是有效、可信,并且包含服务器名称。通过将此选项设置为 true,禁用所有 TLS 验证,即使服务器被视为不安全,也会下载工件。

布尔值

type

必须为 tgz

字符串

12.2.82. ZipArtifact 模式参考

使用的: 插件

Expand
属性Description

url

要下载的构件的 URL。AMQ Streams 不执行下载工件的任何安全扫描。为安全起见,您应该首先手动验证工件并配置 checksum 验证,以确保自动构建中使用相同的工件。jarziptgz 和其他 工件是必需的。不适用于 maven 工件类型。

字符串

sha512sum

工件的 SHA512 校验和。可选。如果指定,则在构建新容器时将验证校验和。如果没有指定,则不会验证下载的工件。不适用于 maven 工件类型。

字符串

insecure

默认情况下,验证使用 TLS 的连接来检查它们是否安全。使用的服务器证书必须是有效、可信,并且包含服务器名称。通过将此选项设置为 true,禁用所有 TLS 验证,即使服务器被视为不安全,也会下载工件。

布尔值

type

必须为 zip.

字符串

12.2.83. MavenArtifact 模式参考

使用的: 插件

type 属性是一个标尺,用于区分 MavenArtifact 类型与 JarArtifactTgzArtifactZipArtifact OtherArtifact.它必须具有 MavenArtifact 类型的值 maven

Expand
属性Description

软件仓库

用于从中下载工件的 Maven 存储库。仅适用于 maven 工件类型。

字符串

group

Maven 组 ID.仅适用于 maven 工件类型。

字符串

工件

Maven 工件 ID。仅适用于 maven 工件类型。

字符串

version

Maven 版本号。仅适用于 maven 工件类型。

字符串

type

必须为 maven

字符串

12.2.84. OtherArtifact 模式参考

使用的: 插件

Expand
属性Description

url

要下载的构件的 URL。AMQ Streams 不执行下载工件的任何安全扫描。为安全起见,您应该首先手动验证工件并配置 checksum 验证,以确保自动构建中使用相同的工件。jarziptgz 和其他 工件是必需的。不适用于 maven 工件类型。

字符串

sha512sum

工件的 SHA512 校验和。可选。如果指定,则在构建新容器时将验证校验和。如果没有指定,则不会验证下载的工件。不适用于 maven 工件类型。

字符串

fileName

将在其中存储工件的名称。

字符串

insecure

默认情况下,验证使用 TLS 的连接来检查它们是否安全。使用的服务器证书必须是有效、可信,并且包含服务器名称。通过将此选项设置为 true,禁用所有 TLS 验证,即使服务器被视为不安全,也会下载工件。

布尔值

type

必须是 其他

字符串

12.2.85. KafkaConnectStatus schema 参考

使用的: KafkaConnect

Expand
属性Description

conditions

状态条件列表。

状况 数组

observedGeneration

Operator 最后协调的 CRD 的生成。

整数

url

用于管理和监控 Kafka 连接连接器的 REST API 端点的 URL。

字符串

connectorPlugins

此 Kafka Connect 部署中的连接器插件列表。

ConnectorPlugin 数组

labelSelector

提供此资源的 pod 的标签选择器。

字符串

replicas

提供此资源的当前 pod 数量。

整数

12.2.86. ConnectorPlugin schema 参考

使用的: KafkaConnectStatus, KafkaMirrorMaker2Status

Expand
属性Description

type

连接器插件的类型。可用的类型是 sink

字符串

version

连接器插件的版本。

字符串

连接器插件的类。

字符串

12.2.87. KafkaTopic 模式参考

Expand
属性Description

spec

主题的规格。

KafkaTopicSpec

status

主题的状态。

KafkaTopicStatus

12.2.88. KafkaTopicSpec 模式参考

使用的: KafkaTopic

Expand
属性Description

分区

主题应具有的分区数量。这无法在创建主题后减少。可在创建主题后增加它,但务必要了解具有的后果,特别是与语义分区相关的主题。如果不存在,则默认使用 num.partitions 的代理配置。

整数

replicas

主题应具有的副本数。如果不存在,则这个代理配置将默认为 default.replication.factor

整数

config

主题配置。

map

topicName

主题的名称。如果不存在,则默认为主题的 metadata.name。建议不要设置此项,除非主题名称不是有效的 OpenShift 资源名称。

字符串

12.2.89. KafkaTopicStatus 模式参考

使用的: KafkaTopic

Expand
属性Description

conditions

状态条件列表。

状况 数组

observedGeneration

Operator 最后协调的 CRD 的生成。

整数

topicName

主题名称。

字符串

12.2.90. KafkaUser 模式参考

Expand
属性Description

spec

用户的规格。

KafkaUserSpec

status

Kafka 用户的状态。

KafkaUserStatus

12.2.91. KafkaUserSpec 模式参考

使用的: KafkaUser

Expand
属性Description

身份验证

此 Kafka 用户启用了验证机制。支持的验证机制有 scram-sha-512tlstls-external

  • SCRAM -sha-512 生成带有 SASL SCRAM-SHA-512 凭据的 secret。
  • TLS 为 mutual TLS 身份验证生成包含用户证书的 secret。
  • TLS-external 不会生成用户证书。但使用 User Operator 之外生成的用户证书准备使用 mutual TLS 身份验证的用户准备。为此用户设置的 ACL 和配额采用 CN=<username&gt; 格式进行配置。

身份验证是可选的。如果没有配置身份验证,则不会生成任何凭证。为用户设置的 ACL 和配额以 < username> 格式配置用于 SASL 身份验证。类型取决于给定对象中的 authentication.type 属性的值,它必须是 [tls、tls-external、scram-sha-512] 之一。

KafkaUserTlsClientAuthentication, KafkaUserTlsExternalClientAuthentication, KafkaUserScramSha512ClientAuthentication

授权

此 Kafka 用户的授权规则。类型取决于给定对象中的 authorization.type 属性的值,它必须是 [simple] 中的一个。

KafkaUserAuthorizationSimple

配额

用于控制客户端使用的代理资源的请求的配额。可以强制使用网络带宽和请求率配额。Kafka 用户配额的Kafka 文档可在 http://kafka.apache.org/documentation/#design_quotas 中找到。

KafkaUserQuotas

模板

模板来指定 Kafka 用户 Secret 的 生成方式。

KafkaUserTemplate

12.2.92. KafkaUserTlsClientAuthentication 模式参考

使用的: KafkaUserSpec

type 属性是一种差异性,用于区分 KafkaUserTlsClientAuthentication 类型来自于 KafkaUserTlsExternalClientAuthentication, KafkaUserScramSha512ClientAuthentication。对于类型 KafkaUserTlsClientAuthentication,它需要是值 tls

Expand
属性Description

type

必须为 tls

字符串

使用的: KafkaUserSpec

type 属性是一个差异性,用于区分 KafkaUserTlsExternalClientAuthentication 类型来自 KafkaUserTlsClientAuthentication, KafkaUserScramSha512ClientAuthentication。它必须拥有类型为 KafkaUserTlsExternalClientAuthentication 的值 tls-external

Expand
属性Description

type

必须是 tls-external

字符串

使用的: KafkaUserSpec

type 属性是一种差异性,用于区分来自 KafkaUserTlsClientAuthenticationKafkaUserScramSha512ClientAuthentication 类型,即 KafkaUserTlsExternalClientAuthentication。它必须值为 scram-sha-512 类型,类型为 KafkaUserScramSha512ClientAuthentication

Expand
属性Description

password

指定用户的密码。如果没有设置,则 User Operator 会生成一个新密码。

密码

type

必须为 scram-sha-512

字符串

12.2.95. 密码 架构参考

使用的: KafkaUserScramSha512ClientAuthentication

Expand
属性Description

valueFrom

应该从中读取密码的机密。

PasswordSource

12.2.96. PasswordSource 模式参考

使用的: 密码

Expand
属性Description

secretKeyRef

在资源命名空间中选择 Secret 的键。如需更多信息,请参阅 core/v1 secretkeyselector 的外部文档

SecretKeySelector

12.2.97. KafkaUserAuthorizationSimple 模式参考

使用的: KafkaUserSpec

type 属性是一种分ator,用于区分使用 KafkaUserAuthorizationSimple 的子类型,它可能会在以后添加。它必须使类型 KafkaUserAuthorizationSimple 的值 很简单

Expand
属性Description

type

必须 非常简单

字符串

ACL

应用于此用户的 ACL 规则列表。

AclRule 数组

12.2.98. AclRule 模式参考

使用的: KafkaUserAuthorizationSimple

AclRule 模式属性的完整列表

在使用 AclAuthorizer 时,为 KafkaUser 配置访问控制规则。

使用授权的 KafkaUser 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaUser
metadata:
  name: my-user
  labels:
    strimzi.io/cluster: my-cluster
spec:
  # ...
  authorization:
    type: simple
    acls:
      - resource:
          type: topic
          name: my-topic
          patternType: literal
        operation: Read
      - resource:
          type: topic
          name: my-topic
          patternType: literal
        operation: Describe
      - resource:
          type: group
          name: my-group
          patternType: prefix
        operation: Read
Copy to Clipboard Toggle word wrap

12.2.98.1. resource

使用 resource 属性指定规则应用到的资源。

简单授权支持四种资源类型,这些资源类型在 type 属性中指定:

  • 主题(主题)
  • 消费者组()
  • 集群(集群)
  • 事务 ID (事务 ID)

对于主题、组和事务 ID 资源,您可以在 name 属性中指定规则应用到的 资源的名称

集群类型资源没有名称。

名称使用 patternType 属性指定为 字面前缀

  • 字面上的名称与在 name 字段中指定的名称完全相同。
  • 前缀名称使用 name 值作为前缀,然后将该规则应用到名称以该值开头的所有资源。

patternType 设置为 字面值 时,您可以将 name 设置为 * 以表示规则适用于所有资源。

允许用户读取所有主题的消息的 ACL 规则示例

    acls:
      - resource:
          type: topic
          name: "*"
          patternType: literal
        operation: Read
Copy to Clipboard Toggle word wrap

12.2.98.2. type

规则类型,用于 允许拒绝 (当前不支持)操作。

type 字段是可选的。如果未指定 类型,则 ACL 规则将被视为 允许规则

12.2.98.3. operation

为规则指定 operation 来允许或拒绝操作。

支持以下操作:

  • 删除
  • 改变
  • describe
  • All
  • IdempotentWrite
  • ClusterAction
  • 创建
  • AlterConfigs
  • DescribeConfigs

只有某些操作都用于每个资源。

有关 AclAuthorizer、ACL 和支持的资源和操作组合的更多信息,请参阅 授权和 ACL

12.2.98.4. 主机

使用 host 属性指定允许或拒绝规则的远程主机。

使用星号(*)来允许或拒绝来自所有主机的操作。host 字段是可选的。如果未指定 主机,则默认使用 * 值。

12.2.98.5. AclRule 模式属性

Expand
属性Description

主机

允许或拒绝 ACL 规则中描述的操作的主机。

字符串

operation

允许或拒绝的操作.支持的操作包括:读取、写入、创建、删除、Alt、描述、ClusterAction、AlterConfigs、DescribeConfigs、IdempotentWrite 和 All。

字符串(一个 [Read, Write, Delete, Alter, Describe, All, IdempotentWrite, ClusterAction, Create, AlterConfigs, DescribeConfigs])

resource

指明应用给定 ACL 规则的资源。这个类型取决于给定对象中的 resource.type 属性的值,它必须是 [topic、group、cluster, transactionalId] 中的一个。

AclRuleTopicResource, AclRuleGroupResource, AclRuleClusterResource, AclRuleTransactionalIdResource

type

规则的类型。目前唯一支持的类型是 允许。带有类型 allow 的 ACL 规则允许用户执行指定的操作。默认值为 允许

字符串([allow、deny] 之一)

12.2.99. AclRuleTopicResource 模式参考

使用的: AclRule

type 属性是一种差异性,用于区分来自 AclRuleTopicResourceAclRuleTopicResource 类型、AclRuleClusterResourceAclRuleTransactionalIdResource。它必须具有类型 AclRuleTopicResource 的值 主题

Expand
属性Description

type

必须为 主题

字符串

name

应用给定 ACL 规则的资源名称。可以和 patternType 字段组合使用前缀模式。

字符串

patternType

描述 resource 字段中使用的模式。支持的类型是 字面值前缀。通过 字面 模式类型,资源字段将用作完整主题名称的定义。使用 前缀 模式类型时,资源名称将仅用作前缀。默认值为 literal

字符串([前缀、字面] 之一)

12.2.100. AclRuleGroupResource 模式参考

使用的: AclRule

type 属性是一种差异性,用于区分来自 AclRuleTopicResourceAclRuleGroupResource 类型、AclRuleClusterResourceAclRuleTransactionalIdResource。它必须具有类型 AclRuleGroupResource 的值

Expand
属性Description

type

必须为

字符串

name

应用给定 ACL 规则的资源名称。可以和 patternType 字段组合使用前缀模式。

字符串

patternType

描述 resource 字段中使用的模式。支持的类型是 字面值前缀。通过 字面 模式类型,资源字段将用作完整主题名称的定义。使用 前缀 模式类型时,资源名称将仅用作前缀。默认值为 literal

字符串([前缀、字面] 之一)

12.2.101. AclRuleClusterResource 模式参考

使用的: AclRule

type 属性是一个差异性符,用于区分来自 AclRuleTopicResourceAclRuleClusterResource 类型、AclRuleGroupResourceAclRuleTransactionalIdResource。对于类型 AclRuleClusterResource,它需要值 cluster

Expand
属性Description

type

必须是 集群

字符串

12.2.102. AclRuleTransactionalIdResource schema 参考

使用的: AclRule

type 属性是一种差异性,用于区分来自 AclRuleTransactionalIdResourceAclRuleTransactionalIdResourceAclRuleGroupResourceAclRuleClusterResource。对于类型 AclRuleTransactionalIdResource,它必须是值 transactionalId

Expand
属性Description

type

必须是 transactionalId

字符串

name

应用给定 ACL 规则的资源名称。可以和 patternType 字段组合使用前缀模式。

字符串

patternType

描述 resource 字段中使用的模式。支持的类型是 字面值前缀。通过 字面 模式类型,资源字段将用作全名的定义。使用 前缀 模式类型时,资源名称将仅用作前缀。默认值为 literal

字符串([前缀、字面] 之一)

12.2.103. KafkaUserQuotas 模式参考

使用的: KafkaUserSpec

KafkaUserQuotas 模式属性的完整列表

Kafka 允许用户 设置配额 来控制客户端的资源使用。

12.2.103.1. quotas

您可以将客户端配置为使用以下类型的配额:

  • 网络使用 配额为每个共享配额的客户端组指定字节速率阈值。
  • CPU 使用率配额为来自客户端的代理请求指定一个窗口。该窗口是客户端发出请求的时间百分比。客户端对代理的 I/O 线程和网络线程发出请求。
  • 分区数 可限制允许哪些客户端每秒制作的分区数。

分区数配额可防止 Kafka 集群由并发主题操作不堪。根据以下用户请求类型,进行分区修改:

  • 为新主题创建分区
  • 在现有主题中添加分区
  • 从主题中删除分区

您可以配置分区变异配额来控制用户请求接受修改率。

在很多情况下,对 Kafka 客户端使用配额可能很有用。例如,一个错误地配置了 Kafka producer,请求以太高速率发送。这种错误配置可能会导致其他客户端拒绝服务,因此无法阻止有问题的客户端。通过使用网络限制配额,可以防止这种情况对其他客户端产生显著影响。

AMQ Streams 支持用户级配额,但不支持客户端级配额。

Kafka 用户配额配置示例

spec:
  quotas:
    producerByteRate: 1048576
    consumerByteRate: 2097152
    requestPercentage: 55
    controllerMutationRate: 10
Copy to Clipboard Toggle word wrap

有关 Kafka 用户配额的更多信息,请参阅 Apache Kafka 文档

12.2.103.2. KafkaUserQuotas 模式属性

Expand
属性Description

consumerByteRate

每个客户端组都可以从代理获取的最大字节配额,然后再对组中的客户端进行限速。以每个代理为基础进行定义。

整数

controllerMutationRate

创建主题请求、创建分区请求和删除主题请求的速率的配额。速率由创建或删除的分区数量计算。

number

producerByteRate

每个客户端组可以发布到代理,每个客户端组群在组内的客户端被限速前可以发布到代理的配额。以每个代理为基础进行定义。

整数

requestPercentage

每个客户端组的最大 CPU 使用率配额,作为网络和 I/O 线程百分比。

整数

12.2.104. KafkaUserTemplate 模式参考

使用的: KafkaUserSpec

KafkaUserTemplate 模式属性的完整列表

为 User Operator 创建的 secret 指定额外标签和注解。

显示 KafkaUserTemplate的示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaUser
metadata:
  name: my-user
  labels:
    strimzi.io/cluster: my-cluster
spec:
  authentication:
    type: tls
  template:
    secret:
      metadata:
        labels:
          label1: value1
        annotations:
          anno1: value1
  # ...
Copy to Clipboard Toggle word wrap

12.2.104.1. KafkaUserTemplate 模式属性

Expand
属性Description

secret

KafkaUser 资源的模板。通过该模板,用户可以指定如何生成带有密码或 TLS 证书的 Secret

resourcetemplate

12.2.105. KafkaUserStatus schema 参考

使用的: KafkaUser

Expand
属性Description

conditions

状态条件列表。

状况 数组

observedGeneration

Operator 最后协调的 CRD 的生成。

整数

username

用户名。

字符串

secret

存储凭证的 Secret 的名称。

字符串

12.2.106. KafkaMirrorMaker 模式参考

KafkaMirrorMaker 类型已弃用。请使用 KafkaMirrorMaker2 替代。

Expand
属性Description

spec

Kafka MirrorMaker 的规格。

KafkaMirrorMakerSpec

status

Kafka MirrorMaker 的状态。

KafkaMirrorMakerStatus

12.2.107. KafkaMirrorMakerSpec 模式参考

使用的: KafkaMirrorMaker

KafkaMirrorMakerSpec schema 属性的完整列表

配置 Kafka MirrorMaker。

12.2.107.1. Include

使用 include 属性配置 Kafka MirrorMaker 镜像从源到目标 Kafka 集群的主题列表。

属性允许最简单的情况下,具有单一主题名称到复杂的模式的任何正则表达式。例如,您可以使用 A|B 或所有主题使用 * 镜像主题 A 和 B。您还可以将用逗号分开的多个正则表达式传递给 Kafka MirrorMaker。

使用 KafkaMirrorMakerConsumerSpecKafkaMirrorMakerProducerSpec 配置源(consumer)和目标(producer)集群。

Kafka MirrorMaker 始终与两个 Kafka 集群(源和目标集群)一起工作。要建立连接,源的 bootstrap 服务器和目标 Kafka 集群以逗号分隔的 HOSTNAME:PORT 对列表来指定。每个以逗号分隔的列表包含一个或多个 Kafka 代理,或一个 Kafka 代理指定的 Service 分区作为 HOSTNAME:PORT 对。

12.2.107.3. logging

Kafka MirrorMaker 都有自己的可配置的日志记录器:

  • mirrormaker.root.logger

MirrorMaker 使用 Apache log4j 日志记录器实现。

使用 logging 属性配置日志记录器和日志记录器级别。

您可以通过直接指定日志记录器和级别(在线)或使用自定义(外部) ConfigMap 来设置日志级别。如果使用 ConfigMap,您可以将 logging.valueFrom.configMapKeyRef.name 属性设置为包含外部日志记录配置的 ConfigMap 的名称。在 ConfigMap 中,日志记录配置使用 log4j.properties 来描述。logging.valueFrom.configMapKeyRef.namelogging.valueFrom.configMapKeyRef.key 属性都是必须的。当 Cluster Operator 运行时,会使用指定的日志记录配置创建 ConfigMap,然后在每次协调后重新创建。如果没有指定自定义 ConfigMap,则会使用默认的日志记录设置。如果没有设置特定的日志记录器值,则会继承该日志记录器的上级日志记录器设置。有关日志级别的更多信息,请参阅 Apache 日志记录服务

此处会看到 内联外部日志记录 的示例:

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker
spec:
  # ...
  logging:
    type: inline
    loggers:
      mirrormaker.root.logger: "INFO"
  # ...
Copy to Clipboard Toggle word wrap
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker
spec:
  # ...
  logging:
    type: external
    valueFrom:
      configMapKeyRef:
        name: customConfigMap
        key: mirror-maker-log4j.properties
  # ...
Copy to Clipboard Toggle word wrap

垃圾收集器(GC)

也可以使用 jvmOptions 属性 来启用(或禁用)垃圾收集器日志记录。

12.2.107.4. KafkaMirrorMakerSpec 模式属性

Expand
属性Description

version

Kafka MirrorMaker 版本。默认为 3.2.3。请参阅相关文档来了解升级或降级版本所需的流程。

字符串

replicas

部署中的 pod 数量

整数

image

pod 的 docker 镜像。

字符串

消费者

源集群的配置。

KafkaMirrorMakerConsumerSpec

制作者

目标集群的配置。

KafkaMirrorMakerProducerSpec

资源

要保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源查询的外部文档

ResourceRequirements

白名单

whitelist 属性已弃用,现在应该使用 spec.include 进行配置。镜像中包含的主题列表。此选项允许使用 Java 风格的正则表达式。使用表达式 A|B 来实现名为 A 和 B 的两个主题。或者,您可以使用正则表达式 * 来镜像所有主题。您还可以指定多个正则表达式用逗号分隔。

字符串

Include

镜像中包含的主题列表。此选项允许使用 Java 风格的正则表达式。使用表达式 A|B 来实现名为 A 和 B 的两个主题。或者,您可以使用正则表达式 * 来镜像所有主题。您还可以指定多个正则表达式用逗号分隔。

字符串

jvmOptions

pod 的 JVM 选项。

JvmOptions

logging

MirrorMaker 的日志记录配置。类型取决于给定对象中的 logging.type 属性的值,它必须是 [inline, external] 中的一个。

InlineLogging, ExternalLogging

metricsConfig

指标配置。这个类型取决于给定对象中的 metricsConfig.type 属性的值,它必须是 [jmxPrometheusExporter] 之一。

JmxPrometheusExporterMetrics

tracing

Kafka MirrorMaker 中的追踪配置。类型取决于给定对象中的 tracing.type 属性的值,它必须是 [jaeger] 中的一个。

Jaegertracing

模板

模板来指定 Kafka MirrorMaker 资源、DeploymentPod 如何生成。

KafkaMirrorMakerTemplate

livenessProbe

Pod 存活度检查。

探测

readinessProbe

Pod 就绪度检查.

探测

12.2.108. KafkaMirrorMakerConsumerSpec 模式参考

使用的: KafkaMirrorMakerSpec

KafkaMirrorMakerConsumerSpec schema 属性的完整列表

配置 MirrorMaker consumer。

12.2.108.1. numStreams

使用 consumer.numStreams 属性配置消费者的流数。

您可以通过增加消费者线程数量来增加镜像主题的吞吐量。使用者线程属于为 Kafka MirrorMaker 指定的使用者组。在消费者线程中分配主题分区,这些分区会并行使用信息。

12.2.108.2. offsetCommitInterval

使用 consumer.offsetCommitInterval 属性为使用者配置偏移自动提交间隔。

您可以指定在 Kafka MirrorMaker 消耗源 Kafka 集群的数据后提交偏移的时间间隔。时间间隔以毫秒为单位设置,默认值为 60,000。

12.2.108.3. config

使用 consumer.config 属性为使用者配置 Kafka 选项。

config 属性包含 Kafka MirrorMaker consumer 配置选项作为键,其值为以下 JSON 类型之一:

  • 字符串
  • Number
  • 布尔值

对于将特定 密码套件 用于 TLS 版本的客户端连接,您可以配置允许的 ssl 属性您还可以配置 ssl.endpoint.identification.algorithm 属性 来启用或禁用主机名验证。

例外

您可以为使用者指定并配置 Apache Kafka 配置文档 中列出的选项。

但是,选项的例外会直接由 AMQ Streams (与以下相关的 AMQ Streams)进行配置和管理:

  • Kafka 集群 bootstrap 地址
  • 安全(加密、验证和授权)
  • 消费者组标识符
  • 拦截器

具体来说,所有与以下字符串之一相等或开始的配置选项都会被禁止:

当在 config 属性中存在禁止选项时,它会被忽略,并将警告消息输出到 Cluster Operator 日志文件。所有其他选项都传递给 Kafka MirrorMaker。

重要

Cluster Operator 不会验证提供的 config 对象中的键或值。当提供无效的配置时,Kafka MirrorMaker 可能无法启动,也可能不稳定。在这种情况下,KafkaMirrorMaker.spec.consumer.config 对象中的配置应该被修复,Cluster Operator 将推出 Kafka MirrorMaker 的新配置。

12.2.108.4. groupId

使用 consumer.groupId 属性为使用者配置使用者组标识符。

Kafka MirrorMaker 使用 Kafka 使用者来消耗信息,这与任何其他 Kafka 消费者客户端相同。源 Kafka 集群消耗的消息被镜像到目标 Kafka 集群。需要组标识符,因为使用者需要是分配分区的使用者组的一部分。

12.2.108.5. KafkaMirrorMakerConsumerSpec schema 属性

Expand
属性Description

numStreams

指定要创建的消费者流线程数量。

整数

offsetCommitInterval

指定 ms 中的偏移 auto-commit 间隔。默认值为 60000。

整数

bootstrapServers

用于建立到 Kafka 集群的初始连接的 host:port 对列表。

字符串

groupId

标识此使用者所属的消费者组的唯一字符串。

字符串

身份验证

用于连接到集群的身份验证配置。这个类型取决于给定对象中的 authentication.type 属性的值,它必须是 [tls, scram-sha-256, scram-sha-256, scram-sha-512, plain, oauth]。

KafkaClientAuthenticationTls, KafkaClientAuthenticationScramSha256, KafkaClientAuthenticationScramSha512, KafkaClientAuthenticationPlain, KafkaClientAuthenticationOAuth

config

MirrorMaker 使用者配置。无法设置以下前缀的属性: ssl., bootstrap.servers, group.id, sasl., security., interceptor.classes (有: ssl.endpoint.identification.algorithm、ssl.cipher.suites、ssl.protocol、ssl.enabled.protocols)。

map

tls

用于将 MirrorMaker 连接到集群的 TLS 配置。

ClientTls

12.2.109. KafkaMirrorMakerProducerSpec 模式参考

使用的: KafkaMirrorMakerSpec

KafkaMirrorMakerProducerSpec 模式属性的完整列表

配置 MirrorMaker producer。

12.2.109.1. abortOnSendFailure

使用 producer.abortOnSendFailure 属性配置如何处理来自制作者的消息发送失败。

默认情况下,如果将消息从 Kafka MirrorMaker 发送到 Kafka 集群时出现错误:

  • Kafka MirrorMaker 容器在 OpenShift 中终止。
  • 然后,重新创建容器。

如果将 abortOnSendFailure 选项设为 false,则忽略消息发送错误。

12.2.109.2. config

使用 producer.config 属性为制作者配置 Kafka 选项。

config 属性包含 Kafka MirrorMaker producer 配置选项作为键,值在以下 JSON 类型中设置的值:

  • 字符串
  • Number
  • 布尔值

对于将特定 密码套件 用于 TLS 版本的客户端连接,您可以配置允许的 ssl 属性您还可以配置 ssl.endpoint.identification.algorithm 属性 来启用或禁用主机名验证。

例外

您可以为制作者指定并配置 Apache Kafka 配置文档中列出的选项

但是,选项的例外会直接由 AMQ Streams (与以下相关的 AMQ Streams)进行配置和管理:

  • Kafka 集群 bootstrap 地址
  • 安全(加密、验证和授权)
  • 拦截器

具体来说,所有与以下字符串之一相等或开始的配置选项都会被禁止:

当在 config 属性中存在禁止选项时,它会被忽略,并将警告消息输出到 Cluster Operator 日志文件。所有其他选项都传递给 Kafka MirrorMaker。

重要

Cluster Operator 不会验证提供的 config 对象中的键或值。当提供无效的配置时,Kafka MirrorMaker 可能无法启动,也可能不稳定。在这种情况下,KafkaMirrorMaker.spec.producer.config 对象中的配置应该被修复,Cluster Operator 将推出 Kafka MirrorMaker 的新配置。

12.2.109.3. KafkaMirrorMakerProducerSpec schema 属性

Expand
属性Description

bootstrapServers

用于建立到 Kafka 集群的初始连接的 host:port 对列表。

字符串

abortOnSendFailure

将 MirrorMaker 设置为在失败的发送中退出的标志。默认值为 true

布尔值

身份验证

用于连接到集群的身份验证配置。这个类型取决于给定对象中的 authentication.type 属性的值,它必须是 [tls, scram-sha-256, scram-sha-256, scram-sha-512, plain, oauth]。

KafkaClientAuthenticationTls, KafkaClientAuthenticationScramSha256, KafkaClientAuthenticationScramSha512, KafkaClientAuthenticationPlain, KafkaClientAuthenticationOAuth

config

MirrorMaker producer 配置。无法设置以下前缀的属性: ssl., bootstrap.servers, sasl., security., interceptor.classes (例外: ssl.endpoint.identification.algorithm, ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols)。

map

tls

用于将 MirrorMaker 连接到集群的 TLS 配置。

ClientTls

12.2.110. KafkaMirrorMakerTemplate 模式参考

使用的: KafkaMirrorMakerSpec

Expand
属性Description

部署

Kafka MirrorMaker Deployment 模板。

DeploymentTemplate

Pod

Kafka MirrorMaker Pod 模板。

PodTemplate

podDisruptionBudget

Kafka MirrorMaker PodDisruptionBudget 模板。

PodDisruptionBudgetTemplate

mirrorMakerContainer

Kafka MirrorMaker 容器的模板。

ContainerTemplate

serviceAccount

Kafka MirrorMaker 服务帐户的模板。

resourcetemplate

12.2.111. KafkaMirrorMakerStatus 模式参考

使用的: KafkaMirrorMaker

Expand
属性Description

conditions

状态条件列表。

状况 数组

observedGeneration

Operator 最后协调的 CRD 的生成。

整数

labelSelector

提供此资源的 pod 的标签选择器。

字符串

replicas

提供此资源的当前 pod 数量。

整数

12.2.112. KafkaBridge 模式参考

Expand
属性Description

spec

Kafka Bridge 的规格。

KafkaBridgeSpec

status

Kafka Bridge 的状态。

KafkaBridgeStatus

12.2.113. KafkaBridgeSpec 模式参考

使用的: KafkaBridge

KafkaBridgeSpec schema 属性的完整列表

配置 Kafka Bridge 集群。

配置选项与:

  • Kafka 集群 bootstrap 地址
  • 安全(加密、验证和授权)
  • 消费者配置
  • 制作者配置
  • HTTP 配置

12.2.113.1. logging

Kafka Bridge 具有自己的可配置的日志记录器:

  • logger.bridge
  • logger.<operation-id>

您可以替换 logger.<operation-id> logger 中的 <operation-id> 来为特定操作设置日志级别:

  • createConsumer
  • deleteConsumer
  • subscribe
  • unsubscribe
  • poll
  • 分配
  • commit
  • send
  • sendToPartition
  • seekToBeginning
  • seekToEnd
  • seek
  • healthy
  • ready
  • openapi

每个操作都根据 OpenAPI 规格定义,具有桥接从 HTTP 客户端接收请求对应的 API 端点。您可以更改每个端点上的日志级别,以创建有关传入和传出的 HTTP 请求的精细日志信息。

每个日志记录器都必须配置为为它分配一个 name 作为 http.openapi.operation.<operation-id>。例如,为 发送 操作日志记录器配置日志级别意味着定义以下内容:

logger.send.name = http.openapi.operation.send
logger.send.level = DEBUG
Copy to Clipboard Toggle word wrap

Kafka Bridge 使用 Apache log4j2 日志记录器实现。日志记录器在 log4j2.properties 文件中定义,该文件对 healthyready 端点有以下默认配置:

logger.healthy.name = http.openapi.operation.healthy
logger.healthy.level = WARN
logger.ready.name = http.openapi.operation.ready
logger.ready.level = WARN
Copy to Clipboard Toggle word wrap

所有其他操作的日志级别默认设置为 INFO

使用 logging 属性配置日志记录器和日志记录器级别。

您可以通过直接指定日志记录器和级别(在线)或使用自定义(外部) ConfigMap 来设置日志级别。如果使用 ConfigMap,您可以将 logging.valueFrom.configMapKeyRef.name 属性设置为包含外部日志记录配置的 ConfigMap 的名称。logging.valueFrom.configMapKeyRef.namelogging.valueFrom.configMapKeyRef.key 属性是必需的。如果没有设置 namekey,则会使用默认日志记录。在 ConfigMap 中,日志记录配置使用 log4j.properties 来描述。有关日志级别的更多信息,请参阅 Apache 日志记录服务

此处会看到 内联外部日志记录 的示例。

内联日志

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
spec:
  # ...
  logging:
    type: inline
    loggers:
      logger.bridge.level: "INFO"
      # enabling DEBUG just for send operation
      logger.send.name: "http.openapi.operation.send"
      logger.send.level: "DEBUG"
  # ...
Copy to Clipboard Toggle word wrap

外部日志记录

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
spec:
  # ...
  logging:
    type: external
    valueFrom:
      configMapKeyRef:
        name: customConfigMap
        key: bridge-logj42.properties
  # ...
Copy to Clipboard Toggle word wrap

任何尚未配置级别的可用日志记录器都设置为 OFF

如果使用 Cluster Operator 部署 Kafka Bridge,则会动态应用对 Kafka Bridge 日志记录级别的更改。

如果使用外部日志记录,则在日志附加器更改时触发滚动更新。

垃圾收集器(GC)

也可以使用 jvmOptions 属性 来启用(或禁用)垃圾收集器日志记录。

12.2.113.2. KafkaBridgeSpec 模式属性

Expand
属性Description

replicas

部署中的 pod 数量

整数

image

pod 的 docker 镜像。

字符串

bootstrapServers

用于建立到 Kafka 集群的初始连接的 host:port 对列表。

字符串

tls

用于将 Kafka Bridge 连接到集群的 TLS 配置。

ClientTls

身份验证

用于连接到集群的身份验证配置。这个类型取决于给定对象中的 authentication.type 属性的值,它必须是 [tls, scram-sha-256, scram-sha-256, scram-sha-512, plain, oauth]。

KafkaClientAuthenticationTls, KafkaClientAuthenticationScramSha256, KafkaClientAuthenticationScramSha512, KafkaClientAuthenticationPlain, KafkaClientAuthenticationOAuth

http

HTTP 相关配置。

KafkaBridgeHttpConfig

adminClient

Kafka 管理与客户端相关的配置。

KafkaBridgeAdminClientSpec

消费者

Kafka 消费者相关的配置。

KafkaBridgeConsumerSpec

制作者

Kafka producer 相关配置。

KafkaBridgeProducerSpec

资源

要保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源查询的外部文档

ResourceRequirements

jvmOptions

目前,pod 支持 JVM 选项。

JvmOptions

logging

Kafka Bridge 的日志记录配置。类型取决于给定对象中的 logging.type 属性的值,它必须是 [inline, external] 中的一个。

InlineLogging, ExternalLogging

enableMetrics

为 Kafka Bridge 启用指标。默认为 false。

布尔值

livenessProbe

Pod 存活度检查。

探测

readinessProbe

Pod 就绪度检查.

探测

模板

Kafka Bridge 资源的模板。通过该模板,用户可以指定如何生成 DeploymentPod

KafkaBridgeTemplate

tracing

Kafka Bridge 中的追踪配置。类型取决于给定对象中的 tracing.type 属性的值,它必须是 [jaeger] 中的一个。

Jaegertracing

12.2.114. KafkaBridgeHttpConfig schema reference

使用的: KafkaBridgeSpec

KafkaBridgeHttpConfig 模式属性的完整列表

为 Kafka Bridge 配置对 Kafka 集群的 HTTP 访问。

默认 HTTP 配置是 Kafka Bridge 侦听端口 8080。

12.2.114.1. CORS

除了启用 HTTP 访问 Kafka 集群外,HTTP 属性提供通过 Cross-Origin Resource Sharing (CORS)为 Kafka 网桥启用和定义访问控制的功能。CORS 是一种 HTTP 机制,它允许浏览器从多个来源访问所选资源。要配置 CORS,您可以定义允许的资源来源和 HTTP 访问方法的列表。对于原始卷,您可以使用 URL 或 Java 正则表达式。

Kafka Bridge HTTP 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
metadata:
  name: my-bridge
spec:
  # ...
  http:
    port: 8080
    cors:
      allowedOrigins: "https://strimzi.io"
      allowedMethods: "GET,POST,PUT,DELETE,OPTIONS,PATCH"
  # ...
Copy to Clipboard Toggle word wrap

12.2.114.2. KafkaBridgeHttpConfig schema properties

Expand
属性Description

port

服务器侦听的端口。

整数

CORS

HTTP 网桥的 CORS 配置。

KafkaBridgeHttpCors

12.2.115. KafkaBridgeHttpCors 模式参考

使用的: KafkaBridgeHttpConfig

Expand
属性Description

allowedOrigins

允许的源列表。可以使用 Java 正则表达式。

字符串数组

allowedMethods

允许的 HTTP 方法列表。

字符串数组

12.2.116. KafkaBridgeAdminClientSpec schema reference

使用的: KafkaBridgeSpec

Expand
属性Description

config

用于该网桥创建的 AdminClient 实例的 Kafka AdminClient 配置。

map

12.2.117. KafkaBridgeConsumerSpec 模式参考

使用的: KafkaBridgeSpec

KafkaBridgeConsumerSpec 模式属性的完整列表

将 Kafka Bridge 的使用者选项配置为密钥。

这些值可以是以下 JSON 类型之一:

  • 字符串
  • Number
  • 布尔值

您可以为消费者指定并配置 Apache Kafka 配置文档中的 选项,但那些直接由 AMQ Streams 管理的选项除外。具体来说,所有与以下字符串之一相等或开始的配置选项都会被禁止:

  • SSL.
  • SASL:
  • 安全性.
  • bootstrap.servers
  • group.id

当在 config 属性中存在禁止选项时,它将忽略,并显示 Cluster Operator 日志文件的警告信息。所有其他选项将传递给 Kafka

重要

Cluster Operator 不验证 config 对象中的密钥或值。如果提供了无效的配置,则 Kafka Bridge 集群可能无法启动,也可能不稳定。修复配置,以便 Cluster Operator 可以向所有 Kafka Bridge 节点推出新配置。

禁止的选项有例外。对于将特定 密码套件 用于 TLS 版本的客户端连接,您可以配置允许的 ssl 属性

Kafka Bridge consumer 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
metadata:
  name: my-bridge
spec:
  # ...
  consumer:
    config:
      auto.offset.reset: earliest
      enable.auto.commit: true
      ssl.cipher.suites: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
      ssl.enabled.protocols: "TLSv1.2"
      ssl.protocol: "TLSv1.2"
      ssl.endpoint.identification.algorithm: HTTPS
    # ...
Copy to Clipboard Toggle word wrap

12.2.117.1. KafkaBridgeConsumerSpec 模式属性

Expand
属性Description

config

用于该网桥创建的使用者实例的 Kafka 使用者配置。无法设置以下前缀的属性: ssl., bootstrap.servers, group.id, sasl., security. (例外: ssl.endpoint.identification.algorithm, ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols)。

map

12.2.118. KafkaBridgeProducerSpec 模式参考

使用的: KafkaBridgeSpec

KafkaBridgeProducerSpec schema 属性的完整列表

将 Kafka Bridge 的制作者选项配置为密钥。

这些值可以是以下 JSON 类型之一:

  • 字符串
  • Number
  • 布尔值

您可以为制作者指定并配置 Apache Kafka 配置文档 中列出的选项,但那些直接由 AMQ Streams 管理的选项除外。具体来说,所有与以下字符串之一相等或开始的配置选项都会被禁止:

  • SSL.
  • SASL:
  • 安全性.
  • bootstrap.servers

当在 config 属性中存在禁止选项时,它将忽略,并显示 Cluster Operator 日志文件的警告信息。所有其他选项将传递给 Kafka

重要

Cluster Operator 不验证 config 对象中的密钥或值。如果提供了无效的配置,则 Kafka Bridge 集群可能无法启动,也可能不稳定。修复配置,以便 Cluster Operator 可以向所有 Kafka Bridge 节点推出新配置。

禁止的选项有例外。对于将特定 密码套件 用于 TLS 版本的客户端连接,您可以配置允许的 ssl 属性

Kafka Bridge producer 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
metadata:
  name: my-bridge
spec:
  # ...
  producer:
    config:
      acks: 1
      delivery.timeout.ms: 300000
      ssl.cipher.suites: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
      ssl.enabled.protocols: "TLSv1.2"
      ssl.protocol: "TLSv1.2"
      ssl.endpoint.identification.algorithm: HTTPS
    # ...
Copy to Clipboard Toggle word wrap

12.2.118.1. KafkaBridgeProducerSpec 模式属性

Expand
属性Description

config

供网桥创建的制作者实例的 Kafka producer 配置。无法设置以下前缀的属性: ssl.、bootstrap.servers、sasl.、security. (但 ssl.endpoint.identification.algorithm、ssl.cipher.suites、ssl.protocol、ssl.enabled.protocols)。

map

12.2.119. KafkaBridgeTemplate 模式参考

使用的: KafkaBridgeSpec

Expand
属性Description

部署

Kafka Bridge Deployment 的模板。

DeploymentTemplate

Pod

Kafka Bridge Pod 模板。

PodTemplate

apiService

Kafka Bridge API Service 的模板。

InternalServiceTemplate

podDisruptionBudget

Kafka Bridge PodDisruptionBudget 模板。

PodDisruptionBudgetTemplate

bridgeContainer

Kafka Bridge 容器的模板。

ContainerTemplate

serviceAccount

Kafka Bridge 服务帐户的模板。

resourcetemplate

12.2.120. KafkaBridgeStatus schema reference

使用的: KafkaBridge

Expand
属性Description

conditions

状态条件列表。

状况 数组

observedGeneration

Operator 最后协调的 CRD 的生成。

整数

url

外部客户端应用程序可以访问 Kafka Bridge 的 URL。

字符串

labelSelector

提供此资源的 pod 的标签选择器。

字符串

replicas

提供此资源的当前 pod 数量。

整数

12.2.121. KafkaConnector 模式参考

Expand
属性Description

spec

Kafka Connector 的规格。

KafkaConnectorSpec

status

Kafka Connector 的状态。

KafkaConnectorStatus

12.2.122. KafkaConnectorSpec 模式参考

使用的: KafkaConnector

Expand
属性Description

Kafka Connector 的类。

字符串

tasksMax

Kafka Connector 的最大任务数量。

整数

config

Kafka Connector 配置。无法设置以下属性:connector.class, tasks.max。

map

pause

连接器是否应暂停。默认为false。

布尔值

12.2.123. KafkaConnectorStatus schema 参考

使用的: KafkaConnector

Expand
属性Description

conditions

状态条件列表。

状况 数组

observedGeneration

Operator 最后协调的 CRD 的生成。

整数

connectorStatus

连接器状态,如 Kafka Connect REST API 报告。

map

tasksMax

Kafka Connector 的最大任务数量。

整数

主题

Kafka Connector 使用的主题列表。

字符串数组

12.2.124. KafkaMirrorMaker2 模式参考

Expand
属性Description

spec

Kafka MirrorMaker 2.0 集群的规格。

KafkaMirrorMaker2Spec

status

Kafka MirrorMaker 2.0 集群的状态。

KafkaMirrorMaker2Status

12.2.125. KafkaMirrorMaker2Spec 模式参考

使用的: KafkaMirrorMaker2

Expand
属性Description

version

Kafka Connect 版本。默认为 3.2.3。参阅用户文档来了解升级或降级版本所需的流程。

字符串

replicas

Kafka Connect 组中的 pod 数量。

整数

image

pod 的 docker 镜像。

字符串

connectCluster

用于 Kafka Connect 的集群别名。别名必须与位于 spec.clusters 的列表中有一个集群匹配。

字符串

clusters

用于镜像的 Kafka 集群。

KafkaMirrorMaker2ClusterSpec 数组

mirrors

配置 MirrorMaker 2.0 连接器。

KafkaMirrorMaker2MirrorSpec 数组

资源

CPU 和内存资源和请求的初始资源的最大限制。如需更多信息,请参阅 core/v1 资源查询的外部文档

ResourceRequirements

livenessProbe

Pod 存活度检查。

探测

readinessProbe

Pod 就绪度检查.

探测

jvmOptions

pod 的 JVM 选项。

JvmOptions

jmxOptions

JMX 选项.

KafkaJmxOptions

logging

Kafka Connect 的日志记录配置。类型取决于给定对象中的 logging.type 属性的值,它必须是 [inline, external] 中的一个。

InlineLogging, ExternalLogging

clientRackInitImage

用于初始化 客户端的 init 容器的镜像。

字符串

rack

配置用作 客户端的节点标签。rack consumer 配置。

rack

tracing

在 Kafka Connect 中配置追踪。类型取决于给定对象中的 tracing.type 属性的值,它必须是 [jaeger] 中的一个。

Jaegertracing

模板

Kafka Connect 和 Kafka Mirror Maker 2 资源的模板。这个模板允许用户指定如何生成 Deployment, PodsService

KafkaConnectTemplate

externalConfiguration

将 Secret 或 ConfigMap 中的数据传递给 Kafka Connect pod,并使用它们配置连接器。

ExternalConfiguration

metricsConfig

指标配置。这个类型取决于给定对象中的 metricsConfig.type 属性的值,它必须是 [jmxPrometheusExporter] 之一。

JmxPrometheusExporterMetrics

12.2.126. KafkaMirrorMaker2ClusterSpec 模式参考

使用的: KafkaMirrorMaker2Spec

KafkaMirrorMaker2ClusterSpec schema 属性的完整列表

为镜像配置 Kafka 集群。

12.2.126.1. config

使用 config 属性来配置 Kafka 选项。

可以提供标准 Apache Kafka 配置,仅限于不直接由 AMQ Streams 管理的属性。

对于将特定 密码套件 用于 TLS 版本的客户端连接,您可以配置允许的 ssl 属性您还可以配置 ssl.endpoint.identification.algorithm 属性 来启用或禁用主机名验证。

12.2.126.2. KafkaMirrorMaker2ClusterSpec schema 属性

Expand
属性Description

alias

用于引用 Kafka 集群的别名。

字符串

bootstrapServers

用于建立到 Kafka 集群连接的 host:port 对的逗号分隔列表。

字符串

tls

用于将 MirrorMaker 2.0 连接器连接到集群的 TLS 配置。

ClientTls

身份验证

用于连接到集群的身份验证配置。这个类型取决于给定对象中的 authentication.type 属性的值,它必须是 [tls, scram-sha-256, scram-sha-256, scram-sha-512, plain, oauth]。

KafkaClientAuthenticationTls, KafkaClientAuthenticationScramSha256, KafkaClientAuthenticationScramSha512, KafkaClientAuthenticationPlain, KafkaClientAuthenticationOAuth

config

MirrorMaker 2.0 集群配置。无法设置以下前缀的属性: ssl., sasl., security.,监听程序, plugin.path, rest., bootstrap.servers, consumer.interceptor.classes, producer.interceptor.classes (权限为 ssl.endpoint.identification.algorithm、ssl.cipher.suites、ssl.protocol.enabled ssl.protocols)。

map

12.2.127. KafkaMirrorMaker2MirrorSpec 模式参考

使用的: KafkaMirrorMaker2Spec

Expand
属性Description

sourceCluster

Kafka MirrorMaker 2.0 连接器使用的源集群的别名。别名必须与位于 spec.clusters 的列表中有一个集群匹配。

字符串

targetCluster

Kafka MirrorMaker 2.0 连接器使用的目标集群的别名。别名必须与位于 spec.clusters 的列表中有一个集群匹配。

字符串

sourceConnector

Kafka MirrorMaker 2.0 源连接器的规格。

KafkaMirrorMaker2ConnectorSpec

heartbeatConnector

Kafka MirrorMaker 2.0 heartbeat 连接器的规格。

KafkaMirrorMaker2ConnectorSpec

checkpointConnector

Kafka MirrorMaker 2.0 检查点连接器的规格。

KafkaMirrorMaker2ConnectorSpec

topicsPattern

与要镜像的主题匹配的正则表达式,如 "topic1|topic2|topic3"。也支持以逗号分隔的列表。

字符串

topicsBlacklistPattern

topicsBlacklistPattern 属性已弃用,现在应该使用 .spec.mirrors.topicsExcludePattern 配置。与要从镜像中排除的主题匹配的正则表达式。也支持以逗号分隔的列表。

字符串

topicsExcludePattern

与要从镜像中排除的主题匹配的正则表达式。也支持以逗号分隔的列表。

字符串

groupsPattern

与要镜像的消费者组匹配的正则表达式。也支持以逗号分隔的列表。

字符串

groupsBlacklistPattern

groupsBlacklistPattern 属性已弃用,现在应该使用 .spec.mirrors.groupsExcludePattern 配置。与要从镜像中排除的消费者组匹配的正则表达式。也支持以逗号分隔的列表。

字符串

groupsExcludePattern

与要从镜像中排除的消费者组匹配的正则表达式。也支持以逗号分隔的列表。

字符串

12.2.128. KafkaMirrorMaker2ConnectorSpec 模式参考

使用的: KafkaMirrorMaker2MirrorSpec

Expand
属性Description

tasksMax

Kafka Connector 的最大任务数量。

整数

config

Kafka Connector 配置。无法设置以下属性:connector.class, tasks.max。

map

pause

连接器是否应暂停。默认为false。

布尔值

12.2.129. KafkaMirrorMaker2Status 模式参考

使用的: KafkaMirrorMaker2

Expand
属性Description

conditions

状态条件列表。

状况 数组

observedGeneration

Operator 最后协调的 CRD 的生成。

整数

url

用于管理和监控 Kafka 连接连接器的 REST API 端点的 URL。

字符串

connectorPlugins

此 Kafka Connect 部署中的连接器插件列表。

ConnectorPlugin 数组

connectors

MirrorMaker 2.0 连接器状态列表,如 Kafka Connect REST API 报告。

映射数组

labelSelector

提供此资源的 pod 的标签选择器。

字符串

replicas

提供此资源的当前 pod 数量。

整数

12.2.130. KafkaRebalance 模式参考

Expand
属性Description

spec

Kafka 重新平衡的规格。

KafkaRebalanceSpec

status

Kafka 重新平衡的状态。

KafkaRebalanceStatus

12.2.131. KafkaRebalanceSpec 模式参考

使用的: KafkaRebalance

Expand
属性Description

模式

模式以运行重新平衡。支持的模式是 full, add-brokers, remove-brokers。如果没有指定,则默认使用 full 模式。

  • 完整 模式在集群中的所有代理中运行重新平衡。
  • 在扩展集群后,可以使用 add-brokers 模式,将一些副本移到新添加的代理中。
  • 在缩减集群以移出要被删除的代理(broker)前,可以使用 remove-brokers 模式。

字符串(一个 [remove-brokers、full、add-brokers])

代理(broker)

当扩展或要删除的代理时,新添加的代理列表(如果缩减)用于重新平衡。此列表只能用于重新平衡模式 add-brokersremoved-brokers。它被忽略为 full 模式。

整数数组

目标

目标列表,按降序排列,用于生成和执行重新平衡提议。支持的目标可在 https://github.com/linkedin/cruise-control#goals 获得。如果提供了空目标列表,则使用 default.goals Cruise Control 配置参数中声明的目标。

字符串数组

skipHardGoalCheck

是否允许 Kafka CR 中指定的硬目标以优化提议生成过程中跳过。当出现这些硬目标时,这很有用。默认为 false。

布尔值

rebalanceDisk

启用 in-broker 磁盘平衡,用于平衡同一代理上磁盘之间的磁盘空间利用率。只适用于使用多个磁盘的 JBOD 存储的 Kafka 部署。启用后,禁用 In-broker 平衡。默认为 false。

布尔值

excludedTopics

一个正则表达式,任何匹配主题不包括在计算优化提议中。此表达式将由 java.util.regex.Pattern 类解析。有关支持的格式的更多信息,请参阅相关文档。

字符串

concurrentPartitionMovementsPerBroker

持续分区副本的上限将移到每个代理的/外。默认值为 5。

整数

concurrentIntraBrokerPartitionMovements

在每个代理中的磁盘间移动持续分区副本的上限。默认值为 2。

整数

concurrentLeaderMovements

持续分区领导移动的上限。默认值为 1000。

整数

replicationThrottle

位于用于移动副本的带宽的上限(以字节/秒为单位)。默认没有限制。

整数

replicaMovementStrategies

用于决定在生成的优化过程中对副本移动执行顺序的策略类名称列表。默认情况下,使用 BaseReplicaMovementStrategy,这将按照生成的顺序执行副本移动。

字符串数组

12.2.132. KafkaRebalanceStatus 模式参考

使用的: KafkaRebalance

Expand
属性Description

conditions

状态条件列表。

状况 数组

observedGeneration

Operator 最后协调的 CRD 的生成。

整数

sessionId

与这个 KafkaRebalance 资源相关的请求的会话标识符。Kafka Rebalance Operator 用来跟踪持续重新平衡操作的状态。

字符串

optimizationResult

描述优化结果的 JSON 对象。

map

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat