6.8. AMQ Streams operator 的替代独立部署选项


您可以对主题 Operator 和 User Operator 执行独立部署。如果您使用不是由 Cluster Operator 管理的 Kafka 集群,请考虑这些 Operator 的独立部署。

您将操作器部署到 OpenShift。Kafka 可以在 OpenShift 外部运行。例如,您可以使用 Kafka 作为受管服务。您可以调整独立 Operator 的部署配置,以匹配 Kafka 集群的地址。

6.8.1. 部署独立主题 Operator

此流程演示了如何将主题 Operator 部署为主题管理的独立组件。您可以将独立主题 Operator 与不是由 Cluster Operator 管理的 Kafka 集群一起使用。

独立部署可以处理任何 Kafka 集群。

独立部署文件由 AMQ Streams 提供。使用 05-Deployment-strimzi-topic-operator.yaml 部署文件来部署 Topic Operator。添加或设置与 Kafka 集群建立连接所需的环境变量。

主题 Operator 监视单个命名空间中的 KafkaTopic 资源。您可以在 Topic Operator 配置中指定要监视的命名空间以及与 Kafka 集群的连接。单个主题 Operator 可以监视单个命名空间。一个命名空间应该只由一个 Topic Operator 监视。如果要使用多个主题 Operator,请将每个主题配置为监视不同的命名空间。这样,您可以将主题 Operator 与多个 Kafka 集群一起使用。

先决条件

  • 您正在运行一个 Kafka 集群,供 Topic Operator 连接到。

    只要为连接正确配置了独立主题 Operator,Kafka 集群就可以在裸机环境、虚拟机或受管云应用程序服务上运行。

流程

  1. 编辑 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_NAMESPACE 
    1
    
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
                - name: STRIMZI_KAFKA_BOOTSTRAP_SERVERS 
    2
    
                  value: my-kafka-bootstrap-address:9092
                - name: STRIMZI_RESOURCE_LABELS 
    3
    
                  value: "strimzi.io/cluster=my-cluster"
                - name: STRIMZI_ZOOKEEPER_CONNECT 
    4
    
                  value: my-cluster-zookeeper-client:2181
                - name: STRIMZI_ZOOKEEPER_SESSION_TIMEOUT_MS 
    5
    
                  value: "18000"
                - name: STRIMZI_FULL_RECONCILIATION_INTERVAL_MS 
    6
    
                  value: "120000"
                - name: STRIMZI_TOPIC_METADATA_MAX_ATTEMPTS 
    7
    
                  value: "6"
                - name: STRIMZI_LOG_LEVEL 
    8
    
                  value: INFO
                - name: STRIMZI_TLS_ENABLED 
    9
    
                  value: "false"
                - name: STRIMZI_JAVA_OPTS 
    10
    
                  value: "-Xmx=512M -Xms=256M"
                - name: STRIMZI_JAVA_SYSTEM_PROPERTIES 
    11
    
                  value: "-Djavax.net.debug=verbose -DpropertyName=value"
                - name: STRIMZI_PUBLIC_CA 
    12
    
                  value: "false"
                - name: STRIMZI_TLS_AUTH_ENABLED 
    13
    
                  value: "false"
                - name: STRIMZI_SASL_ENABLED 
    14
    
                  value: "false"
                - name: STRIMZI_SASL_USERNAME 
    15
    
                  value: "admin"
                - name: STRIMZI_SASL_PASSWORD 
    16
    
                  value: "password"
                - name: STRIMZI_SASL_MECHANISM 
    17
    
                  value: "scram-sha-512"
                - name: STRIMZI_SECURITY_PROTOCOL 
    18
    
                  value: "SSL"
    Copy to Clipboard Toggle word wrap

    1
    主题 Operator 的 OpenShift 命名空间,以监视 KafkaTopic 资源。指定 Kafka 集群的命名空间。
    2
    bootstrap 代理地址的主机和端口对,用于发现并连接到 Kafka 集群中的所有代理。使用逗号分隔的列表,在服务器停机时指定两个或三个代理地址。
    3
    用于标识 Topic Operator 管理的 KafkaTopic 资源的标签。这不一定是 Kafka 集群的名称。它可以是分配给 KafkaTopic 资源的标签。如果部署多个主题 Operator,则标签必须为每个主题都是唯一的。也就是说,操作员无法管理同一资源。
    4
    (ZooKeeper)用于连接到 ZooKeeper 集群的地址的主机和端口对。这必须是 Kafka 集群使用的同一 ZooKeeper 集群。
    5
    (ZooKeeper) ZooKeeper 会话超时,以毫秒为单位。默认值为 18000 (18 秒)。
    6
    定期协调之间的间隔,以毫秒为单位。默认值为 120000 (2 分钟)。
    7
    从 Kafka 获取主题元数据的尝试次数。每次尝试之间的时间都定义为 exponential backoff。当主题创建因为分区或副本数增加时,请考虑增加这个值。默认值为 6 次。
    8
    打印日志信息的级别。您可以将级别设置为 ERRORWARNINGINFODEBUGTRACE
    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 时才需要。您可以将值设为 plainscram-sha-256scram-sha-512
    18
    (可选)用于与 Kafka 代理通信的安全协议。默认值为 "PLAINTEXT"。您可以将值设为 PLAINTEXTSSL、SSL、SASL_PLAINTEXTSASL_SSL
  2. 如果要连接到使用公共证书颁发机构的 Kafka 代理,请将 STRIMZI_PUBLIC_CA 设置为 true。将此属性设置为 true,例如,如果您使用 Amazon AWS MSK 服务。
  3. 如果您使用 STRIMZI_TLS_ENABLED 环境变量启用 mTLS,请指定用于验证与 Kafka 集群连接的密钥存储和信任存储。

    mTLS 配置示例

    # ....
    env:
      - name: STRIMZI_TRUSTSTORE_LOCATION 
    1
    
        value: "/path/to/truststore.p12"
      - name: STRIMZI_TRUSTSTORE_PASSWORD 
    2
    
        value: "TRUSTSTORE-PASSWORD"
      - name: STRIMZI_KEYSTORE_LOCATION 
    3
    
        value: "/path/to/keystore.p12"
      - name: STRIMZI_KEYSTORE_PASSWORD 
    4
    
        value: "KEYSTORE-PASSWORD"
    # ...
    Copy to Clipboard Toggle word wrap

    1
    truststore 包含用于为 Kafka 和 ZooKeeper 服务器证书签名的证书颁发机构的公钥。
    2
    用于访问 truststore 的密码。
    3
    密钥存储包含 mTLS 身份验证的私钥。
    4
    用于访问密钥存储的密码。
  4. 部署主题 Operator。

    oc create -f install/topic-operator
    Copy to Clipboard Toggle word wrap
  5. 检查部署的状态:

    oc get deployments
    Copy to Clipboard Toggle word wrap

    输出显示部署名称和就绪

    NAME                    READY  UP-TO-DATE  AVAILABLE
    strimzi-topic-operator  1/1    1           1
    Copy to Clipboard Toggle word wrap

    READY 显示就绪/预期的副本数。当 AVAILABLE 输出显示为 1 时,部署成功。

单向主题管理仅通过 KafkaTopic 资源维护主题。有关单向主题管理的详情,请参考 第 9.1 节 “主题管理模式”

如果要尝试单向主题管理的预览,请按照以下步骤部署独立主题 Operator。

流程

  1. 取消部署当前独立主题 Operator。

    保留 KafkaTopic 资源,这些资源由主题 Operator 再次部署时获取。

  2. 编辑独立主题 Operator 的 Deployment 配置,以删除任何与 ZooKeeper 相关的环境变量:

    • STRIMZI_ZOOKEEPER_CONNECT
    • STRIMZI_ZOOKEEPER_SESSION_TIMEOUT_MS
    • TC_ZK_CONNECTION_TIMEOUT_MS
    • STRIMZI_USE_ZOOKEEPER_TOPIC_STORE

      它是定义是否使用 unidirectional Topic Operator 的 ZooKeeper 变量是否存在。单向主题管理不使用 ZooKeeper。如果没有 ZooKeeper 环境变量,则使用 unidirectional Topic Operator。否则会使用双向主题 Operator。

      如果存在时可以删除的其他未使用的环境变量:

    • STRIMZI_REASSIGN_THROTTLE
    • STRIMZI_REASSIGN_VERIFY_INTERVAL_MS
    • STRIMZI_TOPIC_METADATA_MAX_ATTEMPTS
    • STRIMZI_TOPICS_PATH
    • STRIMZI_STORE_TOPIC
    • STRIMZI_STORE_NAME
    • STRIMZI_APPLICATION_ID
    • STRIMZI_STALE_RESULT_TIMEOUT_MS
  3. (可选)将 STRIMZI_USE_FINALIZERS 环境变量设置为 false

    其他单向主题管理配置

    # ...
    env:
      - name: STRIMZI_USE_FINALIZERS
        value: "false"
    Copy to Clipboard Toggle word wrap

    如果您不想使用终结器来控制 删除主题,请将此环境变量设置为 false

    单向主题管理的独立主题 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_NAMESPACE
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
                - name: STRIMZI_KAFKA_BOOTSTRAP_SERVERS
                  value: my-kafka-bootstrap-address:9092
                - name: STRIMZI_RESOURCE_LABELS
                  value: "strimzi.io/cluster=my-cluster"
                - name: STRIMZI_FULL_RECONCILIATION_INTERVAL_MS
                  value: "120000"
                - name: STRIMZI_LOG_LEVEL
                  value: INFO
                - name: STRIMZI_TLS_ENABLED
                  value: "false"
                - name: STRIMZI_JAVA_OPTS
                  value: "-Xmx=512M -Xms=256M"
                - name: STRIMZI_JAVA_SYSTEM_PROPERTIES
                  value: "-Djavax.net.debug=verbose -DpropertyName=value"
                - name: STRIMZI_PUBLIC_CA
                  value: "false"
                - name: STRIMZI_TLS_AUTH_ENABLED
                  value: "false"
                - name: STRIMZI_SASL_ENABLED
                  value: "false"
                - name: STRIMZI_SASL_USERNAME
                  value: "admin"
                - name: STRIMZI_SASL_PASSWORD
                  value: "password"
                - name: STRIMZI_SASL_MECHANISM
                  value: "scram-sha-512"
                - name: STRIMZI_SECURITY_PROTOCOL
                  value: "SSL"
                - name: STRIMZI_USE_FINALIZERS
                  value: "true"
    Copy to Clipboard Toggle word wrap

  4. 以标准的方式部署独立主题 Operator。

6.8.2. 部署独立用户 Operator

此流程演示了如何将 User Operator 部署为用户管理的独立组件。您可以将独立用户 Operator 与不是由 Cluster Operator 管理的 Kafka 集群一起使用。

独立部署可以处理任何 Kafka 集群。

独立部署文件由 AMQ Streams 提供。使用 05-Deployment-strimzi-user-operator.yaml 部署文件来部署 User Operator。添加或设置与 Kafka 集群建立连接所需的环境变量。

User Operator 监视单个命名空间中的 KafkaUser 资源。您可以在 User Operator 配置中指定要监视的命名空间以及与 Kafka 集群的连接。单个 User Operator 可以监视单个命名空间。一个命名空间应该只由一个 User Operator 监视。如果要使用多个 User Operator,请将每个 Operator 配置为监视不同的命名空间。这样,您可以将 User Operator 与多个 Kafka 集群一起使用。

先决条件

  • 您正在运行一个 Kafka 集群,供 User Operator 连接。

    只要为连接正确配置了独立用户 Operator,Kafka 集群就可以在裸机环境、虚拟机或受管云应用程序服务上运行。

流程

  1. 编辑 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_NAMESPACE 
    1
    
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
                - name: STRIMZI_KAFKA_BOOTSTRAP_SERVERS 
    2
    
                  value: my-kafka-bootstrap-address:9092
                - name: STRIMZI_CA_CERT_NAME 
    3
    
                  value: my-cluster-clients-ca-cert
                - name: STRIMZI_CA_KEY_NAME 
    4
    
                  value: my-cluster-clients-ca
                - name: STRIMZI_LABELS 
    5
    
                  value: "strimzi.io/cluster=my-cluster"
                - name: STRIMZI_FULL_RECONCILIATION_INTERVAL_MS 
    6
    
                  value: "120000"
                - name: STRIMZI_WORK_QUEUE_SIZE 
    7
    
                  value: 10000
                - name: STRIMZI_CONTROLLER_THREAD_POOL_SIZE 
    8
    
                  value: 10
                - name: STRIMZI_USER_OPERATIONS_THREAD_POOL_SIZE 
    9
    
                  value: 4
                - name: STRIMZI_LOG_LEVEL 
    10
    
                  value: INFO
                - name: STRIMZI_GC_LOG_ENABLED 
    11
    
                  value: "true"
                - name: STRIMZI_CA_VALIDITY 
    12
    
                  value: "365"
                - name: STRIMZI_CA_RENEWAL 
    13
    
                  value: "30"
                - name: STRIMZI_JAVA_OPTS 
    14
    
                  value: "-Xmx=512M -Xms=256M"
                - name: STRIMZI_JAVA_SYSTEM_PROPERTIES 
    15
    
                  value: "-Djavax.net.debug=verbose -DpropertyName=value"
                - name: STRIMZI_SECRET_PREFIX 
    16
    
                  value: "kafka-"
                - name: STRIMZI_ACLS_ADMIN_API_SUPPORTED 
    17
    
                  value: "true"
                - name: STRIMZI_MAINTENANCE_TIME_WINDOWS 
    18
    
                  value: '* * 8-10 * * ?;* * 14-15 * * ?'
                - name: STRIMZI_KAFKA_ADMIN_CLIENT_CONFIGURATION 
    19
    
                  value: |
                    default.api.timeout.ms=120000
                    request.timeout.ms=60000
    Copy to Clipboard Toggle word wrap

    1
    User Operator 的 OpenShift 命名空间以监视 KafkaUser 资源。只能指定一个命名空间。
    2
    bootstrap 代理地址的主机和端口对,用于发现并连接到 Kafka 集群中的所有代理。使用逗号分隔的列表,在服务器停机时指定两个或三个代理地址。
    3
    包含用于 mTLS 身份验证的新用户证书的 CA (证书颁发机构)值的 OpenShift Secret (ca.crt)值。
    4
    包含 CA 的私钥(ca.key)值的 OpenShift Secret,它签署 mTLS 身份验证的新用户证书。
    5
    标识由 User Operator 管理的 KafkaUser 资源的标签。这不一定是 Kafka 集群的名称。它可以是分配给 KafkaUser 资源的标签。如果部署多个 User Operator,则每个标签都必须是唯一的。也就是说,操作员无法管理同一资源。
    6
    定期协调之间的间隔,以毫秒为单位。默认值为 120000 (2 分钟)。
    7
    控制器事件队列的大小。队列的大小应至少与预期 User Operator 操作用户的最大数量相同。默认值为 1024
    8
    用于协调用户的 worker 池的大小。较大的池可能需要更多资源,但它也会处理更多 KafkaUser 资源。默认值为 50
    9
    Kafka Admin API 和 OpenShift 操作的 worker 池的大小。较大的池可能需要更多资源,但它也会处理更多的 KafkaUser 资源。默认为 4
    10
    打印日志信息的级别。您可以将级别设置为 ERRORWARNINGINFODEBUGTRACE
    11
    启用垃圾回收(GC)日志记录。默认值是 true
    12
    CA 的有效性周期。默认值为 365 天。
    13
    CA 的续订周期。续订周期从当前证书的到期日期开始向后测量。默认值为 30 天,在旧证书过期前启动证书续订。
    14
    (可选)运行 User 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 separated list of Cron Expressions 定义过期用户证书的维护时间窗。
    19
    (可选)配置用户 Operator 以属性格式使用的 Kafka Admin 客户端的配置选项。
  2. 如果您使用 mTLS 连接到 Kafka 集群,请指定用于验证连接的 secret。否则,请转到下一步。

    mTLS 配置示例

    # ....
    env:
      - name: STRIMZI_CLUSTER_CA_CERT_SECRET_NAME 
    1
    
        value: my-cluster-cluster-ca-cert
      - name: STRIMZI_EO_KEY_SECRET_NAME 
    2
    
        value: my-cluster-entity-operator-certs
    # ..."
    Copy to Clipboard Toggle word wrap

    1
    包含为 Kafka 代理证书签名的 CA 的公钥(ca.crt)值的 OpenShift Secret
    2
    包含证书公钥(entity-operator.crt)和私钥(entity-operator.key)的 OpenShift Secret,用于针对 Kafka 集群的 mTLS 身份验证。
  3. 部署 User Operator。

    oc create -f install/user-operator
    Copy to Clipboard Toggle word wrap
  4. 检查部署的状态:

    oc get deployments
    Copy to Clipboard Toggle word wrap

    输出显示部署名称和就绪

    NAME                   READY  UP-TO-DATE  AVAILABLE
    strimzi-user-operator  1/1    1           1
    Copy to Clipboard Toggle word wrap

    READY 显示就绪/预期的副本数。当 AVAILABLE 输出显示为 1 时,部署成功。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat