6.2. 模式属性
6.2.1. Kafka 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| spec | Kafka 和 ZooKeeper 集群和主题 Operator 的规格。 |
| status | Kafka 和 ZooKeeper 集群和主题 Operator 的状态。 |
6.2.2. KafkaSpec 模式参考 复制链接链接已复制到粘贴板!
用于: Kafka
| 属性 | Description |
|---|---|
| kafka | 配置 Kafka 集群。 |
| zookeeper | ZooKeeper 集群的配置。 |
| entityOperator | 配置实体 Operator。 |
| clusterCa | 配置集群证书颁发机构。 |
| clientsCa | 配置客户端证书颁发机构。 |
| cruiseControl | Cruise Control 部署配置。在指定时部署 Cruise Control 实例。 |
| kafkaExporter | 配置 Kafka Exporter。Kafka Exporter 可以提供额外的指标,如 topic/partition 的消费者组滞后。 |
| maintenanceTimeWindows | 维护任务的时间窗列表(即证书续订)。每个时间窗都由 cron 表达式定义。 |
| 字符串数组 |
6.2.3. KafkaClusterSpec 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaSpec
配置 Kafka 集群。
6.2.3.1. 监听器 复制链接链接已复制到粘贴板!
使用 listeners 属性配置监听程序来提供 Kafka 代理的访问。
没有身份验证的普通(未加密)侦听器配置示例
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
spec:
kafka:
# ...
listeners:
- name: plain
port: 9092
type: internal
tls: false
# ...
zookeeper:
# ...
6.2.3.2. config 复制链接链接已复制到粘贴板!
使用 config 属性将 Kafka 代理选项配置为密钥。
可以提供标准 Apache Kafka 配置,仅限于不受 AMQ Streams 直接管理的属性。
不能配置的配置选项与以下内容相关:
- 安全性(加密、认证和授权)
- 侦听器配置
- 代理 ID 配置
- 配置日志数据目录
- inter-broker 通信
- zookeeper 连接
该值可以是以下 JSON 类型之一:
- 字符串
- Number
- 布尔值
您可以指定并配置 Apache Kafka 文档 中列出的选项,但 AMQ Streams 直接管理的这些选项除外。具体来说,所有与以下字符串之一相等或开始的配置选项都会被禁止:
-
监听器 -
广告. -
代理. -
侦听器. -
host.name -
port -
inter.broker.listener.name -
sasl。 -
SSL。 -
安全性。 -
密码。 -
principal.builder.class -
log.dir -
zookeeper.connect -
zookeeper.set.acl -
授权器. -
super.user
当 config 属性中存在 forbidden 选项时,它会被忽略,并将警告信息输出到 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
# ...
6.2.3.3. brokerRackInitImage 复制链接链接已复制到粘贴板!
启用机架感知后,Kafka 代理 pod 使用 init 容器从 OpenShift 集群节点收集标签。用于此容器的容器镜像可以使用 brokerRackInitImage 属性来配置。当 brokerRackInitImage 字段缺失时,会以优先级顺序使用以下镜像:
-
在 Cluster Operator 配置中的
STRIMZI_DEFAULT_KAFKA_INIT_IMAGE环境变量中指定的容器镜像。 -
registry.redhat.io/amq-streams/strimzi-rhel8-operator:2.4.0container image.
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
# ...
只有在需要使用其他容器 registry 时,才建议在特殊情况下覆盖容器镜像。例如,因为您的网络不允许访问 AMQ Streams 使用的容器 registry。在这种情况下,您应该复制 AMQ Streams 镜像或从源构建它们。如果配置的镜像与 AMQ Streams 镜像不兼容,则可能无法正常工作。
6.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.name 和 logging.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"
# ...
外部日志记录
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
spec:
# ...
logging:
type: external
valueFrom:
configMapKeyRef:
name: customConfigMap
key: kafka-log4j.properties
# ...
任何尚未配置的可用日志记录器的级别都设置为 OFF。
如果 Kafka 使用 Cluster Operator 部署,则会动态应用对 Kafka 日志记录级别的更改。
如果您使用外部日志记录,在日志记录附加程序改变时会触发滚动更新。
垃圾收集器(GC)
也可以使用 jvmOptions 属性 启用(或禁用)垃圾收集器日志记录。
6.2.3.5. KafkaClusterSpec 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| version | kafka 代理版本。默认值为 3.4.0。请参阅用户文档以了解升级或降级版本所需的流程。 |
| 字符串 | |
| replicas | 集群中的 pod 数量。 |
| 整数 | |
| image |
pod 的 docker 镜像。默认值取决于配置的 |
| 字符串 | |
| 监听器 | 配置 Kafka 代理的监听程序。 |
| config | 无法设置具有以下前缀的 Kafka 代理配置属性: listeners, advertised., broker., listener., host.name, port, inter.broker.listener.name, sasl., ssl., security., password., log.dir, zookeeper.connect, zookeeper.set.acl, zookeeper.ssl, zookeeper.clientCnxnSocket, authorizer., super.user, cruise.control.metrics.topic, cruise.control.metrics.reporter.servers,node.id, process.roles, controller. (带有 zookeeper.connection.timeout.ms, sasl.server.max.receive.size,ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols, ssl.secure.random.implementation,cruise.control.metrics.topic.num.num.partitions, cruise.control.metrics.topic.replication.factor, cruise.control.metrics.topic.retention.ms,cruise.control.metrics.topic.auto.create.retries, cruise.control.metrics.topic.auto.create.timeout.ms, cruise.control.metrics.topic.min.insync.replicas,controller.quorum.election.backoff.max.ms, controller.quorum.election.timeout.ms, controller.quorum.fetch.timeout.ms)。 |
| map | |
| storage |
存储配置(磁盘)。无法更新。类型取决于给定对象中的 |
| 授权 |
Kafka 代理的授权配置。类型取决于给定对象中的 |
|
| |
| rack |
配置 |
| brokerRackInitImage |
用于初始化 |
| 字符串 | |
| livenessProbe | Pod 存活度检查。 |
| readinessProbe | Pod 就绪度检查。 |
| jvmOptions | pod 的 JVM 选项。 |
| jmxOptions | Kafka 代理的 JMX 选项。 |
| 资源 | 要保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源requirements 的外部文档。 |
| metricsConfig |
指标配置.该类型取决于给定对象中的 |
| logging |
Kafka 的日志记录配置。类型取决于给定对象中的 |
| 模板 |
Kafka 集群资源的模板。通过该模板,用户可以指定如何生成 |
6.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
#...
6.2.4.1. 监听器 复制链接链接已复制到粘贴板!
您可以使用 Kafka 资源中的 listeners 属性配置 Kafka 代理监听程序。侦听器被定义为数组。
侦听器配置示例
listeners:
- name: plain
port: 9092
type: internal
tls: false
在 Kafka 集群中,名称和端口必须是唯一的。名称最多可为 25 个字符,包含小写字母和数字。允许的端口号为 9092 及更高版本,但端口 9404 和 9999 除外,它们已用于 Prometheus 和 JMX。
通过为每个监听程序指定唯一名称和端口,您可以配置多个监听程序。
6.2.4.2. type 复制链接链接已复制到粘贴板!
类型设置为 internal,或对于外部监听程序,设置为 route, loadbalancer, nodeport, ingress 或 cluster-ip。您还可以配置 cluster-ip 侦听器,这是可用于构建自定义访问机制的内部监听程序。
- internal
您可以使用
tls属性配置内部监听程序,带有或不加密。内部监听程序配置示例#... spec: kafka: #... listeners: #... - name: plain port: 9092 type: internal tls: false - name: tls port: 9093 type: internal tls: true authentication: type: tls #...- route
配置外部监听程序,以使用 OpenShift
Routes和 HAProxy 路由器公开 Kafka。为每个 Kafka 代理 pod 创建一个专用
Route。创建额外Route以作为 Kafka bootstrap 地址。Kafka 客户端可以使用这些Routes连接到端口 443 上的 Kafka。客户端通过端口 443 连接默认路由器端口,但流量会路由到您配置的端口,本例中为9094。路由监听程序配置示例#... spec: kafka: #... listeners: #... - name: external1 port: 9094 type: route tls: true #...- ingress
配置外部监听程序,以使用 Kubernetes
Ingress和 Ingress NGINX Controller for Kubernetes 来公开 Kafka。为每个 Kafka 代理 pod 创建一个专用的
Ingress资源。创建额外的Ingress资源,以用作 Kafka bootstrap 地址。Kafka 客户端可以使用这些Ingress资源连接到端口 443 上的 Kafka。客户端通过端口 443 连接默认控制器端口,但流量会路由到您配置的端口,以下示例中为9095。您必须使用
GenericKafkaListenerConfigurationBootstrap和GenericKafkaListenerConfigurationBroker属性指定 bootstrap 和 per-broker 服务使用的主机名。ingress侦听器配置示例#... 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 #...注意目前,使用
Ingress的外部监听程序只会通过 Ingress NGINX Controller for Kubernetes 测试。- LoadBalancer
配置外部监听程序,以使用
Loadbalancer类型Service来公开 Kafka。为每个 Kafka 代理 pod 创建一个新的 loadbalancer 服务。创建了一个额外的负载均衡器来充当 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 #...- nodeport
配置外部监听程序,以使用
NodePort类型Service来公开 Kafka。Kafka 客户端直接连接到 OpenShift 节点。创建了一个额外的
NodePort类型的服务,以充当 Kafka bootstrap 地址。当为 Kafka 代理 pod 配置公告的地址时,AMQ Streams 会使用运行给定 pod 的节点地址。您可以使用
preferredNodePortAddressType属性配置 检查为节点地址 的第一个地址类型。nodeport侦听器配置示例#... spec: kafka: #... listeners: #... - name: external4 port: 9095 type: nodeport tls: false configuration: preferredNodePortAddressType: InternalDNS #...注意当使用节点端口公开 Kafka 集群时,目前不支持 TLS 主机名验证。
- cluster-ip
配置内部监听程序,以使用每个代理
ClusterIP类型Service来公开 Kafka。侦听程序不使用无头服务及其 DNS 名称将流量路由到 Kafka 代理。在使用无头服务时,您可以使用这类监听程序来公开 Kafka 集群。您可以将其与自定义访问机制一起使用,如使用特定 Ingress 控制器或 OpenShift 网关 API 的环境。
为每个 Kafka 代理 pod 创建一个新的
ClusterIP服务。该服务被分配一个ClusterIP地址,作为带有每个代理端口号的 Kafka bootstrap 地址。例如,您可以将监听程序配置为在带有 TCP 端口配置的 Nginx Ingress Controller 上公开 Kafka 集群。cluster-ip侦听器配置示例#... spec: kafka: #... listeners: - name: external-cluster-ip type: cluster-ip tls: false port: 9096 #...
6.2.4.3. port 复制链接链接已复制到粘贴板!
端口号是 Kafka 集群中使用的端口,这可能不是客户端用来访问的端口。
-
LoadBalancer侦听程序使用指定的端口号,如内部和cluster-ip监听程序 -
Ingress和route监听程序使用端口 443 进行访问 -
NodePort侦听程序使用 OpenShift 分配的端口号
对于客户端连接,使用监听器的 bootstrap 服务的地址和端口。您可以从 Kafka 资源的状态来检索它。
检索客户端连接的地址和端口的命令示例
oc get kafka <kafka_cluster_name> -o=jsonpath='{.status.listeners[?(@.name=="<listener_name>")].bootstrapServers}{"\n"}'
监听程序无法配置为使用为 interbroker 通信(9090 和 9091)和指标(9404)设置的端口。
6.2.4.4. tls 复制链接链接已复制到粘贴板!
TLS 属性是必需的。
默认情况下不启用 TLS 加密。若要启用它,请将 tls 属性设置为 true。
对于 route 和 ingress 类型监听程序,必须启用 TLS 加密。
6.2.4.5. 身份验证 复制链接链接已复制到粘贴板!
侦听器的身份验证可以指定为:
-
mTLS (
tls) -
SCRAM-SHA-512 (
scram-sha-512) -
基于令牌的 OAuth 2.0 (
oauth) -
自定义(
自定义)
6.2.4.6. networkPolicyPeers 复制链接链接已复制到粘贴板!
使用 networkPolicyPeers 配置网络策略,以限制对网络级别的监听程序的访问。以下示例显示了 普通 和 tls 侦听器的 networkPolicyPeers 配置。
在以下示例中:
-
只有与标签
app: kafka-sasl-consumer和app: kafka-sasl-producer匹配的应用程序 pod 可以连接到普通监听程序。应用程序 pod 必须与 Kafka 代理在同一命名空间中运行。 -
只有在与标签
project: myprojectandproject: myproject2的命名空间中运行的应用程序 pod 才可以连接到tls侦听程序。
networkPolicyPeers 属性的语法与 NetworkPolicy 资源中的 from 属性相同。
Exanmple 网络策略配置
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
# ...
6.2.4.7. GenericKafkaListener 模式属性 复制链接链接已复制到粘贴板!
| 属性 | 描述 |
|---|---|
| name | 侦听器的名称。名称将用于识别侦听器和相关的 OpenShift 对象。该名称必须在给定的 Kafka 集群中唯一。名称可由小写字符和数字组成,最多 11 个字符。 |
| 字符串 | |
| port | Kafka 中监听器使用的端口号。端口号必须在给定的 Kafka 集群中唯一。允许的端口号为 9092 及更高版本,但端口 9404 和 9999 除外,它们已用于 Prometheus 和 JMX。根据监听程序类型,端口号可能与连接 Kafka 客户端的端口号不同。 |
| 整数 | |
| type |
侦听器的类型。目前支持的类型是
|
| string (one of [ingress, internal, route, loadbalancer, cluster-ip, nodeport]) | |
| tls | 在监听器上启用 TLS 加密。这是必需属性。 |
| 布尔值 | |
| 身份验证 |
此侦听器的身份验证配置。这个类型取决于给定对象中的 |
|
| |
| 配置 | 其他监听程序配置。 |
| networkPolicyPeers | 应该连接到此侦听器的对等点列表。此列表中的对等点使用逻辑 OR 操作来合并。如果此字段为空或缺失,则此监听器将允许所有连接。如果存在此字段并至少包含一个项目,则侦听器只允许与此列表中至少一个项目匹配的流量。如需更多信息,请参阅 networking.k8s.io/v1 networkpolicypeer 的外部文档。 |
6.2.5. KafkaListenerAuthenticationTls 模式参考 复制链接链接已复制到粘贴板!
type 属性是一种差异性,用于区分来自 KafkaListenerAuthenticationScramSha512, KafkaListenerAuthenticationOAuth, KafkaListenerAuthenticationCustom 的 KafkaListenerAuthenticationTls 类型。对于类型 KafkaListenerAuthenticationTls,它需要是值 tls。
| 属性 | 描述 |
|---|---|
| type |
必须为 |
| 字符串 |
6.2.6. KafkaListenerAuthenticationScramSha512 模式参考 复制链接链接已复制到粘贴板!
type 属性是一种差异性,用于区分来自 KafkaListenerAuthenticationTls, KafkaListenerAuthenticationOAuth, KafkaListenerAuthenticationCustom 的 KafkaListenerAuthenticationScramSha512 类型。对于类型 KafkaListenerAuthenticationScramSha512,它需要值 scram-sha-512。
| 属性 | 描述 |
|---|---|
| type |
必须为 |
| 字符串 |
6.2.7. KafkaListenerAuthenticationOAuth 模式参考 复制链接链接已复制到粘贴板!
type 属性是一种辨别器,它会区分来自 KafkaListenerAuthenticationTls, KafkaListenerAuthenticationScramSha512, KafkaListenerAuthenticationCustom 的 KafkaListenerAuthenticationOAuth 类型的使用。对于类型 KafkaListenerAuthenticationOAuth,它需要带有值 oauth。
| 属性 | 描述 |
|---|---|
| accessTokenIsJwt |
配置访问令牌是否被视为 JWT。如果授权服务器返回不透明令牌,则必须将其设置为 |
| 布尔值 | |
| checkAccessTokenType |
配置访问令牌类型检查是否被执行。如果授权服务器没有在 JWT 令牌中包含"typ"声明,则这应设为 |
| 布尔值 | |
| checkAudience |
启用或禁用 audience 检查。受众检查标识令牌的接收者。如果启用了 audience 检查,还必须使用 |
| 布尔值 | |
| checkIssuer |
启用或禁用签发者检查。默认情况下,使用由 |
| 布尔值 | |
| clientAudience |
向授权服务器令牌端点发出请求时使用的使用者。用于内部代理身份验证,以及使用 |
| 字符串 | |
| clientId | Kafka 代理可用于对授权服务器进行身份验证的 OAuth 客户端 ID,并使用内省端点 URI。 |
| 字符串 | |
| clientScope |
向授权服务器令牌端点发出请求时使用的范围。用于内部代理身份验证,以及使用 |
| 字符串 | |
| clientSecret | 包含 Kafka 代理可用于向授权服务器进行身份验证的 OpenShift Secret 并使用内省端点 URI。 |
| connectTimeoutSeconds | 连接到授权服务器时的连接超时(以秒为单位)。如果没有设置,则有效连接超时为 60 秒。 |
| 整数 | |
| customClaimCheck | 要应用到 JWT 令牌的 JSONPath 过滤器查询,或应用到内省端点的响应,以进行额外的令牌验证。默认情况下不设置。 |
| 字符串 | |
| disableTlsHostnameVerification |
启用或禁用 TLS 主机名验证。默认值为 |
| 布尔值 | |
| enableECDSA |
|
| 布尔值 | |
| enableMetrics |
启用或禁用 OAuth 指标。默认值为 |
| 布尔值 | |
| enableOauthBearer |
启用或禁用 SASL_OAUTHBEARER 的 OAuth 身份验证。默认值为 |
| 布尔值 | |
| enablePlain |
启用或禁用 SASL_PLAIN 上的 OAuth 身份验证。使用此机制时,不支持重新身份验证。默认值为 |
| 布尔值 | |
| failFast |
启用或禁用 Kafka 代理进程终止,因为在启动过程中可能会恢复运行时错误。默认值为 |
| 布尔值 | |
| fallbackUserNameClaim |
如果 |
| 字符串 | |
| fallbackUserNamePrefix |
用于 |
| 字符串 | |
| groupsClaim | 用于在身份验证期间提取用户的组的 JSONPath 查询。提取的组可由自定义授权器使用。默认情况下,不会提取任何组。 |
| 字符串 | |
| groupsClaimDelimiter | 当组提取为单个字符串值而不是 JSON 数组时,用于解析组的分隔符。默认值为 ','(comma)。 |
| 字符串 | |
| httpRetries | 初始 HTTP 请求失败时尝试的最大重试次数。如果没有设置,则默认为不尝试任何重试。 |
| 整数 | |
| httpRetryPauseMs | 在重试失败的 HTTP 请求前需要暂停。如果没有设置,则默认为根本不暂停,而是立即重复请求。 |
| 整数 | |
| introspectionEndpointUri | 令牌内省端点的 URI,可用于验证不透明非JWT 令牌。 |
| 字符串 | |
| jwksEndpointUri | JWKS 证书端点的 URI,可用于本地 JWT 验证。 |
| 字符串 | |
| jwksExpirySeconds |
配置 JWKS 证书被视为有效的频率。到期间隔必须至少为 60 秒,然后在 |
| 整数 | |
| jwksIgnoreKeyUse |
用于忽略 JWKS 端点响应中 |
| 布尔值 | |
| jwksMinRefreshPauseSeconds | 连续两次刷新之间最小暂停。当遇到未知签名密钥时,会立即调度刷新,但将始终等待这个最小暂停。默认值为 1 秒。 |
| 整数 | |
| jwksRefreshSeconds |
配置 JWKS 证书更新的频率。刷新间隔必须至少为 60 秒,然后是 |
| 整数 | |
| maxSecondsWithoutReauthentication |
经过身份验证的会话在重新身份验证的情况下保持有效的最大秒数。这可启用 Apache Kafka 重新身份验证功能,并导致会话在访问令牌过期时过期。如果访问令牌在最大时间前过期,或者达到最大时间,客户端必须重新验证,否则服务器将丢弃连接。默认情况下不设置 - 经过身份验证的会话不会在访问令牌过期时过期。这个选项只适用于 SASL_OAUTHBEARER 身份验证机制(当 |
| 整数 | |
| readTimeoutSeconds | 连接到授权服务器时的读取超时(以秒为单位)。如果没有设置,则有效读取超时为 60 秒。 |
| 整数 | |
| tlsTrustedCertificates | TLS 连接到 OAuth 服务器的可信证书。 |
| tokenEndpointUri |
当客户端通过 |
| 字符串 | |
| type |
必须是 |
| 字符串 | |
| userInfoEndpointUri | 当 Introspection Endpoint 没有返回可用于用户 ID 的信息时,用作回退的 User Info Endpoint 的 URI,用于获取用户 id。 |
| 字符串 | |
| userNameClaim |
JWT 身份验证令牌、内省端点响应或用户 Info Endpoint 响应中的声明名称,将用于提取用户 ID。默认为 |
| 字符串 | |
| validIssuerUri | 用于身份验证的令牌签发者的 URI。 |
| 字符串 | |
| validTokenType |
Introspection Endpoint 返回的 |
| 字符串 |
6.2.8. GenericSecretSource 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaClientAuthenticationOAuth, KafkaListenerAuthenticationCustom, KafkaListenerAuthenticationOAuth
| 属性 | Description |
|---|---|
| key | secret 值存储在 OpenShift Secret 中的键。 |
| 字符串 | |
| secretName | 包含 secret 值的 OpenShift Secret 名称。 |
| 字符串 |
6.2.9. CertSecretSource 模式参考 复制链接链接已复制到粘贴板!
用于: ClientTls, KafkaAuthorizationKeycloak, KafkaAuthorizationOpa, KafkaClientAuthenticationOAuth, KafkaListenerAuthenticationOAuth
| 属性 | Description |
|---|---|
| certificate | Secret 中文件证书的名称。 |
| 字符串 | |
| secretName | 包含证书的 Secret 名称。 |
| 字符串 |
6.2.10. KafkaListenerAuthenticationCustom 模式参考 复制链接链接已复制到粘贴板!
KafkaListenerAuthenticationCustom 模式属性的完整列表
要配置自定义身份验证,请将 type 属性设置为 custom。
自定义身份验证允许使用任何类型的 kafka 支持的身份验证。
自定义 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
生成协议映射,它使用 sasl 和 tls 值来确定要映射到侦听器的协议。
-
SASL = True, TLS = True
SASL_SSL -
sasl = False, TLS = True
SSL -
SASL = True, TLS = False
SASL_PLAINTEXT -
sasl = False, TLS = False
PLAINTEXT
6.2.10.1. listenerConfig 复制链接链接已复制到粘贴板!
使用 listenerConfig 指定的监听程序配置前缀为 listener .name。<listener_name>-<port>。例如,sasl.enabled.mechanisms 变为 listener.name. <listener_name>-<port>.sasl.enabled.mechanisms。
6.2.10.2. secrets 复制链接链接已复制到粘贴板!
secret 被挂载到 Kafka 代理节点的容器中的 /opt/kafka/custom-authn-secrets/custom-listener-<listener_name>-<port> /<secret_name >。
例如,示例配置中挂载的 secret (示例)将位于 /opt/kafka/custom-authn-secrets/custom-listener-oauth-bespoke-9093/example。
6.2.10.3. 主体构建器 复制链接链接已复制到粘贴板!
您可以在 Kafka 集群配置中设置自定义主体构建器。但是,主体构建器需要满足以下要求:
- 镜像上必须存在指定的主体构建器类。在自己构建之前,请检查是否已存在。您需要使用所需类重建 AMQ Streams 镜像。
-
没有其他监听程序使用
oauth类型身份验证。这是因为 OAuth 侦听器将其自己的原则构建器附加到 Kafka 配置中。 - 指定主体构建器与 AMQ Streams 兼容。
自定义主体构建器必须支持对等证书进行身份验证,因为 AMQ Streams 使用它们来管理 Kafka 集群。
Kafka 的默认主体构建器类 支持根据对等证书的名称构建主体。自定义主体构建器应使用 SSL 对等证书的名称提供用户类型为 user 的主体。
以下示例显示了满足 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
...
}
}
6.2.10.4. KafkaListenerAuthenticationCustom 模式属性 复制链接链接已复制到粘贴板!
type 属性是一种辨别器,它会区分来自 KafkaListenerAuthenticationTls, KafkaListenerAuthenticationScramSha512, KafkaListenerAuthenticationOAuth 的 KafkaListenerAuthenticationCustom 类型的使用。对于类型 KafkaListenerAuthenticationCustom,它需要是 custom 的值。
| 属性 | Description |
|---|---|
| listenerConfig | 用于特定监听程序的配置。所有值都以 listener.name. <listener_name > 前缀。 |
| map | |
| sasl | 在此监听器上启用或禁用 SASL。 |
| 布尔值 | |
| secrets | 要挂载到 /opt/kafka/custom-authn-secrets/custom-listener- <listener_name>-<port> / <secret_name > 的 secret。 |
| type |
必须是 |
| 字符串 |
6.2.11. GenericKafkaListenerConfiguration 模式参考 复制链接链接已复制到粘贴板!
GenericKafkaListenerConfiguration 模式属性的完整列表
配置 Kafka 侦听程序。
6.2.11.1. brokerCertChainAndKey 复制链接链接已复制到粘贴板!
brokerCertChainAndKey 属性仅用于启用了 TLS 加密的监听程序。您可以使用属性来提供自己的 Kafka 侦听器证书。
启用了 TLS 加密的 loadbalancer 外部监听程序配置示例
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
# ...
6.2.11.2. externalTrafficPolicy 复制链接链接已复制到粘贴板!
externalTrafficPolicy 属性用于 loadbalancer 和 nodeport 监听程序。在 OpenShift 外部公开 Kafka 时,您可以选择 Local 或 Cluster。Local 避免跃点到其他节点,并保留客户端 IP,而 Cluster 没有这些行为。默认值为 Cluster。
6.2.11.3. loadBalancerSourceRanges 复制链接链接已复制到粘贴板!
loadBalancerSourceRanges 属性仅用于 loadbalancer 监听程序。在 OpenShift 外部公开 Kafka 时,除了使用标签和注解外,还使用源范围来自定义服务的创建方式。
为 loadbalancer 侦听器配置的源范围示例
listeners:
#...
- name: external
port: 9094
type: loadbalancer
tls: false
configuration:
externalTrafficPolicy: Local
loadBalancerSourceRanges:
- 10.0.0.0/8
- 88.208.76.87/32
# ...
# ...
6.2.11.4. 类 复制链接链接已复制到粘贴板!
class 属性仅适用于 ingress 监听程序。您可以使用 class 属性配置 Ingress 类。
使用 Ingress 类 nginx-internal的 ingress 类型的外部监听程序示例
listeners:
#...
- name: external
port: 9094
type: ingress
tls: true
configuration:
class: nginx-internal
# ...
# ...
6.2.11.5. preferredNodePortAddressType 复制链接链接已复制到粘贴板!
preferredNodePortAddressType 属性仅用于 nodeport 监听程序。
使用监听器配置中的 preferredNodePortAddressType 属性来指定检查为节点地址的第一个地址类型。例如,如果您的部署没有 DNS 支持,或者您只想通过内部 DNS 或 IP 地址在内部公开代理,则此属性很有用。如果找到此类型的地址,则会使用它。如果没有找到首选地址类型,AMQ Streams 按照标准优先级顺序进行类型:
- ExternalDNS
- ExternalIP
- Hostname
- InternalDNS
- InternalIP
使用首选节点端口类型配置的外部监听程序示例
listeners:
#...
- name: external
port: 9094
type: nodeport
tls: false
configuration:
preferredNodePortAddressType: InternalDNS
# ...
# ...
6.2.11.6. useServiceDnsDomain 复制链接链接已复制到粘贴板!
useServiceDnsDomain 属性仅用于 internal 和 cluster-ip 监听程序。它定义是否使用包含集群服务后缀(通常为 .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
# ...
# ...
如果您的 OpenShift 集群使用与 .cluster.local 不同的服务后缀,您可以使用 Cluster Operator 配置中的 KUBERNETES_SERVICE_DNS_DOMAIN 环境变量配置后缀。
6.2.11.7. GenericKafkaListenerConfiguration 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| brokerCertChainAndKey |
对保存此监听器的证书和私钥对的 |
| externalTrafficPolicy |
指定服务是否将外部流量路由到节点本地还是集群范围的端点。 |
| 字符串(一个 [Local, Cluster]) | |
| loadBalancerSourceRanges |
一个 CIDR 范围列表(如 |
| 字符串数组 | |
| bootstrap | Bootstrap 配置。 |
| 代理(broker) | 每个代理配置。 |
| ipFamilyPolicy |
指定服务使用的 IP 系列策略。可用的选项有 |
| 字符串([RequireDualStack、SingleStack、PreferDualStack] 之一) | |
| ipFamilies |
指定服务使用的 IP Families。可用选项包括 |
| 字符串(一个或多个 [IPv6、IPv4])数组 | |
| createBootstrapService |
是否要创建 bootstrap 服务。默认情况下创建 bootstrap 服务(如果未指定),则默认创建。此字段可用于 |
| 布尔值 | |
| 类 |
为 |
| 字符串 | |
| finalizers |
为这个监听程序创建的 |
| 字符串数组 | |
| maxConnectionCreationRate | 在任何时候我们在此监听器中允许的最大连接创建率。如果达到限制,新连接将节流。 |
| 整数 | |
| maxConnections | 在代理中允许这个监听程序的最大连接数。如果达到限制,则阻止新连接。 |
| 整数 | |
| preferredNodePortAddressType |
定义应将哪些地址类型用作节点地址。可用类型有:
此字段用于选择首选地址类型,首先进行检查。如果没有找到此地址类型的地址,则按默认顺序检查其他类型。此字段只能用于 |
| 字符串([ExternalDNS, ExternalIP, Hostname, InternalIP, InternalDNS] 之一) | |
| useServiceDnsDomain |
配置是否应使用 OpenShift 服务 DNS 域。如果设置为 |
| 布尔值 |
6.2.12. CertAndKeySecretSource 模式参考 复制链接链接已复制到粘贴板!
用于: GenericKafkaListenerConfiguration, KafkaClientAuthenticationTls
| 属性 | Description |
|---|---|
| certificate | Secret 中文件证书的名称。 |
| 字符串 | |
| key | Secret 中的私钥名称。 |
| 字符串 | |
| secretName | 包含证书的 Secret 名称。 |
| 字符串 |
6.2.13. GenericKafkaListenerConfigurationBootstrap 模式参考 复制链接链接已复制到粘贴板!
用于: GenericKafkaListenerConfiguration
GenericKafkaListenerConfigurationBootstrap 模式属性的完整列表
与 nodePort, host, loadBalancerIP 和 annotations 属性相应的代理服务在 GenericKafkaListenerConfigurationBroker schema 中配置。
6.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
# ...
6.2.13.2. 主机 复制链接链接已复制到粘贴板!
host 属性用于 route 和 ingress 监听程序,以指定 bootstrap 和 per-broker 服务使用的主机名。
对于 ingress 监听程序,host 属性值是必需的,因为 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
# ...
默认情况下,路由 监听程序主机由 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
# ...
6.2.13.3. nodePort 复制链接链接已复制到粘贴板!
默认情况下,OpenShift 会自动分配用于 bootstrap 和 broker 服务的端口号。您可以通过指定请求的端口号来覆盖为 nodeport 监听程序分配的节点端口。
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
# ...
6.2.13.4. loadBalancerIP 复制链接链接已复制到粘贴板!
在创建负载均衡器时,使用 loadBalancerIP 属性来请求特定的 IP 地址。当您需要使用带有特定 IP 地址的 loadbalancer 时,请使用此属性。如果云供应商不支持这个功能,则 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
# ...
6.2.13.5. annotations 复制链接链接已复制到粘贴板!
使用 annotations 属性将注释添加到与监听器相关的 OpenShift 资源。您可以使用这些注解来检测 DNS 工具,如 外部 DNS,该工具会自动将 DNS 名称分配给 loadbalancer 服务。
类型为 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"
# ...
| 属性 | Description |
|---|---|
| alternativeNames | bootstrap 服务的其他备用名称。备用名称将添加到 TLS 证书的主题备用名称列表中。 |
| 字符串数组 | |
| 主机 |
bootstrap 主机。此字段将在 Ingress 资源或 Route 资源中使用,以指定所需主机名。此字段只能用于 |
| 字符串 | |
| nodePort |
bootstrap 服务的节点端口。此字段只能用于 |
| 整数 | |
| loadBalancerIP |
使用此字段中指定的 IP 地址请求 loadbalancer。此功能取决于在创建负载均衡器时,底层云提供商是否支持指定 |
| 字符串 | |
| annotations |
将添加到 |
| map | |
| labels |
将添加到 |
| map |
6.2.14. GenericKafkaListenerConfigurationBroker 模式参考 复制链接链接已复制到粘贴板!
用于: GenericKafkaListenerConfiguration
GenericKafkaListenerConfigurationBroker 模式属性的完整列表
您可以看到 GenericKafkaListenerConfigurationBootstrap schema 中的 nodePort、host、loadBalancerIP 和 annotations 属性的示例配置,该 schema 配置 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
# ...
| 属性 | Description |
|---|---|
| broker | kafka 代理(代理标识符)的 ID。代理 ID 从 0 开始,对应于代理副本数量。 |
| 整数 | |
| advertisedHost |
在代理的 |
| 字符串 | |
| advertisedPort |
代理的 |
| 整数 | |
| 主机 |
代理主机。此字段将在 Ingress 资源或 Route 资源中使用,以指定所需主机名。此字段只能用于 |
| 字符串 | |
| nodePort |
per-broker 服务的节点端口。此字段只能用于 |
| 整数 | |
| loadBalancerIP |
使用此字段中指定的 IP 地址请求 loadbalancer。此功能取决于在创建负载均衡器时,底层云提供商是否支持指定 |
| 字符串 | |
| annotations |
将添加到 |
| map | |
| labels |
将添加到 |
| map |
6.2.15. EphemeralStorage schema 参考 复制链接链接已复制到粘贴板!
用于:Jbo dStorage, KafkaClusterSpec, ZookeeperClusterSpec
type 属性是一种差异性,它区分使用 EphemeralStorage 类型与 PersistentClaimStorage。对于类型 EphemeralStorage,值需要是 ephemeral。
| 属性 | Description |
|---|---|
| id | 存储标识号.只适用于在类型为"jbod"存储中定义的存储卷。 |
| 整数 | |
| sizeLimit | 当 type=ephemeral 时,定义此 EmptyDir 卷所需的本地存储总量(例如 1Gi)。 |
| 字符串 | |
| type |
必须 |
| 字符串 |
6.2.16. PersistentClaimStorage schema 参考 复制链接链接已复制到粘贴板!
用于:Jbo dStorage, KafkaClusterSpec, ZookeeperClusterSpec
type 属性是一种差异性,其区分使用 PersistentClaimStorage 类型与 EphemeralStorage。它必须具有类型为 PersistentClaimStorage 的 persistent-claim 值。
| 属性 | Description |
|---|---|
| type |
必须是 |
| 字符串 | |
| size | 当 type=persistent-claim 时,定义持久性卷声明的大小(例如 1Gi)。type=persistent-claim 时需要此项。 |
| 字符串 | |
| selector | 指定要使用的特定持久性卷。它包含代表选择此类卷的标签的 key:value 对。 |
| map | |
| deleteClaim | 指定集群未部署时是否必须删除持久性卷声明。 |
| 布尔值 | |
| 类 | 用于动态卷分配的存储类。 |
| 字符串 | |
| id | 存储标识号.只适用于在类型为"jbod"存储中定义的存储卷。 |
| 整数 | |
| overrides |
覆盖单个代理。 |
6.2.17. PersistentClaimStorageOverride 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| 类 | 用于这个代理的动态卷分配的存储类。 |
| 字符串 | |
| broker | kafka 代理(代理标识符)的 ID。 |
| 整数 |
6.2.18. JbodStorage schema 参考 复制链接链接已复制到粘贴板!
用于: KafkaClusterSpec
type 属性是一种差异性,它区分 JbodStorage 类型为 EphemeralStorage, PersistentClaimStorage。对于类型 JbodStorage,它需要是值 jbod。
| 属性 | Description |
|---|---|
| type |
必须为 |
| 字符串 | |
| 卷 | 卷列表作为代表 JBOD 存储阵列的 Storage 对象。 |
6.2.19. KafkaAuthorizationSimple 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaClusterSpec
KafkaAuthorizationSimple 模式属性的完整列表
AMQ Streams 中的简单授权使用 AclAuthorizer 插件,即 Apache Kafka 提供的默认访问控制列表(ACL)授权插件。通过 ACL,您可以定义哪些用户可以访问粒度级别的资源。
配置 Kafka 自定义资源以使用简单授权。将 authorization 部分中的 type 属性设置为值 simple,并配置超级用户列表。
为 KafkaUser 配置访问规则,如 ACLRule 模式参考 中所述。
6.2.19.1. 超级用户 复制链接链接已复制到粘贴板!
被视为超级用户的用户主体列表,以便在不查询 ACL 规则的情况下始终允许它们。
简单授权配置示例
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
# ...
Kafka.spec.kafka 中的 config 配置属性中的 super.user 配置选项会被忽略。改为指定 authorization 属性中的超级用户。如需更多信息,请参阅 Kafka 代理配置。
6.2.19.2. KafkaAuthorizationSimple 模式属性 复制链接链接已复制到粘贴板!
type 属性是一种差异性,它区分使用 KafkaAuthorizationOpa、KafkaAuthorizationKeycloak、KafkaAuthorizationCustom 的 KafkaAuthorizationSimple 类型。对于类型 KafkaAuthorizationSimple,它需要有 simple 的值。
| 属性 | Description |
|---|---|
| type |
必须 |
| 字符串 | |
| superUsers | 超级用户列表。应包含用户主体列表,其应获得无限访问权限。 |
| 字符串数组 |
6.2.20. KafkaAuthorizationOpa 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaClusterSpec
KafkaAuthorizationOpa 模式属性的完整列表
要使用 Open Policy Agent 授权,请将 authorization 部分中的 type 属性设置为值 opa,并根据需要配置 OPA 属性。AMQ Streams 使用 Open Policy Agent 插件作为授权器进行 Kafka 授权。有关输入数据和策略示例格式的更多信息,请参阅 用于 Kafka 授权的 Open Policy Agent 插件。
6.2.20.1. url 复制链接链接已复制到粘贴板!
用于连接到 Open Policy Agent 服务器的 URL。URL 必须包含授权器将查询的策略。必需。
6.2.20.2. allowOnError 复制链接链接已复制到粘贴板!
定义当授权器无法查询 Open Policy Agent 时,应默认允许或拒绝 Kafka 客户端,例如当它临时不可用时。默认值为 false - 所有操作都将被拒绝。
6.2.20.3. initialCacheCapacity 复制链接链接已复制到粘贴板!
授权器使用本地缓存的初始容量以避免为每个请求查询 Open Policy Agent。默认值为 5000。
6.2.20.4. maximumCacheSize 复制链接链接已复制到粘贴板!
授权器使用本地缓存的最大容量,以避免为每个请求查询 Open Policy Agent。默认值为 50000。
6.2.20.5. expireAfterMs 复制链接链接已复制到粘贴板!
在本地缓存中保存的记录的过期时间,以避免为每个请求查询 Open Policy Agent。定义从 Open Policy Agent 服务器重新加载缓存的授权决策的频率。以毫秒为单位。默认为 3600000 毫秒(1 小时)。
6.2.20.6. tlsTrustedCertificates 复制链接链接已复制到粘贴板!
TLS 与 OPA 服务器的可信证书。
6.2.20.7. 超级用户 复制链接链接已复制到粘贴板!
被视为超级用户的用户主体列表,以便在不查询开放策略代理策略的情况下始终允许它们。
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
# ...
6.2.20.8. KafkaAuthorizationOpa 模式属性 复制链接链接已复制到粘贴板!
type 属性是一种差异性,它区分 KafkaAuthorizationOpa 类型与 KafkaAuthorizationSimple, KafkaAuthorizationKeycloak, KafkaAuthorizationCustom。对于类型 KafkaAuthorizationOpa,它需要是值 opa。
| 属性 | Description |
|---|---|
| type |
必须为 |
| 字符串 | |
| url | 用于连接到 Open Policy Agent 服务器的 URL。URL 必须包含授权器将查询的策略。这个选项是必需的。 |
| 字符串 | |
| allowOnError |
定义当授权器无法查询 Open Policy Agent 时(例如,临时不可用时)是否默认允许或拒绝 Kafka 客户端。默认值为 |
| 布尔值 | |
| initialCacheCapacity |
授权者使用的本地缓存的初始容量,以避免为每个请求查询 Open Policy Agent。默认为 |
| 整数 | |
| maximumCacheSize |
授权器使用本地缓存的最大容量,以避免为每个请求查询 Open Policy Agent。默认值为 |
| 整数 | |
| expireAfterMs |
在本地缓存中保存的记录的过期时间,以避免为每个请求查询 Open Policy Agent。定义从 Open Policy Agent 服务器重新加载缓存的授权决策的频率。以毫秒为单位。默认为 |
| 整数 | |
| tlsTrustedCertificates | TLS 与 OPA 服务器的可信证书。 |
| superUsers | 超级用户列表,特别是具有无限访问权限的用户主体列表。 |
| 字符串数组 | |
| enableMetrics |
定义 Open Policy Agent 授权器插件是否应提供指标。默认值为 |
| 布尔值 |
6.2.21. KafkaAuthorizationKeycloak 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaClusterSpec
type 属性是一种差异性,它区分了 KafkaAuthorizationKeycloak 类型与 KafkaAuthorizationSimple, KafkaAuthorizationOpa, KafkaAuthorizationCustom 的使用。对于类型 KafkaAuthorizationKeycloak,它需要有值 keycloak。
| 属性 | Description |
|---|---|
| type |
必须是 |
| 字符串 | |
| clientId | Kafka 客户端 ID 可用于针对 OAuth 服务器进行身份验证并使用令牌端点 URI。 |
| 字符串 | |
| tokenEndpointUri | 授权服务器令牌端点 URI。 |
| 字符串 | |
| tlsTrustedCertificates | TLS 连接到 OAuth 服务器的可信证书。 |
| disableTlsHostnameVerification |
启用或禁用 TLS 主机名验证。默认值为 |
| 布尔值 | |
| delegateToKafkaAcls |
如果红帽单点登录授权服务策略 DENIED,是否应将授权决定委派给"Simple"授权器。默认值为 |
| 布尔值 | |
| grantsRefreshPeriodSeconds | 连续两次的时间允许刷新运行(以秒为单位)。默认值为 60。 |
| 整数 | |
| grantsRefreshPoolSize | 用于刷新活跃会话的线程数量。更多线程、并行性越多,作业完成的速度就越快。但是,使用更多线程会将 heavier 负载放在授权服务器上。默认值为 5。 |
| 整数 | |
| superUsers | 超级用户列表。应包含用户主体列表,其应获得无限访问权限。 |
| 字符串数组 | |
| connectTimeoutSeconds | 连接到授权服务器时的连接超时(以秒为单位)。如果没有设置,则有效连接超时为 60 秒。 |
| 整数 | |
| readTimeoutSeconds | 连接到授权服务器时的读取超时(以秒为单位)。如果没有设置,则有效读取超时为 60 秒。 |
| 整数 | |
| httpRetries | 初始 HTTP 请求失败时尝试的最大重试次数。如果没有设置,则默认为不尝试任何重试。 |
| 整数 | |
| enableMetrics |
启用或禁用 OAuth 指标。默认值为 |
| 布尔值 |
6.2.22. KafkaAuthorizationCustom 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaClusterSpec
KafkaAuthorizationCustom 模式属性的完整列表
要在 AMQ Streams 中使用自定义授权,您可以配置自己的 Authorizer 插件来定义访问控制列表(ACL)。
通过 ACL,您可以定义哪些用户可以访问粒度级别的资源。
配置 Kafka 自定义资源以使用自定义授权。将 authorization 部分中的 type 属性设置为值 自定义,并且设置以下属性:
自定义授权器必须实施 org.apache.kafka.server.authorizer.Authorizer 接口,并使用 super.users 配置属性支持 super.users 的配置。
6.2.22.1. authorizerClass 复制链接链接已复制到粘贴板!
(必需)实现 org.apache.kafka.server.authorizer.Authorizer 接口的 Java 类来支持自定义 ACL。
6.2.22.2. 超级用户 复制链接链接已复制到粘贴板!
被视为超级用户的用户主体列表,以便在不查询 ACL 规则的情况下始终允许它们。
您可以使用 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
# ...
除了 Kafka 自定义资源配置外,包含自定义授权器类及其依赖项的 JAR 文件必须在 Kafka 代理的 classpath 上可用。
AMQ Streams Maven 构建过程提供了一种机制,通过在 docker-images/kafka/kafka-thirdparty-libs 目录下的 pom.xml 文件中添加自定义第三方库到生成的 Kafka 代理容器镜像中。目录包含不同 Kafka 版本的不同文件夹。选择适当的文件夹。在修改 pom.xml 文件前,第三方库必须包括在 Maven 存储库中,并且 Maven 存储库必须可以被 AMQ Streams 构建过程访问。
Kafka.spec.kafka 中的 config 配置属性中的 super.user 配置选项会被忽略。改为指定 authorization 属性中的超级用户。如需更多信息,请参阅 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);
}
}
}
6.2.22.3. KafkaAuthorizationCustom 模式属性 复制链接链接已复制到粘贴板!
type 属性是一种差异性,它区分 KafkaAuthorizationCustom 类型与 KafkaAuthorizationSimple, KafkaAuthorizationOpa, KafkaAuthorizationKeycloak。对于类型 KafkaAuthorizationCustom,它需要是 custom 的值。
| 属性 | Description |
|---|---|
| type |
必须是 |
| 字符串 | |
| authorizerClass | 授权实施类必须在 classpath 中提供。 |
| 字符串 | |
| superUsers | 超级用户列表,这是具有无限访问权限的用户主体。 |
| 字符串数组 | |
| supportsAdminApi |
指明自定义授权器是否支持使用 Kafka Admin API 管理 ACL。默认值为 |
| 布尔值 |
6.2.23. rack 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaBridgeSpec, KafkaClusterSpec, KafkaConnectSpec, KafkaMirrorMaker2Spec
rack 选项配置机架感知。一个机架 可以代表一个可用区、数据中心或数据中心中的实际机架。机架 通过 topologyKey 配置。topologyKey 标识 OpenShift 节点上的标签,其值中包含拓扑名称。一个这样的标签是 topology.kubernetes.io/zone (或较旧 OpenShift 版本上的 failure-domain.beta.kubernetes.io/zone ),其中包含 OpenShift 节点在其中运行的可用区的名称。您可以将 Kafka 集群配置为了解其运行的 机架,并启用额外的功能,如将分区副本分散到不同的机架或消耗来自最接近的副本的信息。
如需有关 OpenShift 节点标签的更多信息,请参阅 Well -Known Labels、Annotations 和 Taints。请参考您的 OpenShift 管理员关于代表部署节点的区域或机架的节点标签。
6.2.23.1. 在机架间分布分区副本 复制链接链接已复制到粘贴板!
配置机架感知后,AMQ Streams 将为每个 Kafka 代理设置 broker.rack 配置。broker.rack 配置为每个代理分配一个机架 ID。配置 broker.rack 时,Kafka 代理将尽可能将分区副本分散到不同的机架中。当副本分散到多个机架中时,多个副本的可能性会同时出现故障,则低于同一机架中的故障。分散副本提高了弹性,对可用性和可靠性至关重要。要在 Kafka 中启用机架感知,请在 Kafka 自定义资源的 .spec.kafka 部分添加 rack 选项,如下例所示。
Kafka 的 rack 配置示例
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
rack:
topologyKey: topology.kubernetes.io/zone
# ...
当 pod 被删除或重启时,运行代理的 机架 可能会改变。因此,在不同机架中运行的副本可能会共享相同的机架。使用带有 RackAwareGoal 的 Cruise Control 和 KafkaRebalance 资源来确保副本保留在不同的机架中。
在 Kafka 自定义资源中启用机架感知时,AMQ Streams 将自动添加 OpenShift preferredDuringSchedulingIgnoredDuringExecution 关联性规则,以便在不同的机架之间分发 Kafka 代理。但是,偏好规则 不能保证代理将被分散。根据您的 OpenShift 和 Kafka 配置,您应该为 ZooKeeper 和 Kafka 添加额外的 关联性规则 或为 ZooKeeper 和 Kafka 配置 topologySpreadConstraints,以确保节点可以尽可能多地分配多个机架。如需更多信息,请参阅 第 2.8 节 “配置 pod 调度”。
6.2.23.2. 使用来自最接近的副本的消息 复制链接链接已复制到粘贴板!
机架意识也可用于消费者从最接近的副本获取数据。当 Kafka 集群跨越多个数据中心时,这可用于降低网络上的负载,并在公有云中运行 Kafka 时降低成本。但是,可能会导致延迟增加。
为了能够从最接近的副本使用,必须在 Kafka 集群中配置机架感知功能,必须启用 RackAwareReplicaSelector。replica selector 插件提供逻辑,使客户端能够从最接近的副本使用。默认实现使用 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
# ...
除了 Kafka 代理配置外,还需要在使用者中指定 client.rack 选项。client.rack 选项应指定运行使用者的 机架 ID。RackAwareReplicaSelector 关联匹配的 broker.rack 和 client.rack ID,以查找最接近的副本并从其中使用。如果同一机架中有多个副本,RackAwareReplicaSelector 始终选择最新的副本。如果没有指定 rack ID,或者找不到具有相同机架 ID 的副本,它将回退到领导副本。
图 6.1. 显示在同一可用区中副本使用的客户端示例
您还可以配置 Kafka Connect、M MirrorMaker 2 和 Kafka Bridge,以便连接器消耗来自最接近的副本的消息。您可以在 KafkaConnect、KafkaMirrorMaker2 和 KafkaBridge 自定义资源中启用机架意识。配置不会设置关联性规则,但您也可以配置 affinity 或 topologySpreadConstraints。如需更多信息,请参阅 第 2.8 节 “配置 pod 调度”。
当使用 AMQ Streams 部署 Kafka Connect 时,您可以使用 KafkaConnect 自定义资源中的 rack 部分自动配置 client.rack 选项。
Kafka Connect 的 rack 配置示例
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
# ...
spec:
# ...
rack:
topologyKey: topology.kubernetes.io/zone
# ...
当使用 AMQ Streams 部署 MirrorMaker 2 时,您可以使用 KafkaMirrorMaker2 自定义资源中的 rack 部分自动配置 client.rack 选项。
MirrorMaker 2 的 rack 配置示例
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker2
# ...
spec:
# ...
rack:
topologyKey: topology.kubernetes.io/zone
# ...
当使用 AMQ Streams 部署 Kafka Bridge 时,您可以使用 KafkaBridge 自定义资源中的 rack 部分自动配置 client.rack 选项。
Kafka Bridge 的 rack 配置示例
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
# ...
spec:
# ...
rack:
topologyKey: topology.kubernetes.io/zone
# ...
6.2.23.3. Rack 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| topologyKey |
与分配给 OpenShift 集群节点的标签匹配的键。标签值用于为 Kafka Connect 或 MirrorMaker 2 设置代理的 |
| 字符串 |
6.2.24. Probe 模式参考 复制链接链接已复制到粘贴板!
用于: CruiseControlSpec, EntityTopicOperatorSpec, EntityUserOperatorSpec, KafkaBridgeSpec, KafkaClusterSpec, KafkaConnectSpec, KafkaExporterSpec, KafkaMirrorMaker2Spec, KafkaMirrorMakerSpec, TlsSidecar, ZookeeperClusterSpec
| 属性 | Description |
|---|---|
| failureThreshold | 在成功后,探测至少连续失败才被视为失败。默认值为 3。最小值为 1。 |
| 整数 | |
| initialDelaySeconds | 首次检查健康状态前的初始延迟。默认为 15 秒。最小值为 0。 |
| 整数 | |
| periodSeconds | 执行探测的频率(以秒为单位)。默认为 10 秒。最小值为 1。 |
| 整数 | |
| successThreshold | 在失败后,探测至少连续成功才被视为成功。默认值为 1。对于存活度,必须为 1。最小值为 1。 |
| 整数 | |
| timeoutSeconds | 每个尝试健康检查的超时时间。默认为 5 秒。最小值为 1。 |
| 整数 |
6.2.25. JvmOptions 模式参考 复制链接链接已复制到粘贴板!
用于: CruiseControlSpec, EntityTopicOperatorSpec, EntityUserOperatorSpec, KafkaBridgeSpec, KafkaClusterSpec, KafkaConnectSpec, KafkaMirrorMaker2Spec, KafkaMirrorMakerSpec, ZookeeperClusterSpec
| 属性 | Description |
|---|---|
| -XX | JVM 的 -XX 选项映射。 |
| map | |
| -Xms | 用于 JVM 的 -Xms 选项。 |
| 字符串 | |
| -Xmx | 用于 JVM 的 -Xmx 选项。 |
| 字符串 | |
| gcLoggingEnabled | 指定是否启用 Garbage Collection 日志记录。默认值为 false。 |
| 布尔值 | |
| javaSystemProperties |
将使用 |
6.2.26. SystemProperty 模式参考 复制链接链接已复制到粘贴板!
用于: JvmOptions
| 属性 | Description |
|---|---|
| name | 系统属性名称。 |
| 字符串 | |
| value | 系统属性值。 |
| 字符串 |
6.2.27. KafkaJmxOptions 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaClusterSpec, KafkaConnectSpec, KafkaMirrorMaker2Spec, ZookeeperClusterSpec
配置 JMX 连接选项。
通过连接到端口 9999,从 Kafka 代理、Zooper 节点、Kafka Connect 和 MirrorMaker 2 获取 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"
#...
然后,您可以通过指定您要解决的代理,将 pod 部署到集群中,并使用无头服务获取 JMX 指标。
例如,从代理 0 中获取 JMX 指标,您可以指定:
"CLUSTER-NAME-kafka-0.CLUSTER-NAME-kafka-brokers"
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: {}
# ...
6.2.27.1. KafkaJmxOptions 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| 身份验证 |
用于连接到 JMX 端口的身份验证配置。类型取决于给定对象中的 |
6.2.28. KafkaJmxAuthenticationPassword 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaJmxOptions
type 属性是一个差异性,它区分以后可能会添加 KafkaJmxAuthenticationPassword 类型。对于类型 KafkaJmxAuthenticationPassword,它需要是值 password。
| 属性 | Description |
|---|---|
| type |
必须为 |
| 字符串 |
6.2.29. JmxPrometheusExporterMetrics 模式参考 复制链接链接已复制到粘贴板!
用于: CruiseControlSpec, KafkaClusterSpec, KafkaConnectSpec, KafkaMirrorMaker2Spec, KafkaMirrorMakerSpec, ZookeeperClusterSpec
type 属性是一个差异性,它区分将来可能会添加其他子类型中的 JmxPrometheusExporterMetrics 类型。对于类型 JmxPrometheusExporterMetrics,它需要有值 jmxPrometheusExporter。
| 属性 | Description |
|---|---|
| type |
必须是 |
| 字符串 | |
| valueFrom | 存储 Prometheus JMX Exporter 配置的 ConfigMap 条目。有关此配置结构的详情,请查看 Prometheus JMX Exporter。 |
6.2.30. ExternalConfigurationReference 模式参考 复制链接链接已复制到粘贴板!
用于: ExternalLogging, JmxPrometheusExporterMetrics
| 属性 | Description |
|---|---|
| configMapKeyRef | 对包含配置的 ConfigMap 中的密钥的引用。如需更多信息,请参阅 core/v1 configmapkeyselector 的外部文档。 |
6.2.31. InlineLogging 模式参考 复制链接链接已复制到粘贴板!
用于: CruiseControlSpec, EntityTopicOperatorSpec, EntityUserOperatorSpec, KafkaBridgeSpec, KafkaClusterSpec, KafkaConnectSpec, KafkaMirrorMaker2Spec, KafkaMirrorMakerSpec, ZookeeperClusterSpec
type 属性是一种差异性,它区分使用 InlineLogging 类型与 ExternalLogging。对于类型 InlineLogging,它需要有 inline 值。
| 属性 | Description |
|---|---|
| type |
必须是 |
| 字符串 | |
| 日志记录器 | 从日志记录器名称映射到日志记录器级别的映射。 |
| map |
6.2.32. ExternalLogging 模式参考 复制链接链接已复制到粘贴板!
用于: CruiseControlSpec, EntityTopicOperatorSpec, EntityUserOperatorSpec, KafkaBridgeSpec, KafkaClusterSpec, KafkaConnectSpec, KafkaMirrorMaker2Spec, KafkaMirrorMakerSpec, ZookeeperClusterSpec
type 属性是一种差异性,它区分使用 ExternalLogging 类型与 InlineLogging。对于类型 ExternalLogging,它需要的值是 external。
| 属性 | Description |
|---|---|
| type |
必须是 |
| 字符串 | |
| valueFrom |
存储日志记录配置的 |
6.2.33. KafkaClusterTemplate 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaClusterSpec
| 属性 | Description |
|---|---|
| statefulset |
Kafka |
| pod |
Kafka |
| bootstrapService |
Kafka bootstrap |
| brokersService |
Kafka |
| externalBootstrapService |
Kafka 外部 bootstrap |
| perPodService |
Kafka 每个 pod |
| externalBootstrapRoute |
Kafka 外部 bootstrap |
| perPodRoute |
用于从 OpenShift 外部访问的 Kafka 每个 pod |
| externalBootstrapIngress |
Kafka 外部 bootstrap |
| perPodIngress |
用于从 OpenShift 外部访问的 Kafka 针对每个 |
| persistentVolumeClaim |
所有 Kafka |
| podDisruptionBudget |
Kafka |
| kafkaContainer | Kafka 代理容器的模板。 |
| initContainer | Kafka init 容器的模板。 |
| clusterCaCert | 使用 Kafka Cluster 证书公钥的 Secret 模板。 |
| serviceAccount | Kafka 服务帐户的模板。 |
| jmxSecret | Kafka Cluster JMX 身份验证的 Secret 模板。 |
| clusterRoleBinding | Kafka ClusterRoleBinding 的模板。 |
| podSet |
Kafka |
6.2.34. StatefulSetTemplate 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaClusterTemplate、ZookeeperClusterTemplate
| 属性 | Description |
|---|---|
| metadata | 应用到资源的元数据。 |
| podManagementPolicy |
用于此 StatefulSet 的 PodManagementPolicy。有效值为 |
| string (one of [OrderedReady, Parallel]) |
6.2.35. MetadataTemplate 模式参考 复制链接链接已复制到粘贴板!
用于: BuildConfigTemplate, DeploymentTemplate, InternalServiceTemplate, PodDisruptionBudgetTemplate, PodTemplate, ResourceTemplate, StatefulSetTemplate
Labels 和 Annotations 用于识别和组织资源,并在 metadata 属性中配置。
例如:
# ...
template:
pod:
metadata:
labels:
label1: value1
label2: value2
annotations:
annotation1: value1
annotation2: value2
# ...
labels 和 annotations 字段可以包含没有保留字符串 strimzi.io 的任何标签或注解。包含 strimzi.io 的标签和注解由 AMQ Streams 内部使用,且无法配置。
6.2.35.1. MetadataTemplate 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| labels |
添加到资源模板的标签。可以应用到不同的资源,如 |
| map | |
| annotations |
添加到资源模板的注解。可以应用到不同的资源,如 |
| map |
6.2.36. PodTemplate 模式参考 复制链接链接已复制到粘贴板!
用于:CruiseControlTemplate, EntityOperatorTemplate, KafkaBridgeTemplate, KafkaClusterTemplate, KafkaConnectTemplate, KafkaExporterTemplate, KafkaMirrorMakerTemplate, ZookeeperClusterTemplate
配置 Kafka pod 模板。
PodTemplate 配置示例
# ...
template:
pod:
metadata:
labels:
label1: value1
annotations:
anno1: value1
imagePullSecrets:
- name: my-docker-credentials
securityContext:
runAsUser: 1000001
fsGroup: 0
terminationGracePeriodSeconds: 120
# ...
6.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"
#...
6.2.36.2. PodTemplate 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| metadata | 应用到资源的元数据。 |
| imagePullSecrets |
用于拉取此 Pod 使用的任何镜像对同一命名空间中的 secret 的引用列表。当 Cluster Operator 中的 |
| securityContext | 配置 pod 级别的安全属性和通用容器设置。如需更多信息,请参阅 core/v1 podsecuritycontext 的外部文档。 |
| terminationGracePeriodSeconds | 宽限期是 pod 中运行的进程发送终止信号后经过的持续时间(以秒为单位),以及进程通过 kill 信号强制停止的时间。将此值设置为比您的进程预期的清理时间长。值必须是非负的整数。零值表示立即删除。您可能需要为非常大的 Kafka 集群增加宽限期,以便 Kafka 代理有足够的时间将工作传送到另一个代理,然后再终止。默认值为 30 秒。 |
| 整数 | |
| 关联性 | pod 的关联性规则。如需更多信息,请参阅 core/v1 关联性的外部文档。 |
| 容限(tolerations) | pod 的容限。如需更多信息,请参阅 core/v1 容限的外部文档。 |
| 容限 数组 | |
| priorityClassName | 用于为 pod 分配优先级的优先级类的名称。有关优先级类的更多信息,请参阅 Pod 优先级和抢占。 |
| 字符串 | |
| schedulerName |
用于分配此 |
| 字符串 | |
| hostAliases | pod 的 HostAliases。hostAliases 是主机和 IP 的可选列表,如果指定,将注入到 Pod 的主机文件中。如需更多信息,请参阅 core/v1 hostalias 的外部文档。 |
| HostAlias 数组 | |
| tmpDirSizeLimit |
定义临时 EmptyDir 卷( |
| 字符串 | |
| enableServiceLinks | 指明是否应将服务信息注入到 Pod 的环境变量中。 |
| 布尔值 | |
| topologySpreadConstraints | pod 的拓扑分布限制。如需更多信息,请参阅 core/v1 topologyspreadconstraint 的外部文档。 |
6.2.37. InternalServiceTemplate 模式参考 复制链接链接已复制到粘贴板!
用于: CruiseControlTemplate, KafkaBridgeTemplate, KafkaClusterTemplate, KafkaConnectTemplate, ZookeeperClusterTemplate
| 属性 | Description |
|---|---|
| metadata | 应用到资源的元数据。 |
| ipFamilyPolicy |
指定服务使用的 IP 系列策略。可用的选项有 |
| 字符串([RequireDualStack、SingleStack、PreferDualStack] 之一) | |
| ipFamilies |
指定服务使用的 IP Families。可用选项包括 |
| 字符串(一个或多个 [IPv6、IPv4])数组 |
6.2.38. resourcetemplate 模式参考 复制链接链接已复制到粘贴板!
用于:CruiseControlTemplate, EntityOperatorTemplate, KafkaBridgeTemplate, KafkaClusterTemplate, KafkaConnectTemplate, KafkaExporterTemplate, KafkaMirrorMakerTemplate, KafkaUserTemplate, ZookeeperClusterTemplate
| 属性 | Description |
|---|---|
| metadata | 应用到资源的元数据。 |
6.2.39. PodDisruptionBudgetTemplate 模式参考 复制链接链接已复制到粘贴板!
用于: CruiseControlTemplate, KafkaBridgeTemplate, KafkaClusterTemplate, KafkaConnectTemplate, KafkaMirrorMakerTemplate, ZookeeperClusterTemplate
PodDisruptionBudgetTemplate 模式属性的完整列表
AMQ Streams 为每个新的 StrimziPodSet、StatefulSet 或 Deployment 创建一个 PodDisruptionBudget。默认情况下,pod 中断预算只允许单个 pod 在给定时间不可用。您可以通过更改 maxUnavailable 属性的默认值来增加允许的 pod 数量。
PodDisruptionBudget 模板示例
# ...
template:
podDisruptionBudget:
metadata:
labels:
key1: label1
key2: label2
annotations:
key1: label1
key2: label2
maxUnavailable: 1
# ...
6.2.39.1. PodDisruptionBudgetTemplate 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| metadata |
应用到 |
| maxUnavailable |
允许自动 pod 驱除的最大不可用 pod 数量。当 |
| 整数 |
6.2.40. ContainerTemplate 模式参考 复制链接链接已复制到粘贴板!
用于:CruiseControlTemplate, EntityOperatorTemplate, KafkaBridgeTemplate, KafkaClusterTemplate, KafkaConnectTemplate, KafkaExporterTemplate, KafkaMirrorMakerTemplate, ZookeeperClusterTemplate
您可以为容器设置自定义安全上下文和环境变量。
环境变量在 env 属性下定义,作为 name 和 value 字段的对象列表。以下示例显示了两个自定义环境变量,并为 Kafka 代理容器设置自定义安全上下文:
# ...
template:
kafkaContainer:
env:
- name: EXAMPLE_ENV_1
value: example.env.one
- name: EXAMPLE_ENV_2
value: example.env.two
securityContext:
runAsUser: 2000
# ...
前缀为 KAFKA_ 的环境变量是 AMQ Streams 的内部,应该避免。如果您设置了 AMQ Streams 已使用的自定义环境变量,它会被忽略,并在日志中记录警告信息。
6.2.40.1. ContainerTemplate 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| env | 应该应用到容器的环境变量。 |
| securityContext | 容器的安全上下文。如需更多信息,请参阅 core/v1 securitycontext 的外部文档。 |
6.2.41. ContainerEnvVar 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| name | 环境变量键。 |
| 字符串 | |
| value | 环境变量值。 |
| 字符串 |
6.2.42. ZookeeperClusterSpec 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaSpec
ZookeeperClusterSpec 模式属性的完整列表
配置 ZooKeeper 集群。
6.2.42.1. config 复制链接链接已复制到粘贴板!
使用 config 属性将 ZooKeeper 选项配置为键。
可能会提供标准 Apache ZooKeeper 配置,仅限于不受 AMQ Streams 直接管理的属性。
不能配置的配置选项与以下内容相关:
- 安全性(加密、认证和授权)
- 侦听器配置
- 配置数据目录
- ZooKeeper 集群组成
该值可以是以下 JSON 类型之一:
- 字符串
- Number
- 布尔值
您可以指定并配置 ZooKeeper 文档 中列出的选项,但 AMQ Streams 直接管理的选项除外。具体来说,所有与以下字符串之一相等或开始的配置选项都会被禁止:
-
服务器. -
dataDir -
dataLogDir -
clientPort -
authProvider -
quorum.auth -
requireClientAuthScheme
当 config 属性中存在 forbidden 选项时,它会被忽略,并将警告信息输出到 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
# ...
6.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.name 和 logging.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"
# ...
外部日志记录
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
spec:
# ...
zookeeper:
# ...
logging:
type: external
valueFrom:
configMapKeyRef:
name: customConfigMap
key: zookeeper-log4j.properties
# ...
垃圾收集器(GC)
也可以使用 jvmOptions 属性 启用(或禁用)垃圾收集器日志记录。
6.2.42.3. ZookeeperClusterSpec 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| replicas | 集群中的 pod 数量。 |
| 整数 | |
| image | pod 的 docker 镜像。 |
| 字符串 | |
| storage |
存储配置(磁盘)。无法更新。类型取决于给定对象中的 |
| config | ZooKeeper 代理配置。无法设置以下前缀的属性:server., dataDir, dataLogDir, clientPort, authProvider, quorum.auth, requireClientAuthScheme, snapshot.trust.empty, standaloneEnabled, reconfigEnabled, 4lw.commands.whitelist, secureClientPort, ssl., serverCnxnFactory, sslQuorum (除 ssl.protocol 除外) 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 选项。 |
| jmxOptions | Zookeeper 节点的 JMX 选项。 |
| 资源 | 要保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源requirements 的外部文档。 |
| metricsConfig |
指标配置.该类型取决于给定对象中的 |
| logging |
ZooKeeper 的日志记录配置。类型取决于给定对象中的 |
| 模板 |
ZooKeeper 集群资源模板。通过该模板,用户可以指定如何生成 |
6.2.43. ZookeeperClusterTemplate 模式参考 复制链接链接已复制到粘贴板!
用于:Zoo keeperClusterSpec
| 属性 | Description |
|---|---|
| statefulset |
ZooKeeper |
| pod |
ZooKeeper |
| clientService |
ZooKeeper 客户端服务 |
| nodesService |
ZooKeeper 节点 |
| persistentVolumeClaim |
所有 ZooKeeper |
| podDisruptionBudget |
ZooKeeper |
| zookeeperContainer | ZooKeeper 容器的模板。 |
| serviceAccount | ZooKeeper 服务帐户的模板。 |
| jmxSecret | Zookeeper Cluster JMX 身份验证的 Secret 模板。 |
| podSet |
ZooKeeper |
6.2.44. EntityOperatorSpec 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaSpec
| 属性 | Description |
|---|---|
| topicOperator | 配置主题 Operator。 |
| userOperator | 配置用户 Operator。 |
| tlsSidecar | TLS sidecar 配置。 |
| 模板 |
Entity Operator 资源的模板。通过该模板,用户可以指定如何生成 |
6.2.45. EntityTopicOperatorSpec 模式参考 复制链接链接已复制到粘贴板!
EntityTopicOperatorSpec 模式属性的完整列表
配置主题 Operator。
6.2.45.1. logging 复制链接链接已复制到粘贴板!
Topic Operator 有一个可配置的日志记录器:
-
rootLogger.level
主题 Operator 使用 Apache log4j2 日志记录器实现。
使用 Kafka 资源 Kafka 资源的 entityOperator.topicOperator 字段中的 logging 属性来配置日志记录器和日志记录器级别。
您可以通过直接指定日志记录器和级别(在线)或使用自定义(外部) ConfigMap 来设置日志级别。如果使用 ConfigMap,您可以将 logging.valueFrom.configMapKeyRef.name 属性设置为包含外部日志记录配置的 ConfigMap 的名称。在 ConfigMap 中,使用 log4j2.properties 描述了日志配置。logging.valueFrom.configMapKeyRef.name 和 logging.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
# ...
外部日志记录
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
# ...
垃圾收集器(GC)
也可以使用 jvmOptions 属性 启用(或禁用)垃圾收集器日志记录。
6.2.45.2. EntityTopicOperatorSpec 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| watchedNamespace | Topic Operator 应该监视的命名空间。 |
| 字符串 | |
| image | 用于主题 Operator 的镜像。 |
| 字符串 | |
| reconciliationIntervalSeconds | 定期协调之间的间隔。 |
| 整数 | |
| zookeeperSessionTimeoutSeconds | ZooKeeper 会话超时。 |
| 整数 | |
| startupProbe | Pod 启动检查。 |
| livenessProbe | Pod 存活度检查。 |
| readinessProbe | Pod 就绪度检查。 |
| 资源 | 要保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源requirements 的外部文档。 |
| topicMetadataMaxAttempts | 获取主题元数据的尝试次数。 |
| 整数 | |
| logging |
日志记录配置.类型取决于给定对象中的 |
| jvmOptions | pod 的 JVM 选项。 |
6.2.46. EntityUserOperatorSpec 模式参考 复制链接链接已复制到粘贴板!
EntityUserOperatorSpec 模式属性的完整列表
配置 User Operator。
6.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.name 和 logging.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
# ...
外部日志记录
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
# ...
垃圾收集器(GC)
也可以使用 jvmOptions 属性 启用(或禁用)垃圾收集器日志记录。
6.2.46.2. EntityUserOperatorSpec 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| watchedNamespace | User Operator 应该监视的命名空间。 |
| 字符串 | |
| image | 用于 User Operator 的镜像。 |
| 字符串 | |
| reconciliationIntervalSeconds | 定期协调之间的间隔。 |
| 整数 | |
| zookeeperSessionTimeoutSeconds |
|
| 整数 | |
| secretPrefix | 将添加到 KafkaUser 名称的前缀,用作 Secret 名称。 |
| 字符串 | |
| livenessProbe | Pod 存活度检查。 |
| readinessProbe | Pod 就绪度检查。 |
| 资源 | 要保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源requirements 的外部文档。 |
| logging |
日志记录配置.类型取决于给定对象中的 |
| jvmOptions | pod 的 JVM 选项。 |
6.2.47. TlsSidecar 模式参考 复制链接链接已复制到粘贴板!
用于: CruiseControlSpec, EntityOperatorSpec
配置 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 属性配置将使用的容器镜像。
readinessProbe 和 livenessProbe 属性为 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
# ...
6.2.47.1. TlsSidecar 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| image | 容器的 docker 镜像。 |
| 字符串 | |
| livenessProbe | Pod 存活度检查。 |
| logLevel |
TLS sidecar 的日志级别。默认值为 |
| string (one of [emerg, debug, crit, err, alert, warning, notice, info]) | |
| readinessProbe | Pod 就绪度检查。 |
| 资源 | 要保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源requirements 的外部文档。 |
6.2.48. EntityOperatorTemplate 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| 部署 |
Entity Operator |
| pod |
实体 Operator |
| topicOperatorContainer | Entity Topic Operator 容器的模板。 |
| userOperatorContainer | Entity User Operator 容器的模板。 |
| tlsSidecarContainer | Entity Operator TLS sidecar 容器的模板。 |
| serviceAccount | Entity Operator 服务帐户的模板。 |
| entityOperatorRole | Entity Operator 角色的模板。 |
| topicOperatorRoleBinding | Entity Topic Operator RoleBinding 的模板。 |
| userOperatorRoleBinding | Entity Topic Operator RoleBinding 的模板。 |
6.2.49. DeploymentTemplate 模式参考 复制链接链接已复制到粘贴板!
用于: CruiseControlTemplate, EntityOperatorTemplate, KafkaBridgeTemplate, KafkaConnectTemplate, KafkaExporterTemplate, KafkaMirrorMakerTemplate
使用 deploymentStrategy 指定在部署配置更改时将旧 pod 替换为新 pod 的策略。
使用以下值之一:
-
rollingupdate: Pod 重启为零停机时间。 -
Recreate:Pod 在创建新 Pod 前终止。
使用 Recreate 部署策略具有不要求备用资源的优点,但缺点是应用程序停机时间。
显示部署策略设为 Recreate 的示例。
# ...
template:
deployment:
deploymentStrategy: Recreate
# ...
这个配置更改不会导致滚动更新。
6.2.49.1. DeploymentTemplate 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| metadata | 应用到资源的元数据。 |
| deploymentStrategy |
用于部署配置的 Pod 替换策略。有效值为 |
| 字符串([RollingUpdate, Recreate] 之一) |
6.2.50. certificateAuthority 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaSpec
配置在集群中如何使用 TLS 证书。这适用于集群中内部通信的证书,以及用于通过 Kafka.spec.kafka.listeners.tls 进行客户端访问的证书。
| 属性 | Description |
|---|---|
| generateCertificateAuthority | 如果为 true,则会自动生成证书颁发机构证书。否则,用户需要提供带有 CA 证书的 Secret。默认为 true。 |
| 布尔值 | |
| generateSecretOwnerReference |
如果为 |
| 布尔值 | |
| validityDays | 生成的证书应有效的天数。默认值为 365。 |
| 整数 | |
| renewalDays |
证书续订期间的天数。这是证书过期前的天数。当 |
| 整数 | |
| certificateExpirationPolicy |
在生成 |
| string (one of [replace-key, renew-certificate]) |
6.2.51. CruiseControlSpec 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaSpec
配置一个 Cruise Control 集群。
配置选项与以下内容相关:
- 目标配置
- 资源分配目标的容量限制
6.2.51.1. config 复制链接链接已复制到粘贴板!
使用 config 属性将控制选项配置为密钥。
可以提供标准 Cruise Control 配置,仅限于不受 AMQ Streams 直接管理的属性。
无法配置的配置选项与以下内容相关:
- 安全性(加密、认证和授权)
- 连接到 Kafka 集群
- 客户端 ID 配置
- zookeeper 连接
- Web 服务器配置
- 自我修复
该值可以是以下 JSON 类型之一:
- 字符串
- Number
- 布尔值
您可以指定并配置 Cruise Control 文档 中列出的选项,但 AMQ Streams 直接管理的这些选项除外。有关禁止的前缀列表,请参阅 config 属性的描述。
当 config 属性中存在 forbidden 选项时,它会被忽略,并将警告信息输出到 Cluster Operator 日志文件。所有其他支持选项都传递到 Cruise Control。
禁止选项有例外情况。对于使用特定 加密套件 进行 TLS 版本的客户端连接,您可以配置允许的 ssl 属性。您还可以配置 webserver 属性来启用 Cross-Origin Resource Sharing (CORS)。
Cruise Control 配置示例
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
# ...
cruiseControl:
# ...
config:
# Note that `default.goals` (superset) must also include all `hard.goals` (subset)
default.goals: >
com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal,
com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaCapacityGoal
hard.goals: >
com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal
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"
# ...
6.2.51.2. 跨形资源共享(CORS) 复制链接链接已复制到粘贴板!
跨形资源共享(CORS)是一种 HTTP 机制,用于控制对 REST API 的访问。限制可以取决于访问方法或客户端应用的 URL。您可以使用 config 中的 webserver.http.cors.enabled 属性,通过 Cruise Control 启用 CORS。启用后,CORS 允许从不同于 AMQ Streams 的应用程序读取对 Cruise Control REST API 的访问。这允许来自指定源中的应用程序通过 Cruise Control API 来使用 GET 请求获取 Kafka 集群的信息。例如,应用程序可以获取当前集群负载或最新优化建议的信息。不允许 POST 请求。
有关将 CORS 与 Cruise Control 搭配使用的更多信息,请参阅 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
webserver.http.cors.origin: "*"
webserver.http.cors.exposeheaders: "User-Task-ID,Content-Type"
# ...
6.2.51.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
# ...
6.2.51.4. brokerCapacity 复制链接链接已复制到粘贴板!
Cruise Control 使用容量限制来决定资源分布的优化目标是否被破坏。这个类型有 4 个目标:
-
DiskUsageDistributionGoal- 磁盘使用分发 -
CpuUsageDistributionGoal- CPU utilization distribution -
NetworkInboundUsageDistributionGoal- 网络入站使用分布 -
NetworkOutboundUsageDistributionGoal- 网络出站使用分布
您可以在 Kafka.spec.cruiseControl 的 brokerCapacity 属性中为 Kafka 代理资源指定容量限制。它们默认为启用,您可以更改它们的默认值。可以为以下代理资源设置容量限制:
-
CPU- CPU 资源(毫秒或)或 CPU 内核(默认:1) -
inboundNetwork- 入站网络吞吐量(字节/每秒)(默认值:10000KiB/s) -
outboundNetwork- 出站网络吞吐量(字节/每秒)(默认值:10000KiB/s)
对于网络吞吐量,请使用带有标准 OpenShift 字节单元 (K、M、G) 或其 bibyte (指数 2)的等效值 (Ki, Mi, Gi) 的整数值。
磁盘和 CPU 容量限制由 AMQ Streams 自动生成,因此您不需要设置它们。为了保证在使用 CPU 目标时准确重新平衡建议,您可以在 Kafka.spec.kafka.resources 中设置与 CPU 限制相等的 CPU 请求。这样,所有 CPU 资源都会保留前期,并且始终可用。此配置允许 Cruise Control 在准备基于 CPU 目标的重新平衡建议时,正确评估 CPU 利用率。如果您无法设置与 Kafka.spec.kafka.resources 中 CPU 限制相等的 CPU 请求,您可以手动为相同的准确性设置 CPU 容量。
使用 bibyte 单元的 Cruise Control brokerCapacity 配置示例
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
# ...
cruiseControl:
# ...
brokerCapacity:
cpu: "2"
inboundNetwork: 10000KiB/s
outboundNetwork: 10000KiB/s
# ...
6.2.51.5. 容量覆盖 复制链接链接已复制到粘贴板!
代理可能会在带有异构网络或 CPU 资源的节点上运行。如果是这种情况,请指定 覆盖,为每个代理设置网络容量和 CPU 限值。覆盖可确保在代理之间准确重新平衡。可以为以下代理资源设置覆盖容量限制:
-
CPU- CPU 资源(毫秒或)或 CPU 内核(默认:1) -
inboundNetwork- 入站网络吞吐量(字节/每秒)(默认值:10000KiB/s) -
outboundNetwork- 出站网络吞吐量(字节/每秒)(默认值:10000KiB/s)
Cruise Control capacity 的示例使用 bibyte 单位覆盖配置
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
# ...
cruiseControl:
# ...
brokerCapacity:
cpu: "1"
inboundNetwork: 10000KiB/s
outboundNetwork: 10000KiB/s
overrides:
- brokers: [0]
cpu: "2.755"
inboundNetwork: 20000KiB/s
outboundNetwork: 20000KiB/s
- brokers: [1, 2]
cpu: 3000m
inboundNetwork: 30000KiB/s
outboundNetwork: 30000KiB/s
如需更多信息,请参阅 BrokerCapacity 模式参考。
6.2.51.6. 日志记录配置 复制链接链接已复制到粘贴板!
Cruise Control 都有自己的可配置的日志记录器:
-
rootLogger.level
Cruise Control 使用 Apache log4j2 日志记录器实现。
使用 logging 属性配置日志记录器和日志记录器级别。
您可以通过直接指定日志记录器和级别(在线)或使用自定义(外部) ConfigMap 来设置日志级别。如果使用 ConfigMap,您可以将 logging.valueFrom.configMapKeyRef.name 属性设置为包含外部日志记录配置的 ConfigMap 的名称。在 ConfigMap 中,使用 log4j.properties 描述了日志配置。logging.valueFrom.configMapKeyRef.name 和 logging.valueFrom.configMapKeyRef.key 属性都是强制的。当 Cluster Operator 运行时,使用指定的准确日志配置创建 ConfigMap,然后在每个协调后重新创建。如果没有指定自定义 ConfigMap,则使用默认日志设置。如果没有设置特定的日志记录器值,则会继承该日志记录器的上级日志记录器设置。在这里,我们会看到 内联 和 外部日志记录 的示例。
内联日志记录
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
# ...
spec:
cruiseControl:
# ...
logging:
type: inline
loggers:
rootLogger.level: "INFO"
# ...
外部日志记录
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
# ...
spec:
cruiseControl:
# ...
logging:
type: external
valueFrom:
configMapKeyRef:
name: customConfigMap
key: cruise-control-log4j.properties
# ...
垃圾收集器(GC)
也可以使用 jvmOptions 属性 启用(或禁用)垃圾收集器日志记录。
6.2.51.7. CruiseControlSpec 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| image | pod 的 docker 镜像。 |
| 字符串 | |
| tlsSidecar |
|
| 资源 | 为 Cruise Control 容器保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源requirements 的外部文档。 |
| livenessProbe | 对 Cruise Control 容器进行 Pod 存活度检查。 |
| readinessProbe | 对 Cruise Control 容器进行 Pod 就绪度检查。 |
| jvmOptions | Cruise Control 容器的 JVM 选项。 |
| logging |
用于 Cruise Control 的日志记录配置(Log4j 2)类型取决于给定对象中的 |
| 模板 |
模板,用于指定如何生成 Cruise Control 资源、 |
| brokerCapacity |
Cruise Control |
| config | Cruise Control 配置。有关配置选项的完整列表请参考 https://github.com/linkedin/cruise-control/wiki/Configurations。请注意,无法设置带有以下前缀的属性: bootstrap.servers、client.id、zookeeper.、network.、security.、failed.brokers.zk.path,webserver.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.origin, webserver.http.cors.exposeheaders, webserver.security.enable, webserver.ssl.enable)。 |
| map | |
| metricsConfig |
指标配置.该类型取决于给定对象中的 |
6.2.52. CruiseControlTemplate 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| 部署 |
用于 Cruise Control |
| pod |
用于控制 |
| apiService |
用于 Cruise Control API |
| podDisruptionBudget |
用于控制 |
| cruiseControlContainer | Cruise Control 容器的模板。 |
| tlsSidecarContainer |
|
| serviceAccount | Cruise Control 服务帐户的模板。 |
6.2.53. BrokerCapacity 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| disk |
|
| 字符串 | |
| cpuUtilization |
|
| 整数 | |
| cpu | 以内核数或 millicores 为单位的 CPU 资源的代理容量。例如, 1, 1.500, 1500m。有关有效 CPU 资源单元的更多信息,请参阅 https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu。 |
| 字符串 | |
| inboundNetwork | 入站网络吞吐量的代理容量(以字节/秒为单位)。请使用带有标准 OpenShift 字节单元 (K、M、G) 或其 bibyte (指数 2)的等效值 (Ki, Mi, Gi) 的整数值。例如,10000KiB/s。 |
| 字符串 | |
| outboundNetwork | 用于出站网络吞吐量的代理容量(以字节/秒为单位)。请使用带有标准 OpenShift 字节单元 (K、M、G) 或其 bibyte (指数 2)的等效值 (Ki, Mi, Gi) 的整数值。例如,10000KiB/s。 |
| 字符串 | |
| overrides |
覆盖单个代理。 |
6.2.54. BrokerCapacityOverride 模式参考 复制链接链接已复制到粘贴板!
用于: BrokerCapacity
| 属性 | Description |
|---|---|
| 代理(broker) | Kafka 代理列表(代理标识符)。 |
| 整数数组 | |
| cpu | 以内核数或 millicores 为单位的 CPU 资源的代理容量。例如, 1, 1.500, 1500m。有关有效 CPU 资源单元的更多信息,请参阅 https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu。 |
| 字符串 | |
| inboundNetwork | 入站网络吞吐量的代理容量(以字节/秒为单位)。请使用带有标准 OpenShift 字节单元 (K、M、G) 或其 bibyte (指数 2)的等效值 (Ki, Mi, Gi) 的整数值。例如,10000KiB/s。 |
| 字符串 | |
| outboundNetwork | 用于出站网络吞吐量的代理容量(以字节/秒为单位)。请使用带有标准 OpenShift 字节单元 (K、M、G) 或其 bibyte (指数 2)的等效值 (Ki, Mi, Gi) 的整数值。例如,10000KiB/s。 |
| 字符串 |
6.2.55. KafkaExporterSpec schema reference 复制链接链接已复制到粘贴板!
用于: KafkaSpec
| 属性 | Description |
|---|---|
| image | pod 的 docker 镜像。 |
| 字符串 | |
| groupRegex |
正则表达式,指定要收集的消费者组。默认值为 |
| 字符串 | |
| topicRegex |
正则表达式,指定要收集哪些主题。默认值为 |
| 字符串 | |
| 资源 | 要保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源requirements 的外部文档。 |
| logging |
只有具有给定严重性或更高严重性的日志消息。有效级别: [ |
| 字符串 | |
| enableSaramaLogging | 启用 Sarama 日志记录,这是 Kafka Exporter 使用的 Go 客户端库。 |
| 布尔值 | |
| 模板 | 自定义部署模板和 pod。 |
| livenessProbe | Pod 存活度检查。 |
| readinessProbe | Pod 就绪度检查。 |
6.2.56. KafkaExporterTemplate 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| 部署 |
Kafka Exporter |
| pod |
Kafka Exporter |
| service |
|
| container | Kafka Exporter 容器的模板。 |
| serviceAccount | Kafka Exporter 服务帐户的模板。 |
6.2.57. KafkaStatus 模式参考 复制链接链接已复制到粘贴板!
用于: Kafka
| 属性 | Description |
|---|---|
| conditions | 状态条件列表。 |
|
| |
| observedGeneration | Operator 最后协调的 CRD 的生成。 |
| 整数 | |
| 监听器 | 内部和外部监听程序的地址。 |
| clusterId | Kafka 集群 Id。 |
| 字符串 |
6.2.58. Condition 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaBridgeStatus, KafkaConnectorStatus, KafkaConnectStatus, KafkaMirrorMaker2Status, KafkaMirrorMakerStatus, KafkaRebalanceStatus, KafkaStatus, KafkaTopicStatus, KafkaUserStatus
| 属性 | Description |
|---|---|
| type | 条件的唯一标识符,用于区分资源中的其他条件。 |
| 字符串 | |
| status | 条件的状态,可以是 True、False 或 Unknown。 |
| 字符串 | |
| lastTransitionTime | 类型的条件从一个状态更改为另一个状态的时间。在 UTC 时区内,所需格式为 'yyyyy-MM-ddTHH:mm:ssZ'。 |
| 字符串 | |
| reason | 条件最后一次转换的原因(CamelCase 中是一个单词)。 |
| 字符串 | |
| message | 人类可读消息,指示条件最后一次转换的详细信息。 |
| 字符串 |
6.2.59. ListenerStatus 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaStatus
| 属性 | Description |
|---|---|
| type |
|
| 字符串 | |
| name | 侦听器的名称。 |
| 字符串 | |
| addresses | 此侦听器的地址列表。 |
| bootstrapServers |
用来使用这个监听程序连接到 Kafka 集群的、以逗号分隔的 |
| 字符串 | |
| 证书 |
TLS 证书列表,可用于在连接到给定监听程序时验证服务器的身份。仅为 |
| 字符串数组 |
6.2.60. ListenerAddress 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| 主机 | Kafka bootstrap 服务的 DNS 名称或 IP 地址。 |
| 字符串 | |
| port | Kafka bootstrap 服务的端口。 |
| 整数 |
6.2.61. KafkaConnect 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| spec | Kafka Connect 集群的规格。 |
| status | Kafka Connect 集群的状态。 |
6.2.62. KafkaConnectSpec 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaConnect
配置 Kafka Connect 集群。
6.2.62.1. config 复制链接链接已复制到粘贴板!
使用 config 属性将 Kafka 选项配置为密钥。
可以提供标准 Apache Kafka Connect 配置,仅限于不直接由 AMQ Streams 管理的属性。
不能配置的配置选项与以下内容相关:
- Kafka 集群 bootstrap 地址
- 安全性(加密、认证和授权)
- 侦听器/ REST 接口配置
- 插件路径配置
该值可以是以下 JSON 类型之一:
- 字符串
- Number
- 布尔值
您可以指定并配置 Apache Kafka 文档 中列出的选项,但 AMQ Streams 直接管理的这些选项除外。特别是,禁止带有与以下字符串之一相等或以以下字符串开头的配置选项:
-
SSL。 -
sasl。 -
安全性。 -
监听器 -
plugin.path -
REST. -
bootstrap.servers
当 config 属性中存在 forbidden 选项时,它会被忽略,并将警告信息输出到 Cluster Operator 日志文件。所有其他选项都传递到 Kafka Connect。
Cluster Operator 不会密钥或 config 对象中提供的值。当提供无效的配置时,Kafka Connect 集群可能无法启动,也可能不稳定。在这个状况中,修复 KafkaConnect.spec.config 对象中的配置,Cluster Operator 可将新配置部署到所有 Kafka Connect 节点。
某些选项具有默认值:
-
带有默认值
connect-cluster的group.id -
带有默认值
connect-cluster-offsets的offset.storage.topic -
config.storage.topicwith default valueconnect-cluster-configs -
status.storage.topicwith default valueconnect-cluster-status -
key.converterwith default valueorg.apache.kafka.connect.json.JsonConverter -
value.converterwith default valueorg.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
# ...
对于使用特定 加密套件 进行 TLS 版本的客户端连接,您可以配置允许的 ssl 属性。您还可以配置 ssl.endpoint.identification.algorithm 属性来启用或禁用主机名验证。
6.2.62.2. logging 复制链接链接已复制到粘贴板!
Kafka Connect 具有自己的可配置日志记录器:
-
connect.root.logger.level -
log4j.logger.org.reflections
根据运行的 Kafka Connect 插件,添加更多日志记录器。
使用 curl 请求从任何 Kafka 代理 pod 获取运行的所有 Kafka Connect loggers 的完整列表:
curl -s http://<connect-cluster-name>-connect-api:8083/admin/loggers/
Kafka Connect 使用 Apache log4j 日志记录器实现。
使用 logging 属性配置日志记录器和日志记录器级别。
您可以通过直接指定日志记录器和级别(在线)或使用自定义(外部) ConfigMap 来设置日志级别。如果使用 ConfigMap,您可以将 logging.valueFrom.configMapKeyRef.name 属性设置为包含外部日志记录配置的 ConfigMap 的名称。在 ConfigMap 中,使用 log4j.properties 描述了日志配置。logging.valueFrom.configMapKeyRef.name 和 logging.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"
# ...
外部日志记录
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
spec:
# ...
logging:
type: external
valueFrom:
configMapKeyRef:
name: customConfigMap
key: connect-logging.log4j
# ...
任何尚未配置的可用日志记录器的级别都设置为 OFF。
如果使用 Cluster Operator 部署 Kafka Connect,则会动态应用对 Kafka Connect 日志级别的更改。
如果您使用外部日志记录,在日志记录附加程序改变时会触发滚动更新。
垃圾收集器(GC)
也可以使用 jvmOptions 属性 启用(或禁用)垃圾收集器日志记录。
6.2.62.3. KafkaConnectSpec 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| version | Kafka Connect 版本。默认值为 3.4.0。请参阅用户文档以了解升级或降级版本所需的流程。 |
| 字符串 | |
| replicas | Kafka Connect 组中的 pod 数量。 |
| 整数 | |
| image | pod 的 docker 镜像。 |
| 字符串 | |
| bootstrapServers | 要连接的 Bootstrap 服务器。这应该以逗号分开的 < hostname> :_< port>_ 对列表形式提供。 |
| 字符串 | |
| tls | TLS 配置。 |
| 身份验证 |
Kafka Connect 的身份验证配置。这个类型取决于给定对象中的 |
|
| |
| config | Kafka Connect 配置。无法设置以下前缀的属性: ssl., sasl., security., listener, plugin.path, rest., bootstrap.servers, consumer.interceptor.classes, producer.interceptor.classes (除 ssl.endpoint.identification.algorithm, ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols)。 |
| map | |
| 资源 | CPU 和内存资源以及请求的初始资源的最大限制。如需更多信息,请参阅 core/v1 资源requirements 的外部文档。 |
| livenessProbe | Pod 存活度检查。 |
| readinessProbe | Pod 就绪度检查。 |
| jvmOptions | pod 的 JVM 选项。 |
| jmxOptions | JMX 选项. |
| logging |
Kafka Connect 的日志记录配置。类型取决于给定对象中的 |
| clientRackInitImage |
用于初始化 |
| 字符串 | |
| rack |
将用作 |
| tracing |
在 Kafka Connect 中配置追踪。类型取决于给定对象中的 |
| 模板 |
Kafka Connect 和 Kafka Mirror Maker 2 资源的模板。这个模板允许用户指定如何生成 |
| externalConfiguration | 将 Secret 或 ConfigMap 中的数据传递给 Kafka Connect pod,并使用它们配置连接器。 |
| build | 配置应如何构建 Connect 容器镜像。可选。 |
| metricsConfig |
指标配置.该类型取决于给定对象中的 |
6.2.63. ClientTls 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaBridgeSpec, KafkaConnectSpec, KafkaMirrorMaker2ClusterSpec, KafkaMirrorMakerConsumerSpec, KafkaMirrorMakerProducerSpec
配置用于连接到 KafkaConnect, KafkaBridge, KafkaMirror, KafkaMirrorMaker2 的 TLS 可信证书。
6.2.63.1. trustedCertificates 复制链接链接已复制到粘贴板!
6.2.63.2. client TLS 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| trustedCertificates | TLS 连接的可信证书。 |
6.2.64. KafkaClientAuthenticationTls 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaBridgeSpec, KafkaConnectSpec, KafkaMirrorMaker2ClusterSpec, KafkaMirrorMakerConsumerSpec, KafkaMirrorMakerProducerSpec
KafkaClientAuthenticationTls 模式属性的完整列表
要配置 mTLS 身份验证,请将 type 属性设置为 tls。mTLS 使用 TLS 证书进行身份验证。
6.2.64.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
mTLS 身份验证只能用于 TLS 连接。
mTLS 配置示例
authentication:
type: tls
certificateAndKey:
secretName: my-secret
certificate: my-public-tls-certificate-file.crt
key: private.key
6.2.64.2. KafkaClientAuthenticationTls 模式属性 复制链接链接已复制到粘贴板!
type 属性是一种差异性,它区分来自 KafkaClientAuthenticationScramSha256, KafkaClientAuthenticationScramSha512, KafkaClientAuthenticationPlain, KafkaClientAuthenticationOAuth 的 KafkaClientAuthenticationTls 类型。对于类型 KafkaClientAuthenticationTls,它需要是值 tls。
| 属性 | Description |
|---|---|
| certificateAndKey |
对存放证书和私钥对的 |
| type |
必须为 |
| 字符串 |
用于: KafkaBridgeSpec, KafkaConnectSpec, KafkaMirrorMaker2ClusterSpec, KafkaMirrorMakerConsumerSpec, KafkaMirrorMakerProducerSpec
KafkaClientAuthenticationScramSha256 schema 属性的完整列表
要配置基于 SASL 的 SCRAM-SHA-256 身份验证,请将 type 属性设置为 scram-sha-256。SCRAM-SHA-256 身份验证机制需要一个用户名和密码。
6.2.65.1. username 复制链接链接已复制到粘贴板!
在 username 属性中指定用户名。
6.2.65.2. passwordSecret 复制链接链接已复制到粘贴板!
在 passwordSecret 属性中,指定指向包含密码的 Secret 的链接。
您可以使用 User Operator 创建的 secret。
如果需要,您可以创建一个包含密码的文本文件,在明文中用于身份验证:
echo -n PASSWORD > MY-PASSWORD.txt
然后,您可以从文本文件创建一个 Secret,为密码设置您自己的字段名称(密钥):
oc create secret generic MY-CONNECT-SECRET-NAME --from-file=MY-PASSWORD-FIELD-NAME=./MY-PASSWORD.txt
Kafka Connect 的 SCRAM-SHA-256 客户端身份验证的 Secret 示例
apiVersion: v1
kind: Secret
metadata:
name: my-connect-secret-name
type: Opaque
data:
my-connect-password-field: LFTIyFRFlMmU2N2Tm
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
| 属性 | Description |
|---|---|
| passwordSecret |
对存放密码的 |
| type |
必须是 |
| 字符串 | |
| username | 用于身份验证的用户名。 |
| 字符串 |
6.2.66. PasswordSecretSource 架构参考 复制链接链接已复制到粘贴板!
用于: KafkaClientAuthenticationOAuth, KafkaClientAuthenticationPlain, KafkaClientAuthenticationScramSha256, KafkaClientAuthenticationScramSha512
| 属性 | Description |
|---|---|
| password | 存储密码的 Secret 中的密钥名称。 |
| 字符串 | |
| secretName | 包含密码的 Secret 名称。 |
| 字符串 |
6.2.67. KafkaClientAuthenticationScramSha512 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaBridgeSpec, KafkaConnectSpec, KafkaMirrorMaker2ClusterSpec, KafkaMirrorMakerConsumerSpec, KafkaMirrorMakerProducerSpec
KafkaClientAuthenticationScramSha512 模式属性的完整列表
要配置基于 SASL 的 SCRAM-SHA-512 身份验证,请将 type 属性设置为 scram-sha-512。SCRAM-SHA-512 身份验证机制需要一个用户名和密码。
6.2.67.1. username 复制链接链接已复制到粘贴板!
在 username 属性中指定用户名。
6.2.67.2. passwordSecret 复制链接链接已复制到粘贴板!
在 passwordSecret 属性中,指定指向包含密码的 Secret 的链接。
您可以使用 User Operator 创建的 secret。
如果需要,您可以创建一个包含密码的文本文件,在明文中用于身份验证:
echo -n PASSWORD > MY-PASSWORD.txt
然后,您可以从文本文件创建一个 Secret,为密码设置您自己的字段名称(密钥):
oc create secret generic MY-CONNECT-SECRET-NAME --from-file=MY-PASSWORD-FIELD-NAME=./MY-PASSWORD.txt
Kafka Connect 的 SCRAM-SHA-512 客户端身份验证的 Secret 示例
apiVersion: v1
kind: Secret
metadata:
name: my-connect-secret-name
type: Opaque
data:
my-connect-password-field: LFTIyFRFlMmU2N2Tm
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
| 属性 | Description |
|---|---|
| passwordSecret |
对存放密码的 |
| type |
必须为 |
| 字符串 | |
| username | 用于身份验证的用户名。 |
| 字符串 |
6.2.68. KafkaClientAuthenticationPlain 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaBridgeSpec, KafkaConnectSpec, KafkaMirrorMaker2ClusterSpec, KafkaMirrorMakerConsumerSpec, KafkaMirrorMakerProducerSpec
KafkaClientAuthenticationPlain 模式属性的完整列表
要配置基于 SASL 的 PLAIN 身份验证,请将 type 属性设置为 plain。SASL PLAIN 身份验证机制需要一个用户名和密码。
SASL PLAIN 机制将以明文的方式通过网络传输用户名和密码。如果启用了 TLS 加密,只有使用 SASL PLAIN 身份验证。
6.2.68.1. username 复制链接链接已复制到粘贴板!
在 username 属性中指定用户名。
6.2.68.2. passwordSecret 复制链接链接已复制到粘贴板!
在 passwordSecret 属性中,指定指向包含密码的 Secret 的链接。
您可以使用 User Operator 创建的 secret。
如果需要,在明文中创建一个包含密码的文本文件,用于身份验证:
echo -n PASSWORD > MY-PASSWORD.txt
然后,您可以从文本文件创建一个 Secret,为密码设置您自己的字段名称(密钥):
oc create secret generic MY-CONNECT-SECRET-NAME --from-file=MY-PASSWORD-FIELD-NAME=./MY-PASSWORD.txt
Kafka Connect 的 PLAIN 客户端身份验证的 Secret 示例
apiVersion: v1
kind: Secret
metadata:
name: my-connect-secret-name
type: Opaque
data:
my-password-field-name: LFTIyFRFlMmU2N2Tm
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
6.2.68.3. KafkaClientAuthenticationPlain 模式属性 复制链接链接已复制到粘贴板!
type 属性是一种差异性,用于区分来自 KafkaClientAuthenticationTls, KafkaClientAuthenticationScramSha256, KafkaClientAuthenticationScramSha512, KafkaClientAuthenticationOAuth 的 KafkaClientAuthenticationPlain 类型。对于类型 KafkaClientAuthenticationPlain,它需要是值 plain。
| 属性 | Description |
|---|---|
| passwordSecret |
对存放密码的 |
| type |
必须是 |
| 字符串 | |
| username | 用于身份验证的用户名。 |
| 字符串 |
6.2.69. KafkaClientAuthenticationOAuth 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaBridgeSpec, KafkaConnectSpec, KafkaMirrorMaker2ClusterSpec, KafkaMirrorMakerConsumerSpec, KafkaMirrorMakerProducerSpec
KafkaClientAuthenticationOAuth 模式属性的完整列表
要配置 OAuth 客户端身份验证,请将 type 属性设置为 oauth。
可以使用以下选项之一配置 OAuth 身份验证:
- 客户端 ID 和 secret
- 客户端 ID 和刷新令牌
- 访问令牌
- 用户名和密码
- TLS
客户端 ID 和 secret
您可以在 tokenEndpointUri 属性中配置您的授权服务器地址,以及身份验证中使用的客户端 ID 和客户端机密。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
如果需要,可以指定 scope 今儿 audience。
客户端 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
访问令牌
您可以配置用于直接与 Kafka 代理进行身份验证的访问令牌。在这种情况下,您没有指定 tokenEndpointUri。在 accessToken 属性中,指定指向包含访问令牌的 Secret 的链接。
仅使用访问令牌的 OAuth 客户端身份验证示例
authentication:
type: oauth
accessToken:
secretName: my-access-token-secret
key: access-token
用户名和密码
OAuth 用户名和密码配置使用 OAuth Resource Owner Password Grant 机制。这个机制已弃用,它只支持在无法使用客户端凭证(ID 和 secret)的环境中启用集成。如果您的访问管理系统不支持其他方法或用户帐户进行身份验证,您可能需要使用用户帐户。
典型的方法是在您的授权服务器中创建一个特殊的用户帐户来代表您的客户端应用。然后,您可以为帐户指定较长的生成密码和一组非常有限的权限。例如,帐户只能连接到您的 Kafka 集群,但不允许使用任何其他服务或登录到用户界面。
首先考虑使用刷新令牌机制。
您可以在 tokenEndpointUri 属性中配置您的授权服务器地址,以及客户端 ID、用户名和密码,以及身份验证中使用的密码。OAuth 客户端将连接到 OAuth 服务器,使用用户名、密码、客户端 ID 和(可选)进行身份验证,甚至客户端 secret 来获取它将用于与 Kafka 代理进行身份验证的访问令牌。
在 passwordSecret 属性中,指定指向包含密码的 Secret 的链接。
通常,您还必须使用公共 OAuth 客户端配置 clientId。如果使用机密 OAuth 客户端,还必须配置 clientSecret。
使用带有公共客户端的用户名和密码的 OAuth 客户端身份验证示例
authentication:
type: oauth
tokenEndpointUri: https://sso.myproject.svc:8443/auth/realms/internal/protocol/openid-connect/token
username: my-username
passwordSecret:
secretName: my-password-secret-name
password: my-password-field-name
clientId: my-public-client-id
使用带有机密客户端的用户名和密码的 OAuth 客户端身份验证示例
authentication:
type: oauth
tokenEndpointUri: https://sso.myproject.svc:8443/auth/realms/internal/protocol/openid-connect/token
username: my-username
passwordSecret:
secretName: my-password-secret-name
password: my-password-field-name
clientId: my-confidential-client-id
clientSecret:
secretName: my-confidential-client-oauth-secret
key: client-secret
如果需要,可以指定 scope 今儿 audience。
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
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
6.2.69.1. KafkaClientAuthenticationOAuth 模式属性 复制链接链接已复制到粘贴板!
type 属性是一个差异性程序,它区分来自 KafkaClientAuthenticationTls, KafkaClientAuthenticationScramSha256, KafkaClientAuthenticationScramSha512, KafkaClientAuthenticationPlain 的 KafkaClientAuthenticationOAuth 类型。对于类型 KafkaClientAuthenticationOAuth,它需要是值 oauth。
| 属性 | Description |
|---|---|
| accessToken | 包含从授权服务器获取的访问令牌的 OpenShift Secret 的链接。 |
| accessTokenIsJwt |
配置访问令牌是否应该被视为 JWT。如果授权服务器返回不透明令牌,则这应设为 |
| 布尔值 | |
| 受众 |
在向授权服务器进行身份验证时要使用的 OAuth 使用者。有些授权服务器需要明确设置 audience。可能的值取决于授权服务器的配置方式。默认情况下,在执行令牌端点请求时,不会指定 |
| 字符串 | |
| clientId | Kafka 客户端 ID 可用于针对 OAuth 服务器进行身份验证并使用令牌端点 URI。 |
| 字符串 | |
| clientSecret | 包含 Kafka 客户端 secret 的 OpenShift Secret 链接到 Kafka 客户端 secret,以针对 OAuth 服务器进行身份验证并使用令牌端点 URI。 |
| connectTimeoutSeconds | 连接到授权服务器时的连接超时(以秒为单位)。如果没有设置,则有效连接超时为 60 秒。 |
| 整数 | |
| disableTlsHostnameVerification |
启用或禁用 TLS 主机名验证。默认值为 |
| 布尔值 | |
| enableMetrics |
启用或禁用 OAuth 指标。默认值为 |
| 布尔值 | |
| httpRetries | 初始 HTTP 请求失败时尝试的最大重试次数。如果没有设置,则默认为不尝试任何重试。 |
| 整数 | |
| httpRetryPauseMs | 在重试失败的 HTTP 请求前需要暂停。如果没有设置,则默认为根本不暂停,而是立即重复请求。 |
| 整数 | |
| maxTokenExpirySeconds | 将访问令牌的生存时间设置为指定秒数。如果授权服务器返回不透明令牌,则应设置此设置。 |
| 整数 | |
| passwordSecret |
对存放密码的 |
| readTimeoutSeconds | 连接到授权服务器时的读取超时(以秒为单位)。如果没有设置,则有效读取超时为 60 秒。 |
| 整数 | |
| refreshToken | 包含 refresh 令牌的 OpenShift Secret 的链接,可用于从授权服务器获取访问令牌。 |
| scope |
在向授权服务器进行身份验证时要使用的 OAuth 范围。有些授权服务器需要设置此功能。可能的值取决于配置授权服务器的方式。在执行 |
| 字符串 | |
| tlsTrustedCertificates | TLS 连接到 OAuth 服务器的可信证书。 |
| tokenEndpointUri | 授权服务器令牌端点 URI。 |
| 字符串 | |
| type |
必须是 |
| 字符串 | |
| username | 用于身份验证的用户名。 |
| 字符串 |
6.2.70. JaegerTracing 模式参考 复制链接链接已复制到粘贴板!
类型 JaegerTracing 已被弃用。
用于: KafkaBridgeSpec, KafkaConnectSpec, KafkaMirrorMaker2Spec, KafkaMirrorMakerSpec
type 属性是一个差异性,用于区分来自 OpenTelemetryTracing 的 JaegerTracing 类型。对于类型 JaegerTracing,它需要是值 jaeger。
| 属性 | Description |
|---|---|
| type |
必须为 |
| 字符串 |
6.2.71. OpenTelemetryTracing 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaBridgeSpec, KafkaConnectSpec, KafkaMirrorMaker2Spec, KafkaMirrorMakerSpec
type 属性是一个差异性,用于区分来自 JaegerTracing 的 OpenTelemetryTracing 类型。对于类型 OpenTelemetryTracing,它需要值 opentelemetry。
| 属性 | Description |
|---|---|
| type |
必须为 |
| 字符串 |
6.2.72. KafkaConnectTemplate 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaConnectSpec, KafkaMirrorMaker2Spec
| 属性 | Description |
|---|---|
| 部署 |
Kafka Connect |
| podSet |
Kafka Connect |
| pod |
Kafka Connect |
| apiService |
Kafka Connect API |
| headlessService |
Kafka Connect headless |
| connectContainer | Kafka Connect 容器的模板。 |
| initContainer | Kafka init 容器的模板。 |
| podDisruptionBudget |
Kafka Connect |
| serviceAccount | Kafka Connect 服务帐户的模板。 |
| clusterRoleBinding | Kafka Connect ClusterRoleBinding 的模板。 |
| buildPod |
Kafka Connect Build |
| buildContainer | Kafka Connect Build 容器的模板。构建容器仅适用于 OpenShift。 |
| buildConfig | 用于构建新容器镜像的 Kafka Connect BuildConfig 模板。BuildConfig 仅在 OpenShift 中使用。 |
| buildServiceAccount | Kafka Connect Build 服务帐户的模板。 |
| jmxSecret | Kafka Connect Cluster JMX 身份验证的 Secret 模板。 |
6.2.73. BuildConfigTemplate 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| metadata |
应用到 |
| pullSecret | 带有用于拉取基础镜像的凭证的容器注册表 Secret。 |
| 字符串 |
6.2.74. ExternalConfiguration 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaConnectSpec, KafkaMirrorMaker2Spec
ExternalConfiguration 模式属性的完整列表
配置外部存储属性,以定义 Kafka 连接连接器的配置选项。
您可以将 ConfigMap 或 Secret 挂载到 Kafka Connect pod 中,作为环境变量或卷。卷和环境变量在 KafkaConnect.spec 的 externalConfiguration 属性中配置。
应用时,环境变量和卷可用于在开发连接器时使用。
6.2.74.1. env 复制链接链接已复制到粘贴板!
使用 env 属性指定一个或多个环境变量。这些变量可以包含来自 ConfigMap 或 Secret 的值。
包含环境变量的值的 Secret 示例
apiVersion: v1
kind: Secret
metadata:
name: aws-creds
type: Opaque
data:
awsAccessKey: QUtJQVhYWFhYWFhYWFhYWFg=
awsSecretAccessKey: Ylhsd1lYTnpkMjl5WkE=
用户定义的环境变量的名称不能以 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
挂载 Secret 的常见用例是让连接器与 Amazon AWS 通信。连接器需要能够读取 AWS_ACCESS_KEY_ID 和 AWS_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
6.2.74.2. 卷 复制链接链接已复制到粘贴板!
使用卷将 ConfigMap 或 Secret 挂载到 Kafka Connect pod。
在以下情况下,使用卷而不是环境变量很有用:
- 挂载用于配置 Kafka 连接连接器的属性文件
- 使用 TLS 证书挂载信任存储或密钥存储
卷在路径 /opt/kafka/external-configuration/ <volume-name > 上的 Kafka Connect 容器中挂载。例如,名为 connector-config 的卷中的文件将显示在 /opt/kafka/external-configuration/connector-config 目录中。
配置 providers 从配置外部加载值。使用供应商机制避免在 Kafka Connect REST 接口上传递受限信息。
-
FileConfigProvider从文件中的属性加载配置值。 -
DirectoryConfigProvider从目录结构中的单独文件加载配置值。
如果要添加多个供应商(包括自定义供应商),请使用逗号分隔的列表。您可以使用自定义供应商从其他文件位置加载值。
使用 FileConfigProvider 加载属性值
在本例中,名为 mysecret 的 Secret 包含指定数据库名称和密码的连接器属性:
带有数据库属性的 Secret 示例
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
stringData:
connector.properties: |-
dbUsername: my-username
dbPassword: my-password
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
config.providers.file.class: org.apache.kafka.common.config.provider.FileConfigProvider
#...
externalConfiguration:
volumes:
- name: connector-config
secret:
secretName: mysecret
Secret 中属性值的占位符在连接器配置中被引用。占位符结构是 file:PATH-AND-FILE-NAME:PROPERTY。FileConfigProvider 从连接程序配置中挂载的 Secret 读取并提取数据库的 username 和 password 属性值。
显示外部值占位符的连接器配置示例
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"
#...
使用 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:
ca.crt: <public_key> # Public key of the clients CA
user.crt: <user_certificate> # Public key of the user
user.key: <user_private_key> # Private key of the user
user.p12: <store> # PKCS #12 store for user certificates and keys
user.password: <password_for_store> # Protects the PKCS #12 store
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
#...
externalConfiguration:
volumes:
- name: cluster-ca
secret:
secretName: my-cluster-cluster-ca-cert
- name: my-user
secret:
secretName: my-user
- 1
DirectoryConfigProvider从目录中的文件提供值。参数使用config.providers的别名,格式为config.providers.${alias}.class。
凭证占位符在连接器配置中引用。占位符结构是 directory:PATH:FILE-NAME。DirectoryConfigProvider 在连接器配置中从挂载的 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}"
#...
6.2.74.3. externalConfiguration 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| env | 将 Kafka Connect pod 中的 Secret 或 ConfigMap 中的数据作为环境变量提供。 |
| 卷 | 将 Kafka Connect pod 中的 Secret 或 ConfigMap 中的数据作为卷提供。 |
6.2.75. ExternalConfigurationEnv 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| name |
将传递给 Kafka Connect pod 的环境变量名称。环境变量的名称不能以 |
| 字符串 | |
| valueFrom | 传递给 Kafka Connect pod 的环境变量的值。它可以作为 Secret 或 ConfigMap 字段的引用传递。该字段必须正好指定一个 Secret 或 ConfigMap。 |
6.2.76. ExternalConfigurationEnvVarSource 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| configMapKeyRef | 对 ConfigMap 中的密钥的引用。如需更多信息,请参阅 core/v1 configmapkeyselector 的外部文档。 |
| secretKeyRef | 对 Secret 中的密钥的引用。如需更多信息,请参阅 core/v1 secretkeyselector 的外部文档。 |
6.2.77. ExternalConfigurationVolumeSource 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| configMap | 对 ConfigMap 中的密钥的引用。必须指定一个 Secret 或 ConfigMap。如需更多信息,请参阅 core/v1 configmapvolumesource 的外部文档。 |
| name | 将添加到 Kafka Connect pod 的卷名称。 |
| 字符串 | |
| secret | 对 Secret 中的密钥的引用。必须指定一个 Secret 或 ConfigMap。如需更多信息,请参阅 core/v1 secretvolumesource 的外部文档。 |
6.2.78. Build 架构参考 复制链接链接已复制到粘贴板!
用于: KafkaConnectSpec
为 Kafka Connect 部署配置额外的连接器。
6.2.78.1. output 复制链接链接已复制到粘贴板!
要使用额外的连接器插件构建新容器镜像,AMQ Streams 需要容器 registry,镜像可以推送到、存储和从中拉取(pull)。AMQ Streams 不运行自己的容器 registry,因此必须提供 registry。AMQ Streams 支持私有容器 registry 以及公共 registry,如 Quay 或 Docker Hub。容器 registry 在 KafkaConnect 自定义资源的 .spec.build.output 部分中配置。输出 配置(必需)支持两种类型: docker 和 imagestream。
使用 Docker registry
要使用 Docker registry,您必须将 类型指定为 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。
output 配置示例
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: my-connect-cluster
spec:
#...
build:
output:
type: docker
image: my-registry.io/my-org/my-connect-cluster:latest
pushSecret: my-registry-credentials
#...
Using OpenShift ImageStream
您可以使用 OpenShift ImageStream 来存储新的容器镜像,而不是 Docker。在部署 Kafka 连接前,必须手动创建 ImageStream。要使用 ImageStream,请将 类型设置为 镜像流,并使用 image 属性指定 ImageStream 的名称和所用的标签。例如,my-connect-image-stream:latest。
output 配置示例
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: my-connect-cluster
spec:
#...
build:
output:
type: imagestream
image: my-connect-build:latest
#...
6.2.78.2. plugins 复制链接链接已复制到粘贴板!
连接器插件是一组文件,用于定义连接到某些类型的外部系统所需的实现。容器镜像所需的连接器插件必须使用 KafkaConnect 自定义资源的 .spec.build.plugins 属性进行配置。每个连接器插件必须具有在 Kafka Connect 部署中是唯一的名称。另外,还必须列出插件工件。这些工件由 AMQ Streams 下载,添加到新容器镜像中,并在 Kafka Connect 部署中使用。连接器插件工件也可以包含其他组件,如(de)序列化器。每个连接器插件下载到单独的目录中,以便正确 沙盒 化不同的连接器及其依赖项。每个插件必须配置至少一个 工件。
带有两个连接器插件的插件配置示例
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: my-connect-cluster
spec:
#...
build:
output:
#...
plugins:
- name: debezium-postgres-connector
artifacts:
- type: tgz
url: https://repo1.maven.org/maven2/io/debezium/debezium-connector-postgres/2.1.3.Final/debezium-connector-postgres-2.1.3.Final-plugin.tar.gz
sha512sum: c4ddc97846de561755dc0b021a62aba656098829c70eb3ade3b817ce06d852ca12ae50c0281cc791a5a131cb7fc21fb15f4b8ee76c6cae5dd07f9c11cb7c6e79
- name: camel-telegram
artifacts:
- type: tgz
url: https://repo.maven.apache.org/maven2/org/apache/camel/kafkaconnector/camel-telegram-kafka-connector/0.11.5/camel-telegram-kafka-connector-0.11.5-package.tar.gz
sha512sum: d6d9f45e0d1dbfcc9f6d1c7ca2046168c764389c78bc4b867dab32d24f710bb74ccf2a007d7d7a8af2dfca09d9a52ccbc2831fc715c195a3634cca055185bd91
#...
- 1
- (必需)连接器插件及其工件列表。
AMQ Streams 支持以下工件类型:
- JAR 文件,已下载并直接使用
- TGZ 归档,已下载和解包
- ZIP 存档,已下载和解包
- 使用 Maven 协调的 Maven 工件
- 其他已下载并直接使用的工件
AMQ Streams 不对下载的工件执行任何安全扫描。为安全起见,您应该先手动验证工件,并配置 checksum 验证,以确保在自动构建和 Kafka Connect 部署中使用相同的工件。
使用 JAR 工件
JAR 工件表示已下载并添加到容器镜像的 JAR 文件。要使用 JAR 工件,请将 type 属性设置为 jar,并使用 url 属性指定下载位置。
另外,您可以指定工件的 SHA-512 校验和。如果指定,AMQ Streams 会在构建新容器镜像时验证工件校验和。
JAR 工件示例
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: my-connect-cluster
spec:
#...
build:
output:
#...
plugins:
- name: my-plugin
artifacts:
- type: jar
url: https://my-domain.tld/my-jar.jar
sha512sum: 589...ab4
- type: jar
url: https://my-domain.tld/my-jar2.jar
#...
使用 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
url: https://my-domain.tld/my-connector-archive.tgz
sha512sum: 158...jg10
#...
使用 ZIP 工件
ZIP 工件用于下载 ZIP 压缩存档。使用 ZIP 工件的方式与上一节中 中描述的 TGZ 工件相同。您唯一区别是指定 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
repository: https://mvnrepository.com
group: org.apache.camel.kafkaconnector
artifact: camel-kafka-connector
version: 0.11.0
#...
使用其他 工件
其他 工件代表下载并添加到容器镜像中的任何类型的文件。如果要在生成的容器镜像中为工件使用特定名称,请使用 fileName 字段。如果没有指定文件名,则该文件基于 URL 哈希进行命名。
另外,您可以指定工件的 SHA-512 校验和。如果指定,AMQ Streams 会在构建新容器镜像时验证工件校验和。
other 工件示例
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: my-connect-cluster
spec:
#...
build:
output:
#...
plugins:
- name: my-plugin
artifacts:
- type: other
url: https://my-domain.tld/my-other-file.ext
sha512sum: 589...ab4
fileName: name-the-file.ext
#...
6.2.78.3. Build 架构属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| output |
配置应存储新构建的镜像的位置。必需。类型取决于给定对象中的 |
| 资源 | 为构建保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源requirements 的外部文档。 |
| plugins | 应该添加到 Kafka 连接中的连接器插件列表。必需。 |
|
|
6.2.79. DockerOutput 模式参考 复制链接链接已复制到粘贴板!
使用于: Build
type 属性是一种差异性,它区分 DockerOutput 与 ImageStreamOutput 的使用。对于类型 DockerOutput,它需要有值 docker。
| 属性 | Description |
|---|---|
| image |
用于标记和推送新构建的镜像的完整名称。例如 |
| 字符串 | |
| pushSecret | 带有用于推送新构建的镜像的凭证的 Container Registry Secret。 |
| 字符串 | |
| additionalKanikoOptions | 配置在构建新连接镜像时将传递给 Kaniko executor 的附加选项。允许的选项有:--customPlatform, --insecure, --insecure-pull, --insecure-registry, --log-format, --log-timestamp, --registry-mirror, --reproducible, --single-snapshot, --skip-tls-verify, --skip-tls-verify-pull, --skip-tls-verify-registry, --verbosity, --snapshotMode, --use-new-run.这些选项将仅在使用 Kaniko executor 的 OpenShift 中使用。OpenShift 中会忽略它们。这些选项在 Kaniko GitHub 存储库中描述。更改此字段不会触发 Kafka Connect 镜像的新构建。 |
| 字符串数组 | |
| type |
必须是 |
| 字符串 |
6.2.80. ImageStreamOutput 模式参考 复制链接链接已复制到粘贴板!
使用于: Build
type 属性是一种差异性,它区分使用 ImageStreamOutput 与 DockerOutput。类型 ImageStreamOutput 的值需要是 imagestream。
| 属性 | Description |
|---|---|
| image |
推送新构建镜像的 ImageStream 的名称和标签。例如 |
| 字符串 | |
| type |
必须是 |
| 字符串 |
6.2.81. Plugin 架构参考 复制链接链接已复制到粘贴板!
使用于: Build
| 属性 | Description |
|---|---|
| name |
连接器插件的唯一名称。将用于生成存储连接器工件的路径。该名称必须在 KafkaConnect 资源中唯一。名称必须遵循以下模式: |
| 字符串 | |
| 工件(artifact) | 属于此连接器插件的工件列表。必需。 |
|
|
6.2.82. JarArtifact 模式参考 复制链接链接已复制到粘贴板!
使用于:Plugin
| 属性 | Description |
|---|---|
| url |
将要下载的工件的 URL。AMQ Streams 不对下载的工件进行任何安全扫描。为安全起见,您应该先手动验证工件并配置 checksum 验证,以确保自动构建中使用相同的工件。需要 |
| 字符串 | |
| sha512sum |
工件的 SHA512 校验和。可选。如果指定,则在构建新容器时验证 checksum。如果没有指定,则不会验证下载的工件。不适用于 |
| 字符串 | |
| insecure |
默认情况下,验证使用 TLS 的连接,以检查它们是否安全。使用的服务器证书必须是有效、可信且包含服务器名称。通过将这个选项设置为 |
| 布尔值 | |
| type |
必须是 |
| 字符串 |
6.2.83. TgzArtifact 模式参考 复制链接链接已复制到粘贴板!
使用于:Plugin
| 属性 | Description |
|---|---|
| url |
将要下载的工件的 URL。AMQ Streams 不对下载的工件进行任何安全扫描。为安全起见,您应该先手动验证工件并配置 checksum 验证,以确保自动构建中使用相同的工件。需要 |
| 字符串 | |
| sha512sum |
工件的 SHA512 校验和。可选。如果指定,则在构建新容器时验证 checksum。如果没有指定,则不会验证下载的工件。不适用于 |
| 字符串 | |
| insecure |
默认情况下,验证使用 TLS 的连接,以检查它们是否安全。使用的服务器证书必须是有效、可信且包含服务器名称。通过将这个选项设置为 |
| 布尔值 | |
| type |
必须为 |
| 字符串 |
6.2.84. ZipArtifact 模式参考 复制链接链接已复制到粘贴板!
使用于:Plugin
| 属性 | Description |
|---|---|
| url |
将要下载的工件的 URL。AMQ Streams 不对下载的工件进行任何安全扫描。为安全起见,您应该先手动验证工件并配置 checksum 验证,以确保自动构建中使用相同的工件。需要 |
| 字符串 | |
| sha512sum |
工件的 SHA512 校验和。可选。如果指定,则在构建新容器时验证 checksum。如果没有指定,则不会验证下载的工件。不适用于 |
| 字符串 | |
| insecure |
默认情况下,验证使用 TLS 的连接,以检查它们是否安全。使用的服务器证书必须是有效、可信且包含服务器名称。通过将这个选项设置为 |
| 布尔值 | |
| type |
必须为 |
| 字符串 |
6.2.85. MavenArtifact 模式参考 复制链接链接已复制到粘贴板!
使用于:Plugin
type 属性是一个辨别器,可以区分来自 JarArtifact, TgzArtifact, ZipArtifact, OtherArtifact 的 MavenArtifact 类型的使用。类型 MavenArtifact 的值需要是 maven。
| 属性 | Description |
|---|---|
| 软件仓库 |
从中下载工件的 Maven 存储库。仅适用于 |
| 字符串 | |
| group |
Maven 组 ID.仅适用于 |
| 字符串 | |
| 工件 |
Maven 工件 ID。仅适用于 |
| 字符串 | |
| version |
Maven 版本号。仅适用于 |
| 字符串 | |
| type |
必须为 |
| 字符串 |
6.2.86. OtherArtifact 模式参考 复制链接链接已复制到粘贴板!
使用于:Plugin
| 属性 | Description |
|---|---|
| url |
将要下载的工件的 URL。AMQ Streams 不对下载的工件进行任何安全扫描。为安全起见,您应该先手动验证工件并配置 checksum 验证,以确保自动构建中使用相同的工件。需要 |
| 字符串 | |
| sha512sum |
工件的 SHA512 校验和。可选。如果指定,则在构建新容器时验证 checksum。如果没有指定,则不会验证下载的工件。不适用于 |
| 字符串 | |
| fileName | 构件将存储在的名称下。 |
| 字符串 | |
| insecure |
默认情况下,验证使用 TLS 的连接,以检查它们是否安全。使用的服务器证书必须是有效、可信且包含服务器名称。通过将这个选项设置为 |
| 布尔值 | |
| type |
必须是 |
| 字符串 |
6.2.87. KafkaConnectStatus schema 参考 复制链接链接已复制到粘贴板!
用于: KafkaConnect
| 属性 | Description |
|---|---|
| conditions | 状态条件列表。 |
|
| |
| observedGeneration | Operator 最后协调的 CRD 的生成。 |
| 整数 | |
| url | 管理和监控 Kafka 连接连接器的 REST API 端点的 URL。 |
| 字符串 | |
| connectorPlugins | 此 Kafka Connect 部署中可用的连接器插件列表。 |
| labelSelector | 提供此资源的 pod 的标签选择器。 |
| 字符串 | |
| replicas | 当前用于提供此资源的 pod 数量。 |
| 整数 |
6.2.88. ConnectorPlugin 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaConnectStatus, KafkaMirrorMaker2Status
| 属性 | Description |
|---|---|
| type |
连接器插件的类型。可用的类型是 |
| 字符串 | |
| version | 连接器插件的版本。 |
| 字符串 | |
| 类 | 连接器插件的类。 |
| 字符串 |
6.2.89. KafkaTopic 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| spec | 主题的规格。 |
| status | 主题的状态。 |
6.2.90. KafkaTopicSpec 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaTopic
| 属性 | Description |
|---|---|
| 分区 |
主题应具有的分区数目。这不能在创建主题后减少。它可以在创建主题后增加,但务必要了解具有语义分区的主题,特别是对于带有语义分区的主题。如果不存在,则默认使用 |
| 整数 | |
| replicas |
主题应具有的副本数。如果没有此项,则将默认为 |
| 整数 | |
| config | 主题配置。 |
| map | |
| topicName | 主题的名称。如果没有此操作,将默认为主题的 metadata.name。除非主题名称不是有效的 OpenShift 资源名称,否则不建议设置此设置。 |
| 字符串 |
6.2.91. KafkaTopicStatus 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaTopic
| 属性 | Description |
|---|---|
| conditions | 状态条件列表。 |
|
| |
| observedGeneration | Operator 最后协调的 CRD 的生成。 |
| 整数 | |
| topicName | 主题名称。 |
| 字符串 |
6.2.92. KafkaUser 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| spec | 用户的规格。 |
| status | Kafka 用户的状态。 |
6.2.93. KafkaUserSpec 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaUser
| 属性 | Description |
|---|---|
| 身份验证 |
为此 Kafka 用户启用的身份验证机制。支持的验证机制有
身份验证是可选的。如果没有配置身份验证,则不会生成凭证。为用户设置的 ACL 和配额采用 < |
|
| |
| 授权 |
此 Kafka 用户的授权规则。类型取决于给定对象中的 |
| 配额 | 控制客户端使用的代理资源的请求的配额。可以强制执行网络带宽和请求率配额。Kafka 用户配额的文档可在 http://kafka.apache.org/documentation/#design_quotas 中找到。 |
| 模板 |
模板来指定 Kafka 用户 |
6.2.94. KafkaUserTlsClientAuthentication 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaUserSpec
type 属性是一种差异性,用于区分来自 KafkaUserTlsExternalClientAuthentication, KafkaUserScramSha512ClientAuthentication 的 KafkaUserTlsClientAuthentication 类型。对于类型 KafkaUserTlsClientAuthentication,它需要是值 tls。
| 属性 | Description |
|---|---|
| type |
必须为 |
| 字符串 |
6.2.95. KafkaUserTlsExternalClientAuthentication 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaUserSpec
type 属性是一个辨别器,可以区分来自 KafkaUserTlsClientAuthentication, KafkaUserScramSha512ClientAuthentication 的 KafkaUserTlsExternalClientAuthentication 类型的使用。对于类型 KafkaUserTlsExternalClientAuthentication,它需要是值 tls-external。
| 属性 | Description |
|---|---|
| type |
必须为 |
| 字符串 |
用于: KafkaUserSpec
type 属性是一种差异性,用于区分来自 KafkaUserTlsClientAuthentication, KafkaUserTlsExternalClientAuthentication 的 KafkaUserScramSha512ClientAuthentication 类型。对于类型 KafkaUserScramSha512ClientAuthentication,它需要值 scram-sha-512。
| 属性 | Description |
|---|---|
| password | 指定用户的密码。如果没有设置,则 User Operator 会生成新密码。 |
| type |
必须为 |
| 字符串 |
6.2.97. Password 架构参考 复制链接链接已复制到粘贴板!
用于: KafkaUserScramSha512ClientAuthentication
| 属性 | Description |
|---|---|
| valueFrom | 应该从中读取密码的机密。 |
6.2.98. PasswordSource 模式参考 复制链接链接已复制到粘贴板!
用于: 密码
| 属性 | Description |
|---|---|
| secretKeyRef | 在资源命名空间中选择 Secret 的键。如需更多信息,请参阅 core/v1 secretkeyselector 的外部文档。 |
6.2.99. KafkaUserAuthorizationSimple 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaUserSpec
type 属性是一种差异性,它区分使用 KafkaUserAuthorizationSimple 类型,它们可能会在以后添加。对于类型 KafkaUserAuthorizationSimple,它需要有值 simple。
| 属性 | Description |
|---|---|
| type |
必须 |
| 字符串 | |
| ACL | 应应用于此用户的 ACL 规则列表。 |
|
|
6.2.100. AclRule 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaUserAuthorizationSimple
当代理使用 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
operations:
- Read
- Describe
- resource:
type: group
name: my-group
patternType: prefix
operations:
- Read
6.2.100.1. resource 复制链接链接已复制到粘贴板!
使用 resource 属性指定规则应用到的资源。
简单授权支持四个资源类型,这些类型在 type 属性中指定:
-
主题(
主题) -
消费者组 (
group) -
集群(
集群) -
事务 ID (
事务 ID)
对于 Topic、Group 和 Transactional ID 资源,您可以指定规则在 name 属性中应用到的资源名称。
集群类型资源没有名称。
名称使用 patternType 属性指定为一个 literal 或 prefix。
-
字面名称按照在
name字段中指定的名称完全相同。 -
前缀名称使用
name值作为前缀,然后将规则应用到以该值开头的所有名称的资源。
当 patternType 设置为literal 时,您可以将 name 设置为 * 以表示规则适用于所有资源。
允许用户读取来自所有主题消息的 ACL 规则示例
acls:
- resource:
type: topic
name: "*"
patternType: literal
operations:
- Read
6.2.100.2. type 复制链接链接已复制到粘贴板!
规则类型,用于允许或拒绝某个操作。
type 字段是可选的。如果未指定 type,则 ACL 规则将被视为 允许规则。
6.2.100.3. 操作 复制链接链接已复制到粘贴板!
为规则指定一组 operations 来允许或拒绝。
支持以下操作:
- 读
- 写
- 删除
- 改变
- Describe
- All
- IdempotentWrite
- ClusterAction
- 创建
- AlterConfigs
- DescribeConfigs
只有某些操作可用于每个资源。
有关 AclAuthorizer、ACL 和支持的资源和操作组合的详情,请参阅 授权和 ACL。
6.2.100.4. 主机 复制链接链接已复制到粘贴板!
使用 host 属性指定允许或拒绝规则的远程主机。
使用星号(*)来允许或拒绝来自所有主机的操作。host 字段是可选的。如果未指定 主机,则默认使用 * 值。
6.2.100.5. AclRule 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| 主机 | 允许或拒绝 ACL 规则中描述的操作的主机。 |
| 字符串 | |
| operation |
|
| 字符串([Read, Write, Delete, Alter, Describe, All, IdempotentWrite, ClusterAction, Create, AlterConfigs, DescribeConfigs]) | |
| 操作 | 允许或拒绝的操作列表。支持的操作有: Read, Write, Create, Delete, Alter, Describe, ClusterAction, AlterConfigs, DescribeConfigs, IdempotentWrite 和 All。 |
| 字符串(一个或更多 [Read, Write, Delete, Alter, Describe, All, IdempotentWrite, ClusterAction, Create, AlterConfigs, DescribeConfigs])数组 | |
| resource |
表示所应用给定 ACL 规则的资源。该类型取决于给定对象中的 |
|
| |
| type |
规则的类型。目前唯一支持的类型是 |
| 字符串([allow, deny] 之一) |
6.2.101. AclRuleTopicResource 模式参考 复制链接链接已复制到粘贴板!
用于 AclRule
type 属性是一个辨别器,可以区分来自 AclRuleGroupResource, AclRuleClusterResource, AclRuleTransactionalIdResource 的 AclRuleTopicResource 类型的使用。对于类型 AclRuleTopicResource,它需要有值 主题。
| 属性 | Description |
|---|---|
| type |
必须是 |
| 字符串 | |
| name |
应用的 ACL 规则要应用到的资源名称。可以与 |
| 字符串 | |
| patternType |
描述 resource 字段中使用的模式。支持的类型是 |
| 字符串(一个 [prefix, literal]) |
6.2.102. AclRuleGroupResource 模式参考 复制链接链接已复制到粘贴板!
用于 AclRule
type 属性是一种差异性,它区分使用 AclRuleGroupResource 类型,来自于 AclRuleTopicResource、AclRuleClusterResource、AclRuleTransactionalIdResource。对于类型 AclRuleGroupResource,它需要是值 group。
| 属性 | Description |
|---|---|
| type |
必须为 |
| 字符串 | |
| name |
应用的 ACL 规则要应用到的资源名称。可以与 |
| 字符串 | |
| patternType |
描述 resource 字段中使用的模式。支持的类型是 |
| 字符串(一个 [prefix, literal]) |
6.2.103. AclRuleClusterResource 模式参考 复制链接链接已复制到粘贴板!
用于 AclRule
type 属性是一种差异性,它区分使用 AclRuleClusterResource 类型,来自于 AclRuleTopicResource、AclRuleGroupResource、AclRuleTransactionalIdResource。对于类型 AclRuleClusterResource,它需要值 cluster。
| 属性 | Description |
|---|---|
| type |
必须是 |
| 字符串 |
6.2.104. AclRuleTransactionalIdResource 模式参考 复制链接链接已复制到粘贴板!
用于 AclRule
type 属性是一个辨别器,可以区分来自 AclRuleTopicResource, AclRuleGroupResource, AclRuleClusterResource 的 AclRuleTransactionalIdResource 类型的使用。对于类型 AclRuleTransactionalIdResource,它必须是值 transactionalId。
| 属性 | Description |
|---|---|
| type |
必须是 |
| 字符串 | |
| name |
应用的 ACL 规则要应用到的资源名称。可以与 |
| 字符串 | |
| patternType |
描述 resource 字段中使用的模式。支持的类型是 |
| 字符串(一个 [prefix, literal]) |
6.2.105. KafkaUserQuotas 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaUserSpec
Kafka 允许用户 设置配额 来控制客户端使用资源。
6.2.105.1. quotas 复制链接链接已复制到粘贴板!
您可以将客户端配置为使用以下类型的配额:
- 网络使用 配额为每个共享配额的客户端组指定字节速率阈值。
- CPU 使用率配额为来自客户端的代理请求指定一个窗口。该窗口是客户端发出请求的时间百分比。客户端对代理的 I/O 线程和网络线程发出请求。
- 分区修改配额 限制了允许每秒进行哪些客户端的分区数量。
分区修改配额可防止 Kafka 集群被并发主题操作造成问题。对以下用户请求进行分区修改:
- 为新主题创建分区
- 将分区添加到现有主题中
- 从主题中删除分区
您可以配置分区修改配额来控制用户请求接受的速率。
在很多情况下,对 Kafka 客户端使用配额可能会很有用。考虑配置了错误的 Kafka producer,它以太高的速度发送请求。这种错误配置可能会导致拒绝服务到其他客户端,因此有问题的客户端被禁止。通过使用网络限制配额,可以防止这种情况会对其他客户端产生重大影响。
AMQ Streams 支持用户级配额,但不支持客户端级别配额。
Kafka 用户配额配置示例
spec:
quotas:
producerByteRate: 1048576
consumerByteRate: 2097152
requestPercentage: 55
controllerMutationRate: 10
有关 Kafka 用户配额的更多信息,请参阅 Apache Kafka 文档。
6.2.105.2. KafkaUserQuotas 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| consumerByteRate | 在组中的客户端节流前,每个客户端组可以从代理获取最大字节数的配额。基于每个代理定义。 |
| 整数 | |
| controllerMutationRate | 有关创建主题请求接受修改的速率的配额,创建分区请求和删除主题请求。速率由创建或删除的分区数量计算。 |
| number | |
| producerByteRate | 在组中的客户端节流前,每个客户端组可发布最大字节数的配额(以秒为单位)。基于每个代理定义。 |
| 整数 | |
| requestPercentage | 每个客户端组的最大 CPU 利用率配额,作为网络和 I/O 线程的百分比。 |
| 整数 |
6.2.106. KafkaUserTemplate 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaUserSpec
为 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
# ...
6.2.106.1. KafkaUserTemplate 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| secret |
KafkaUser 资源的模板。该模板允许用户指定如何使用密码或 TLS 证书生成 |
6.2.107. KafkaUserStatus 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaUser
| 属性 | Description |
|---|---|
| conditions | 状态条件列表。 |
|
| |
| observedGeneration | Operator 最后协调的 CRD 的生成。 |
| 整数 | |
| username | 用户名。 |
| 字符串 | |
| secret |
存储凭证的 |
| 字符串 |
6.2.108. KafkaMirrorMaker 模式参考 复制链接链接已复制到粘贴板!
类型 KafkaMirrorMaker 已被弃用。请使用 KafkaMirrorMaker2。
| 属性 | Description |
|---|---|
| spec | Kafka MirrorMaker 的规格。 |
| status | Kafka MirrorMaker 的状态。 |
6.2.109. KafkaMirrorMakerSpec 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaMirrorMaker
KafkaMirrorMakerSpec 模式属性的完整列表
配置 Kafka MirrorMaker。
6.2.109.1. Include 复制链接链接已复制到粘贴板!
使用 include 属性配置 Kafka MirrorMaker 从源镜像到目标 Kafka 集群的主题列表。
属性允许使用单个主题名称到复杂模式,从最简单的情况下进行任何正则表达式。例如,您可以使用 A|B 或使用 * 的所有主题来镜像主题 A 和 B。您还可以将用逗号分开的多个正则表达式传递给 Kafka MirrorMaker。
使用 KafkaMirrorMakerConsumerSpec 和 KafkaMirrorMakerProducerSpec 配置源(使用者)和目标(生成器)集群。
Kafka MirrorMaker 总是与两个 Kafka 集群(源和目标集群)一起工作。要建立连接,源的 bootstrap 服务器和目标 Kafka 集群被指定为用逗号分开的 HOSTNAME:PORT 对列表。每个以逗号分隔的列表包含一个或多个 Kafka 代理,或一个 Kafka 代理指定的 Service 分区作为 HOSTNAME:PORT 对。
6.2.109.3. logging 复制链接链接已复制到粘贴板!
Kafka MirrorMaker 具有自己的可配置日志记录器:
-
mirrormaker.root.logger
MirrorMaker 使用 Apache log4j 日志记录器实现。
使用 logging 属性配置日志记录器和日志记录器级别。
您可以通过直接指定日志记录器和级别(在线)或使用自定义(外部) ConfigMap 来设置日志级别。如果使用 ConfigMap,您可以将 logging.valueFrom.configMapKeyRef.name 属性设置为包含外部日志记录配置的 ConfigMap 的名称。在 ConfigMap 中,使用 log4j.properties 描述了日志配置。logging.valueFrom.configMapKeyRef.name 和 logging.valueFrom.configMapKeyRef.key 属性都是强制的。当 Cluster Operator 运行时,使用指定的准确日志配置创建 ConfigMap,然后在每个协调后重新创建。如果没有指定自定义 ConfigMap,则使用默认日志设置。如果没有设置特定的日志记录器值,则会继承该日志记录器的上级日志记录器设置。有关日志级别的更多信息,请参阅 Apache 日志记录服务。
此处会看到 内联 和 外部日志记录 的示例:
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker
spec:
# ...
logging:
type: inline
loggers:
mirrormaker.root.logger: "INFO"
# ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker
spec:
# ...
logging:
type: external
valueFrom:
configMapKeyRef:
name: customConfigMap
key: mirror-maker-log4j.properties
# ...
垃圾收集器(GC)
也可以使用 jvmOptions 属性 启用(或禁用)垃圾收集器日志记录。
6.2.109.4. KafkaMirrorMakerSpec 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| version | Kafka MirrorMaker 版本。默认值为 3.4.0。请参考相关文档以了解升级或降级版本所需的流程。 |
| 字符串 | |
| replicas |
|
| 整数 | |
| image | pod 的 docker 镜像。 |
| 字符串 | |
| 消费者 | 配置源集群。 |
| producer | 目标集群的配置。 |
| 资源 | 要保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源requirements 的外部文档。 |
| whitelist |
|
| 字符串 | |
| Include |
包含镜像的主题列表。此选项允许使用 Java 样式的正则表达式的任何正则表达式。使用表达式 |
| 字符串 | |
| jvmOptions | pod 的 JVM 选项。 |
| logging |
MirrorMaker 的日志记录配置。类型取决于给定对象中的 |
| metricsConfig |
指标配置.该类型取决于给定对象中的 |
| tracing |
Kafka MirrorMaker 中的追踪配置。类型取决于给定对象中的 |
| 模板 |
模板,用于指定 Kafka MirrorMaker 资源、 |
| livenessProbe | Pod 存活度检查。 |
| readinessProbe | Pod 就绪度检查。 |
6.2.110. KafkaMirrorMakerConsumerSpec 模式参考 复制链接链接已复制到粘贴板!
KafkaMirrorMakerConsumerSpec 模式属性的完整列表
配置 MirrorMaker 使用者。
6.2.110.1. numStreams 复制链接链接已复制到粘贴板!
使用 consumer.numStreams 属性配置消费者的流数量。
您可以通过增加消费者线程数量来提高镜像主题的吞吐量。使用者线程属于为 Kafka MirrorMaker 指定的使用者组。主题分区在消费者线程间分配,后者会并行使用消息。
6.2.110.2. offsetCommitInterval 复制链接链接已复制到粘贴板!
使用 consumer.offsetCommitInterval 属性为使用者配置偏移 auto-commit 间隔。
您可以指定 Kafka MirrorMaker 从源 Kafka 集群消耗数据后提交偏移的定期时间间隔。时间间隔以毫秒为单位设置,默认值为 60,000。
6.2.110.3. config 复制链接链接已复制到粘贴板!
使用 consumer.config 属性为消费者配置 Kafka 选项。
config 属性包含 Kafka MirrorMaker 使用者配置选项作为键,并在以下 JSON 类型之一中设置值:
- 字符串
- Number
- 布尔值
对于使用特定 加密套件 进行 TLS 版本的客户端连接,您可以配置允许的 ssl 属性。您还可以配置 ssl.endpoint.identification.algorithm 属性来启用或禁用主机名验证。
例外
您可以为消费者指定并配置 Apache Kafka 配置文档 中列出的选项。
但是,AMQ Streams 会自动配置和管理与以下相关的选项有例外:
- Kafka 集群 bootstrap 地址
- 安全(加密、身份验证和授权)
- 消费者组标识符
- 拦截器
具体来说,所有与以下字符串之一相等或开始的配置选项都会被禁止:
-
bootstrap.servers -
group.id -
interceptor.classes -
ssl.(不包括具体的例外) -
sasl。 -
安全性。
当 config 属性中存在 forbidden 选项时,它会被忽略,并将警告信息输出到 Cluster Operator 日志文件。所有其他选项都传递到 Kafka MirrorMaker。
Cluster Operator 不会验证提供的 config 对象中的键或值。当提供无效的配置时,Kafka MirrorMaker 可能无法启动,也可能不稳定。在这种情况下,KafkaMirrorMaker.spec.consumer.config 对象中的配置应该已被修复,Cluster Operator 将推出 Kafka MirrorMaker 的新配置。
6.2.110.4. groupId 复制链接链接已复制到粘贴板!
使用 consumer.groupId 属性为使用者配置消费者组标识符。
Kafka MirrorMaker 使用 Kafka 使用者来消耗信息,的行为与任何其他 Kafka 使用者客户端一样。从源 Kafka 集群使用的消息被镜像到目标 Kafka 集群。需要组标识符,因为消费者需要是分配分区的消费者组的一部分。
6.2.110.5. KafkaMirrorMakerConsumerSpec 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| numStreams | 指定要创建的消费者流线程数量。 |
| 整数 | |
| offsetCommitInterval | 以 ms 为单位的偏移自动提交间隔。默认值为 60000。 |
| 整数 | |
| bootstrapServers | 用于建立到 Kafka 集群初始连接的 host:port 对列表。 |
| 字符串 | |
| groupId | 标识此消费者所属的消费者组的唯一字符串。 |
| 字符串 | |
| 身份验证 |
用于连接到集群的身份验证配置。这个类型取决于给定对象中的 |
|
| |
| 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 配置。 |
6.2.111. KafkaMirrorMakerProducerSpec 模式参考 复制链接链接已复制到粘贴板!
KafkaMirrorMakerProducerSpec 模式属性的完整列表
配置 MirrorMaker producer。
6.2.111.1. abortOnSendFailure 复制链接链接已复制到粘贴板!
使用 producer.abortOnSendFailure 属性来配置如何处理来自制作者的消息发送失败。
默认情况下,如果在从 Kafka MirrorMaker 向 Kafka 集群发送消息时发生错误:
- Kafka MirrorMaker 容器在 OpenShift 中终止。
- 然后重新创建容器。
如果 abortOnSendFailure 选项设置为 false,则忽略消息发送错误。
6.2.111.2. config 复制链接链接已复制到粘贴板!
使用 producer.config 属性为制作者配置 Kafka 选项。
config 属性包含 Kafka MirrorMaker producer 配置选项作为键,其值在以下 JSON 类型之一中设置:
- 字符串
- Number
- 布尔值
对于使用特定 加密套件 进行 TLS 版本的客户端连接,您可以配置允许的 ssl 属性。您还可以配置 ssl.endpoint.identification.algorithm 属性来启用或禁用主机名验证。
例外
您可以指定并配置 Apache Kafka 配置文档中列出的制作者 选项。
但是,AMQ Streams 会自动配置和管理与以下相关的选项有例外:
- Kafka 集群 bootstrap 地址
- 安全(加密、身份验证和授权)
- 拦截器
具体来说,所有与以下字符串之一相等或开始的配置选项都会被禁止:
-
bootstrap.servers -
interceptor.classes -
ssl.(不包括具体的例外) -
sasl。 -
安全性。
当 config 属性中存在 forbidden 选项时,它会被忽略,并将警告信息输出到 Cluster Operator 日志文件。所有其他选项都传递到 Kafka MirrorMaker。
Cluster Operator 不会验证提供的 config 对象中的键或值。当提供无效的配置时,Kafka MirrorMaker 可能无法启动,也可能不稳定。在这种情况下,KafkaMirrorMaker.spec.producer.config 对象中的配置应该已被修复,Cluster Operator 将推出 Kafka MirrorMaker 的新配置。
6.2.111.3. KafkaMirrorMakerProducerSpec 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| bootstrapServers | 用于建立到 Kafka 集群初始连接的 host:port 对列表。 |
| 字符串 | |
| abortOnSendFailure |
标志,将 MirrorMaker 设置为在失败的发送时退出。默认值为 |
| 布尔值 | |
| 身份验证 |
用于连接到集群的身份验证配置。这个类型取决于给定对象中的 |
|
| |
| 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 配置。 |
6.2.112. KafkaMirrorMakerTemplate 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| 部署 |
Kafka MirrorMaker |
| pod |
Kafka MirrorMaker |
| podDisruptionBudget |
Kafka MirrorMaker |
| mirrorMakerContainer | Kafka MirrorMaker 容器的模板。 |
| serviceAccount | Kafka MirrorMaker 服务帐户的模板。 |
6.2.113. KafkaMirrorMakerStatus 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaMirrorMaker
| 属性 | Description |
|---|---|
| conditions | 状态条件列表。 |
|
| |
| observedGeneration | Operator 最后协调的 CRD 的生成。 |
| 整数 | |
| labelSelector | 提供此资源的 pod 的标签选择器。 |
| 字符串 | |
| replicas | 当前用于提供此资源的 pod 数量。 |
| 整数 |
6.2.114. KafkaBridge 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| spec | Kafka Bridge 的规格。 |
| status | Kafka Bridge 的状态。 |
6.2.115. KafkaBridgeSpec 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaBridge
配置 Kafka Bridge 集群。
配置选项与以下内容相关:
- Kafka 集群 bootstrap 地址
- 安全性(加密、认证和授权)
- 消费者配置
- 制作者配置
- HTTP 配置
6.2.115.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
Kafka Bridge 使用 Apache log4j2 日志记录器实现。日志记录器在 log4j2.properties 文件中定义,该文件对 healthy 和 ready 端点有以下默认配置:
logger.healthy.name = http.openapi.operation.healthy
logger.healthy.level = WARN
logger.ready.name = http.openapi.operation.ready
logger.ready.level = WARN
所有其他操作的日志级别默认设置为 INFO。
使用 logging 属性配置日志记录器和日志记录器级别。
您可以通过直接指定日志记录器和级别(在线)或使用自定义(外部) ConfigMap 来设置日志级别。如果使用 ConfigMap,您可以将 logging.valueFrom.configMapKeyRef.name 属性设置为包含外部日志记录配置的 ConfigMap 的名称。logging.valueFrom.configMapKeyRef.name 和 logging.valueFrom.configMapKeyRef.key 属性是必需的。如果没有设置 name 或 key,则会使用默认日志记录。在 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"
# ...
外部日志记录
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
spec:
# ...
logging:
type: external
valueFrom:
configMapKeyRef:
name: customConfigMap
key: bridge-logj42.properties
# ...
任何尚未配置的可用日志记录器的级别都设置为 OFF。
如果 Kafka Bridge 是使用 Cluster Operator 部署,则会动态应用对 Kafka Bridge 日志记录级别的更改。
如果您使用外部日志记录,在日志记录附加程序改变时会触发滚动更新。
垃圾收集器(GC)
也可以使用 jvmOptions 属性 启用(或禁用)垃圾收集器日志记录。
6.2.115.2. KafkaBridgeSpec 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| replicas |
|
| 整数 | |
| image | pod 的 docker 镜像。 |
| 字符串 | |
| bootstrapServers | 用于建立到 Kafka 集群初始连接的 host:port 对列表。 |
| 字符串 | |
| tls | 将 Kafka Bridge 连接到集群的 TLS 配置。 |
| 身份验证 |
用于连接到集群的身份验证配置。这个类型取决于给定对象中的 |
|
| |
| http | 与 HTTP 相关的配置。 |
| adminClient | 与 Kafka AdminClient 相关的配置。 |
| 消费者 | 与 Kafka 使用者相关的配置。 |
| producer | 与 Kafka producer 相关的配置。 |
| 资源 | 要保留的 CPU 和内存资源。如需更多信息,请参阅 core/v1 资源requirements 的外部文档。 |
| jvmOptions | 对于 pod,目前不支持 JVM 选项。 |
| logging |
Kafka Bridge 的日志记录配置。类型取决于给定对象中的 |
| clientRackInitImage |
用于初始化 |
| 字符串 | |
| rack | 配置用作 client.rack 消费者配置的节点标签。 |
| enableMetrics | 启用 Kafka Bridge 的指标。默认为 false。 |
| 布尔值 | |
| livenessProbe | Pod 存活度检查。 |
| readinessProbe | Pod 就绪度检查。 |
| 模板 |
Kafka Bridge 资源的模板。通过该模板,用户可以指定如何生成 |
| tracing |
Kafka Bridge 中的追踪配置。类型取决于给定对象中的 |
6.2.116. KafkaBridgeHttpConfig schema reference 复制链接链接已复制到粘贴板!
用于: KafkaBridgeSpec
KafkaBridgeHttpConfig schema properties 的完整列表
为 Kafka Bridge 配置对 Kafka 集群的 HTTP 访问。
默认 HTTP 配置是 Kafka Bridge 侦听端口 8080。
6.2.116.1. CORS 复制链接链接已复制到粘贴板!
除了启用 Kafka 集群的 HTTP 访问外,HTTP 属性提供了通过 Cross-Origin Resource Sharing (CORS)启用和定义 Kafka Bridge 的访问控制的功能。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"
# ...
6.2.116.2. KafkaBridgeHttpConfig schema properties 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| port | 服务器侦听的端口。 |
| 整数 | |
| CORS | HTTP 网桥的 CORS 配置。 |
6.2.117. KafkaBridgeHttpCors 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| allowedOrigins | 允许的源列表。可以使用 Java 正则表达式。 |
| 字符串数组 | |
| allowedMethods | 允许的 HTTP 方法列表。 |
| 字符串数组 |
6.2.118. KafkaBridgeAdminClientSpec schema reference 复制链接链接已复制到粘贴板!
用于: KafkaBridgeSpec
| 属性 | Description |
|---|---|
| config | 用于网桥创建的 AdminClient 实例的 Kafka AdminClient 配置。 |
| map |
6.2.119. 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 消费者配置示例
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
# ...
6.2.119.1. KafkaBridgeConsumerSpec 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| config | 用于网桥创建的消费者实例的 Kafka 使用者配置。无法设置以下前缀的属性: ssl., bootstrap.servers, group.id, sasl., security. (除 ssl.endpoint.identification.algorithm, ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols)除外。 |
| map |
6.2.120. KafkaBridgeProducerSpec 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaBridgeSpec
KafkaBridgeProducerSpec 模式属性的完整列表
将 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
# ...
6.2.120.1. KafkaBridgeProducerSpec 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| config | 用于网桥创建的制作者实例的 Kafka 制作者配置。无法设置以下前缀的属性: ssl.、bootstrap.servers、sasl.、security. (除: ssl.endpoint.identification.algorithm, ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols)。 |
| map |
6.2.121. KafkaBridgeTemplate 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaBridgeSpec
| 属性 | Description |
|---|---|
| 部署 |
Kafka Bridge |
| pod |
Kafka Bridge |
| apiService |
Kafka Bridge API |
| podDisruptionBudget |
Kafka Bridge |
| bridgeContainer | Kafka Bridge 容器的模板。 |
| clusterRoleBinding | Kafka Bridge ClusterRoleBinding 的模板。 |
| serviceAccount | Kafka Bridge 服务帐户的模板。 |
| initContainer | Kafka Bridge init 容器的模板。 |
6.2.122. KafkaBridgeStatus schema reference 复制链接链接已复制到粘贴板!
用于: KafkaBridge
| 属性 | Description |
|---|---|
| conditions | 状态条件列表。 |
|
| |
| observedGeneration | Operator 最后协调的 CRD 的生成。 |
| 整数 | |
| url | 外部客户端应用程序可以访问 Kafka Bridge 的 URL。 |
| 字符串 | |
| labelSelector | 提供此资源的 pod 的标签选择器。 |
| 字符串 | |
| replicas | 当前用于提供此资源的 pod 数量。 |
| 整数 |
6.2.123. KafkaConnector 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| spec | Kafka Connector 的规格。 |
| status | Kafka Connector 的状态。 |
6.2.124. KafkaConnectorSpec 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaConnector
| 属性 | Description |
|---|---|
| 类 | Kafka Connector 的类。 |
| 字符串 | |
| tasksMax | Kafka Connector 的最大任务数量。 |
| 整数 | |
| autoRestart | 自动重启连接器和任务配置。 |
| config | Kafka Connector 配置。无法设置以下属性: connector.class、tasks.max。 |
| map | |
| pause | 连接器是否应暂停。默认为false。 |
| 布尔值 |
6.2.125. AutoRestart 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaConnectorSpec、KafkaMirrorMaker2ConnectorSpec
为处于 FAILED 状态的连接器和任务配置自动重启。
启用后,后台算法会对每个失败的连接器及其任务应用自动重启。
Operator 在协调时尝试自动重启。如果第一次尝试失败,Operator 会最多发出六个尝试。每次重启尝试之间的持续时间从 2 增加到 30 分钟。在每次重启后,失败的连接器和任务都从 FAILED 过渡到 RESTARTING。如果最终尝试后重启失败,则连接器配置可能会有问题。连接器和任务处于 FAILED 状态,您必须手动重启它们。您可以使用 strimzi.io/restart: "true" 注解 KafKaConnector 自定义资源来实现此目的。
对于 Kafka Connect 连接器,请使用 KafkaConnector 资源的 autoRestart 属性来启用自动重启失败的连接器和任务。
为 Kafka Connect 启用自动重启失败的连接器
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnector
metadata:
name: my-source-connector
spec:
autoRestart:
enabled: true
对于 MirrorMaker 2,使用 KafkaMirrorMaker2 资源中的连接器的 autoRestart 属性来启用自动重启失败的连接器和任务。
为 MirrorMaker 2 启用自动重启失败的连接器
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker2
metadata:
name: my-mm2-cluster
spec:
mirrors:
- sourceConnector:
autoRestart:
enabled: true
# ...
heartbeatConnector:
autoRestart:
enabled: true
# ...
checkpointConnector:
autoRestart:
enabled: true
# ...
6.2.125.1. AutoRestart 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| enabled | 是否应该启用或禁用失败的连接器和任务自动重启。 |
| 布尔值 |
6.2.126. KafkaConnectorStatus 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaConnector
| 属性 | Description |
|---|---|
| conditions | 状态条件列表。 |
|
| |
| observedGeneration | Operator 最后协调的 CRD 的生成。 |
| 整数 | |
| autoRestart | 自动重启状态。 |
| connectorStatus | 连接器状态,如 Kafka Connect REST API 报告。 |
| map | |
| tasksMax | Kafka Connector 的最大任务数量。 |
| 整数 | |
| topics | Kafka Connector 使用的主题列表。 |
| 字符串数组 |
6.2.127. AutoRestartStatus 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaConnectorStatus, KafkaMirrorMaker2Status
| 属性 | Description |
|---|---|
| 数量 | 连接器或任务重启的次数。 |
| 整数 | |
| connectorName | 要重启的连接器的名称。 |
| 字符串 | |
| lastRestartTimestamp | 最后一次尝试自动重启的时间。在 UTC 时区中,所需格式为 'yyyyy-MM-ddTHH:mm:ssZ'。 |
| 字符串 |
6.2.128. KafkaMirrorMaker2 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| spec | Kafka MirrorMaker 2 集群的规格。 |
| status | Kafka MirrorMaker 2 集群的状态。 |
6.2.129. KafkaMirrorMaker2Spec 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| version | Kafka Connect 版本。默认值为 3.4.0。请参阅用户文档以了解升级或降级版本所需的流程。 |
| 字符串 | |
| replicas | Kafka Connect 组中的 pod 数量。 |
| 整数 | |
| image | pod 的 docker 镜像。 |
| 字符串 | |
| connectCluster |
用于 Kafka Connect 的集群别名。别名必须与位于 |
| 字符串 | |
| clusters | 用于镜像的 Kafka 集群。 |
| mirrors | 配置 MirrorMaker 2 连接器。 |
| 资源 | CPU 和内存资源以及请求的初始资源的最大限制。如需更多信息,请参阅 core/v1 资源requirements 的外部文档。 |
| livenessProbe | Pod 存活度检查。 |
| readinessProbe | Pod 就绪度检查。 |
| jvmOptions | pod 的 JVM 选项。 |
| jmxOptions | JMX 选项. |
| logging |
Kafka Connect 的日志记录配置。类型取决于给定对象中的 |
| clientRackInitImage |
用于初始化 |
| 字符串 | |
| rack |
将用作 |
| tracing |
在 Kafka Connect 中配置追踪。类型取决于给定对象中的 |
| 模板 |
Kafka Connect 和 Kafka Mirror Maker 2 资源的模板。这个模板允许用户指定如何生成 |
| externalConfiguration | 将 Secret 或 ConfigMap 中的数据传递给 Kafka Connect pod,并使用它们配置连接器。 |
| metricsConfig |
指标配置.该类型取决于给定对象中的 |
6.2.130. KafkaMirrorMaker2ClusterSpec 模式参考 复制链接链接已复制到粘贴板!
KafkaMirrorMaker2ClusterSpec 模式属性的完整列表
为镜像配置 Kafka 集群。
6.2.130.1. config 复制链接链接已复制到粘贴板!
使用 config 属性配置 Kafka 选项。
可以提供标准 Apache Kafka 配置,仅限于不受 AMQ Streams 直接管理的属性。
对于使用特定 加密套件 进行 TLS 版本的客户端连接,您可以配置允许的 ssl 属性。您还可以配置 ssl.endpoint.identification.algorithm 属性来启用或禁用主机名验证。
6.2.130.2. KafkaMirrorMaker2ClusterSpec 模式属性 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| alias | 用于引用 Kafka 集群的别名。 |
| 字符串 | |
| bootstrapServers |
用于建立与 Kafka 集群的连接的、以逗号分隔的 |
| 字符串 | |
| tls | 用于连接 MirrorMaker 2 连接器的 TLS 配置。 |
| 身份验证 |
用于连接到集群的身份验证配置。这个类型取决于给定对象中的 |
|
| |
| config | MirrorMaker 2 集群配置。无法设置以下前缀的属性: ssl., sasl., security., listener, plugin.path, rest., bootstrap.servers, consumer.interceptor.classes, producer.interceptor.classes (除 ssl.endpoint.identification.algorithm, ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols)。 |
| map |
6.2.131. KafkaMirrorMaker2MirrorSpec 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| sourceCluster |
Kafka MirrorMaker 2 连接器使用的源集群的别名。别名必须与位于 |
| 字符串 | |
| targetCluster |
Kafka MirrorMaker 2 连接器使用的目标集群的别名。别名必须与位于 |
| 字符串 | |
| sourceConnector | Kafka MirrorMaker 2 源连接器的规格。 |
| heartbeatConnector | Kafka MirrorMaker 2 heartbeat 连接器的规格。 |
| checkpointConnector | Kafka MirrorMaker 2 检查点连接器的规格。 |
| topicsPattern | 与要镜像的主题匹配的正则表达式,例如 "topic1|topic2|topic3"。也支持逗号分隔的列表。 |
| 字符串 | |
| topicsBlacklistPattern |
|
| 字符串 | |
| topicsExcludePattern | 与要从镜像中排除的主题匹配的正则表达式。也支持逗号分隔的列表。 |
| 字符串 | |
| groupsPattern | 与要镜像的消费者组匹配的正则表达式。也支持逗号分隔的列表。 |
| 字符串 | |
| groupsBlacklistPattern |
|
| 字符串 | |
| groupsExcludePattern | 与消费者组匹配的正则表达式,用于从镜像中排除。也支持逗号分隔的列表。 |
| 字符串 |
6.2.132. KafkaMirrorMaker2ConnectorSpec 模式参考 复制链接链接已复制到粘贴板!
用于 KafkaMirrorMaker2MirrorSpec
| 属性 | Description |
|---|---|
| tasksMax | Kafka Connector 的最大任务数量。 |
| 整数 | |
| config | Kafka Connector 配置。无法设置以下属性: connector.class、tasks.max。 |
| map | |
| autoRestart | 自动重启连接器和任务配置。 |
| pause | 连接器是否应暂停。默认为false。 |
| 布尔值 |
6.2.133. KafkaMirrorMaker2Status 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| conditions | 状态条件列表。 |
|
| |
| observedGeneration | Operator 最后协调的 CRD 的生成。 |
| 整数 | |
| url | 管理和监控 Kafka 连接连接器的 REST API 端点的 URL。 |
| 字符串 | |
| autoRestartStatuses | MirrorMaker 2 连接器自动重启状态列表。 |
| connectorPlugins | 此 Kafka Connect 部署中可用的连接器插件列表。 |
| connectors | MirrorMaker 2 连接器状态列表,如 Kafka Connect REST API 报告。 |
| 映射数组 | |
| labelSelector | 提供此资源的 pod 的标签选择器。 |
| 字符串 | |
| replicas | 当前用于提供此资源的 pod 数量。 |
| 整数 |
6.2.134. KafkaRebalance 模式参考 复制链接链接已复制到粘贴板!
| 属性 | Description |
|---|---|
| spec | Kafka 重新平衡的规格。 |
| status | Kafka 重新平衡的状态。 |
6.2.135. KafkaRebalanceSpec 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaRebalance
| 属性 | Description |
|---|---|
| 模式 |
运行重新平衡的模式。支持的模式是
|
| 字符串(一个 [remove-brokers, full, add-brokers]) | |
| 代理(broker) |
在扩展或要进行重新平衡时要删除的代理时,新添加的代理列表。此列表只能用于重新平衡模式 |
| 整数数组 | |
| 目标 | 目标列表,按优先级降序排列,用于生成和执行重新平衡建议。支持的目标位于 https://github.com/linkedin/cruise-control#goals。如果提供了空目标列表,则使用 default.goals Cruise Control 配置参数中声明的目标。 |
| 字符串数组 | |
| skipHardGoalCheck | 在优化建议生成中是否允许 Kafka CR 中指定的硬目标跳过。当某些硬目标阻止找到平衡解决方案时,这非常有用。默认为 false。 |
| 布尔值 | |
| rebalanceDisk | 启用 in-broker 磁盘平衡,它可以平衡同一代理磁盘之间的磁盘空间利用率。只适用于使用多个磁盘的 JBOD 存储的 Kafka 部署。启用后,禁用 inter-broker 平衡。默认为 false。 |
| 布尔值 | |
| excludedTopics | 在计算优化建议时,将排除任何匹配主题的正则表达式。java.util.regex.Pattern 类将解析此表达式;有关支持的格式的更多信息,请参阅该类的文档。 |
| 字符串 | |
| concurrentPartitionMovementsPerBroker | 持续分区副本的上限将进入/出站每个代理。默认值为 5。 |
| 整数 | |
| concurrentIntraBrokerPartitionMovements | 每个代理内的磁盘间移动的上限。默认为 2。 |
| 整数 | |
| concurrentLeaderMovements | 持续分区领导移动的上限。默认值为 1000。 |
| 整数 | |
| replicationThrottle | 用于移动副本的带宽的上限(以字节/秒为单位)。默认没有限制。 |
| 整数 | |
| replicaMovementStrategies | 用于决定生成优化建议中副本移动的执行顺序的策略类名称列表。默认情况下,使用 BaseReplicaMovementStrategy,它将按照它们生成的顺序执行副本移动。 |
| 字符串数组 |
6.2.136. KafkaRebalanceStatus 模式参考 复制链接链接已复制到粘贴板!
用于: KafkaRebalance
| 属性 | Description |
|---|---|
| conditions | 状态条件列表。 |
|
| |
| observedGeneration | Operator 最后协调的 CRD 的生成。 |
| 整数 | |
| sessionId | 与这个 KafkaRebalance 资源相关的 Cruise Control 的会话标识符。Kafka Rebalance Operator 使用它来跟踪持续重新平衡操作的状态。 |
| 字符串 | |
| optimizationResult | 描述优化结果的 JSON 对象。 |
| map |