6.7. AMQ Streams operator 的替代独立部署选项
您可以对 Topic Operator 和 User Operator 执行独立部署。如果使用不是由 Cluster Operator 管理的 Kafka 集群,请考虑这些 Operator 的独立部署。
您将操作器部署到 OpenShift。Kafka 可以在 OpenShift 外部运行。例如,您可以使用 Kafka 作为受管服务。您可以调整独立 Operator 的部署配置,以匹配 Kafka 集群的地址。
6.7.1. 部署独立主题 Operator 复制链接链接已复制到粘贴板!
此流程演示了如何将主题 Operator 部署为主题管理的独立组件。您可以将独立主题 Operator 与不由 Cluster Operator 管理的 Kafka 集群一起使用。
独立部署可以处理任何 Kafka 集群。
独立部署文件由 AMQ Streams 提供。使用 05-Deployment-strimzi-topic-operator.yaml 部署文件来部署主题 Operator。添加或设置环境变量来连接 Kafka 集群。
主题 Operator 监视单一命名空间中的 KafkaTopic 资源。您可以在 Topic Operator 配置中指定要监视的命名空间以及与 Kafka 集群的连接。单个主题 Operator 可以监视单个命名空间。一个命名空间应该只被一个主题 Operator 监视。如果要使用多个主题 Operator,请配置每个主题来监视不同的命名空间。这样,您可以将主题 Operator 与多个 Kafka 集群一起使用。
先决条件
您正在运行一个 Kafka 集群,供主题 Operator 连接。
只要为连接正确配置独立主题 Operator,则 Kafka 集群可以在裸机环境、虚拟机或受管云应用程序服务上运行。
流程
编辑
install/topic-operator/05-Deployment-strimzi-topic-operator.yaml独立部署文件中的env属性。独立主题 Operator 部署配置示例
apiVersion: apps/v1 kind: Deployment metadata: name: strimzi-topic-operator labels: app: strimzi spec: # ... template: # ... spec: # ... containers: - name: strimzi-topic-operator # ... env: - name: STRIMZI_NAMESPACE1 valueFrom: fieldRef: fieldPath: metadata.namespace - name: STRIMZI_KAFKA_BOOTSTRAP_SERVERS2 value: my-kafka-bootstrap-address:9092 - name: STRIMZI_RESOURCE_LABELS3 value: "strimzi.io/cluster=my-cluster" - name: STRIMZI_ZOOKEEPER_CONNECT4 value: my-cluster-zookeeper-client:2181 - name: STRIMZI_ZOOKEEPER_SESSION_TIMEOUT_MS5 value: "18000" - name: STRIMZI_FULL_RECONCILIATION_INTERVAL_MS6 value: "120000" - name: STRIMZI_TOPIC_METADATA_MAX_ATTEMPTS7 value: "6" - name: STRIMZI_LOG_LEVEL8 value: INFO - name: STRIMZI_TLS_ENABLED9 value: "false" - name: STRIMZI_JAVA_OPTS10 value: "-Xmx=512M -Xms=256M" - name: STRIMZI_JAVA_SYSTEM_PROPERTIES11 value: "-Djavax.net.debug=verbose -DpropertyName=value" - name: STRIMZI_PUBLIC_CA12 value: "false" - name: STRIMZI_TLS_AUTH_ENABLED13 value: "false" - name: STRIMZI_SASL_ENABLED14 value: "false" - name: STRIMZI_SASL_USERNAME15 value: "admin" - name: STRIMZI_SASL_PASSWORD16 value: "password" - name: STRIMZI_SASL_MECHANISM17 value: "scram-sha-512" - name: STRIMZI_SECURITY_PROTOCOL18 value: "SSL"- 1
- 主题 Operator 的 OpenShift 命名空间,以监视
KafkaTopic资源。指定 Kafka 集群的命名空间。 - 2
- bootstrap 代理地址的主机和端口对,以发现并连接到 Kafka 集群中的所有代理。在服务器停机时,使用以逗号分隔的列表指定两个或多个代理地址。
- 3
- 用于标识主题 Operator 管理的
KafkaTopic资源的标签。这不一定是 Kafka 集群的名称。它可以是分配给KafkaTopic资源的标签。如果您部署多个主题 Operator,则标签必须是唯一的。也就是说,Operator 无法管理同一资源。 - 4
- 连接到 ZooKeeper 集群的地址的主机和端口对。这必须是 Kafka 集群正在使用的同一 ZooKeeper 集群。
- 5
- ZooKeeper 会话超时,以毫秒为单位。默认值为
18000(18 秒)。 - 6
- 定期协调之间的间隔,以毫秒为单位。默认值为
120000(2 分钟)。 - 7
- 从 Kafka 获取主题元数据的尝试次数。每次尝试之间的时间定义为指数 backoff。由于分区或副本数,当主题创建需要更长的时间时,请考虑增加这个值。默认值为
6个尝试。 - 8
- 打印日志记录消息的级别。您可以将级别设置为
ERROR、WARNING、INFO、DEBUG或TRACE。 - 9
- 启用 TLS 支持与 Kafka 代理的加密通信。
- 10
- (可选)运行主题 Operator 的 JVM 使用的 Java 选项。
- 11
- (可选)为主题 Operator 设置的调试(
-D)选项。 - 12
- (可选)如果通过
STRIMZI_TLS_ENABLED启用 TLS,请跳过信任存储证书的生成。如果启用了此环境变量,代理必须使用公共可信证书颁发机构作为其 TLS 证书。默认值为false。 - 13
- (可选)为 mTLS 身份验证生成密钥存储证书。把它设置为
false可禁用 mTLS 到 Kafka 代理的客户端身份验证。默认值是true。 - 14
- (可选)在连接到 Kafka 代理时启用对客户端身份验证的 SASL 支持。默认值为
false。 - 15
- (可选)客户端身份验证的 SASL 用户名。只有通过
STRIMZI_SASL_ENABLED启用 SASL 时才强制。 - 16
- (可选)客户端身份验证的 SASL 密码。只有通过
STRIMZI_SASL_ENABLED启用 SASL 时才强制。 - 17
- (可选)客户端身份验证的 SASL 机制。只有通过
STRIMZI_SASL_ENABLED启用 SASL 时才强制。您可以将值设为plain,scram-sha-256, 或scram-sha-512。 - 18
- (可选)用于与 Kafka 代理通信的安全协议。默认值为 "PLAINTEXT"。您可以将值设为
PLAINTEXT、SSL、SASL_PLAINTEXT或SASL_SSL。
-
如果要连接到使用来自公共证书颁发机构证书的 Kafka 代理,请将
STRIMZI_PUBLIC_CA设置为true。将此属性设置为true,例如,如果您使用 Amazon AWS MSK 服务。 如果您使用
STRIMZI_TLS_ENABLED环境变量启用了 mTLS,请指定用于验证与 Kafka 集群的连接的密钥存储和信任存储。mTLS 配置示例
# .... env: - name: STRIMZI_TRUSTSTORE_LOCATION1 value: "/path/to/truststore.p12" - name: STRIMZI_TRUSTSTORE_PASSWORD2 value: "TRUSTSTORE-PASSWORD" - name: STRIMZI_KEYSTORE_LOCATION3 value: "/path/to/keystore.p12" - name: STRIMZI_KEYSTORE_PASSWORD4 value: "KEYSTORE-PASSWORD" # ...部署主题 Operator。
oc create -f install/topic-operator检查部署的状态:
oc get deployments输出显示部署名称和就绪度
NAME READY UP-TO-DATE AVAILABLE strimzi-topic-operator 1/1 1 1READY显示就绪/预期的副本数。当AVAILABLE输出显示为1时,部署成功。
6.7.2. 部署独立用户 Operator 复制链接链接已复制到粘贴板!
此流程演示了如何将 User Operator 部署为用户管理的独立组件。您可以将独立的 User Operator 与不由 Cluster Operator 管理的 Kafka 集群一起使用。
独立部署可以处理任何 Kafka 集群。
独立部署文件由 AMQ Streams 提供。使用 05-Deployment-strimzi-user-operator.yaml 部署文件来部署 User Operator。添加或设置环境变量来连接 Kafka 集群。
User Operator 监视单个命名空间中的 KafkaUser 资源。您可以在 User Operator 配置中指定要监视的命名空间以及与 Kafka 集群的连接。单个用户 Operator 可以监视单个命名空间。一个命名空间应该只被一个 User Operator 监视。如果要使用多个 User Operator,请配置每个 User Operator 以监视不同的命名空间。这样,您可以将 User Operator 与多个 Kafka 集群一起使用。
先决条件
您正在运行一个 Kafka 集群,供 User Operator 连接。
只要为连接正确配置独立用户 Operator,则 Kafka 集群可以在裸机环境、虚拟机或受管云应用程序服务上运行。
流程
编辑
install/user-operator/05-Deployment-strimzi-user-operator.yaml独立部署文件中的以下env属性。独立用户 Operator 部署配置示例
apiVersion: apps/v1 kind: Deployment metadata: name: strimzi-user-operator labels: app: strimzi spec: # ... template: # ... spec: # ... containers: - name: strimzi-user-operator # ... env: - name: STRIMZI_NAMESPACE1 valueFrom: fieldRef: fieldPath: metadata.namespace - name: STRIMZI_KAFKA_BOOTSTRAP_SERVERS2 value: my-kafka-bootstrap-address:9092 - name: STRIMZI_CA_CERT_NAME3 value: my-cluster-clients-ca-cert - name: STRIMZI_CA_KEY_NAME4 value: my-cluster-clients-ca - name: STRIMZI_LABELS5 value: "strimzi.io/cluster=my-cluster" - name: STRIMZI_FULL_RECONCILIATION_INTERVAL_MS6 value: "120000" - name: STRIMZI_WORK_QUEUE_SIZE7 value: 10000 - name: STRIMZI_CONTROLLER_THREAD_POOL_SIZE8 value: 10 - name: STRIMZI_USER_OPERATIONS_THREAD_POOL_SIZE9 value: 4 - name: STRIMZI_LOG_LEVEL10 value: INFO - name: STRIMZI_GC_LOG_ENABLED11 value: "true" - name: STRIMZI_CA_VALIDITY12 value: "365" - name: STRIMZI_CA_RENEWAL13 value: "30" - name: STRIMZI_JAVA_OPTS14 value: "-Xmx=512M -Xms=256M" - name: STRIMZI_JAVA_SYSTEM_PROPERTIES15 value: "-Djavax.net.debug=verbose -DpropertyName=value" - name: STRIMZI_SECRET_PREFIX16 value: "kafka-" - name: STRIMZI_ACLS_ADMIN_API_SUPPORTED17 value: "true" - name: STRIMZI_MAINTENANCE_TIME_WINDOWS18 value: '* * 8-10 * * ?;* * 14-15 * * ?' - name: STRIMZI_KAFKA_ADMIN_CLIENT_CONFIGURATION19 value: | default.api.timeout.ms=120000 request.timeout.ms=60000 - name: STRIMZI_KRAFT_ENABLED20 value: "false"- 1
- User Operator 的 OpenShift 命名空间,用于监视
KafkaUser资源。只能指定一个命名空间。 - 2
- bootstrap 代理地址的主机和端口对,以发现并连接到 Kafka 集群中的所有代理。在服务器停机时,使用以逗号分隔的列表指定两个或多个代理地址。
- 3
- 包含为 mTLS 身份验证签名的 CA (certificate 授权)的公钥(
ca.crt)值的 OpenShiftSecret。 - 4
- 包含 CA 的私钥(
ca.key)值的 OpenShiftSecret,用于为 mTLS 身份验证为新用户证书签名。 - 5
- 用于标识由 User Operator 管理的
KafkaUser资源的标签。这不一定是 Kafka 集群的名称。它可以是分配给KafkaUser资源的标签。如果部署多个 User Operator,则标签必须是唯一的。也就是说,Operator 无法管理同一资源。 - 6
- 定期协调之间的间隔,以毫秒为单位。默认值为
120000(2 分钟)。 - 7
- 控制器事件队列的大小。队列的大小应至少与您希望 User Operator 操作的最大用户量一样。默认值为
1024。 - 8
- 用于协调用户的 worker 池大小。较大的池可能需要更多资源,但它也会处理更多
KafkaUser资源,默认值为50。 - 9
- Kafka Admin API 和 OpenShift 操作的 worker 池大小。较大的池可能需要更多资源,但它也会处理更多的
KafkaUser资源。默认为4。 - 10
- 打印日志记录消息的级别。您可以将级别设置为
ERROR、WARNING、INFO、DEBUG或TRACE。 - 11
- 启用垃圾回收(GC)日志记录。默认值是
true。 - 12
- CA 的有效性周期。默认值为
365天。 - 13
- CA 的续订周期。续订周期从当前证书的到期日期后衡量。默认值为
30天,以在旧证书过期前启动证书续订。 - 14
- (可选)运行用户 Operator 的 JVM 使用的 Java 选项
- 15
- (可选)为 User Operator 设置的调试(
-D)选项 - 16
- (可选)由 User Operator 创建的 OpenShift secret 名称的前缀。
- 17
- (可选)指示 Kafka 集群是否支持使用 Kafka Admin API 管理授权 ACL 规则。当设置为
false时,User Operator 将拒绝具有simple授权 ACL 规则的所有资源。这有助于避免 Kafka 集群日志中不必要的异常。默认值是true。 - 18
- (可选) Semi-colon 分隔 Cron Expressions 列表,用于定义维护时间窗,其中过期用户证书。
- 19
- (可选)配置 User Operator 以属性格式使用的 Kafka Admin 客户端的配置选项。
- 20
- (可选)指示 User Operator 连接到的 Kafka 集群是否使用 KRaft 而不是 ZooKeeper。如果 Kafka 集群使用 KRaft,请将此变量设置为
true。默认值为false。请注意,对于 KRaft 集群运行时,一些功能不可用。例如,禁用 SCRAM-SHA-512 用户的管理,因为 Apache Kafka 当前不支持它。
如果您使用 mTLS 连接到 Kafka 集群,请指定用于验证连接的 secret。否则,进入下一步。
mTLS 配置示例
# .... env: - name: STRIMZI_CLUSTER_CA_CERT_SECRET_NAME1 value: my-cluster-cluster-ca-cert - name: STRIMZI_EO_KEY_SECRET_NAME2 value: my-cluster-entity-operator-certs # ..."部署 User Operator。
oc create -f install/user-operator检查部署的状态:
oc get deployments输出显示部署名称和就绪度
NAME READY UP-TO-DATE AVAILABLE strimzi-user-operator 1/1 1 1READY显示就绪/预期的副本数。当AVAILABLE输出显示为1时,部署成功。