6.8. Streams for Apache Kafka Operator のスタンドアロンデプロイメントを代替的に実行する方法


Topic Operator および User Operator のスタンドアロンデプロイメントを実行できます。Cluster Operator によって管理されない Kafka クラスターを使用している場合は、これらの Operator のスタンドアロンデプロイメントを検討してください。

Operator を OpenShift にデプロイします。Kafka は OpenShift 外で実行できます。たとえば、Kafka をマネージドサービスとして使用する場合があります。スタンドアロン Operator のデプロイメント設定を調整し、Kafka クラスターのアドレスと一致するようにします。

6.8.1. スタンドアロン Topic Operator のデプロイ

この手順では、Topic Operator をトピック管理用のスタンドアロンコンポーネントとして一方向モードでデプロイメントする方法を示します。スタンドアロン Topic Operator を Cluster Operator によって管理されない Kafka クラスターと使用できます。一方向トピック管理では、KafkaTopic リソースのみを通じてトピックを維持します。一方向トピック管理の詳細は、「トピック管理モード」 を参照してください。Topic Operator を双方向モードでデプロイメントするための代替設定も示されています。

スタンドアロンデプロイメントファイルは、Streams for Apache Kafka で提供されます。05-Deployment-strimzi-topic-operator.yaml デプロイメントファイルを使用して、Topic Operator をデプロイします。Kafka クラスターへの接続に必要な環境変数を追加または設定します。

Topic Operator は、単一の namespace で KafkaTopic リソースを監視します。Topic Operator 設定で、監視する namespace と Kafka クラスターへの接続を指定します。1 つの Topic Operator が監視できるのは、namespace 1 つです。1 つの namespace を監視するのは、Top Operator 1 つのみとします。複数の Topic Operator を使用する場合は、それぞれが異なる namespace を監視するように設定します。このようにして、Topic Operator を複数の Kafka クラスターで使用できます。

前提条件

  • Topic Operator の接続先となる Kafka クラスターを実行している。

    スタンドアロンの Topic Operator が接続用に正しく設定されている限り、Kafka クラスターはベアメタル環境、仮想マシン、またはマネージドクラウドアプリケーションサービスで実行できます。

手順

  1. install/topic-operator/05-Deployment-strimzi-topic-operator.yaml スタンドアロンデプロイメントファイルの env プロパティーを編集します。

    スタンドアロンの Topic 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_FULL_RECONCILIATION_INTERVAL_MS 4
                  value: "120000"
                - name: STRIMZI_LOG_LEVEL 5
                  value: INFO
                - name: STRIMZI_TLS_ENABLED 6
                  value: "false"
                - name: STRIMZI_JAVA_OPTS 7
                  value: "-Xmx=512M -Xms=256M"
                - name: STRIMZI_JAVA_SYSTEM_PROPERTIES 8
                  value: "-Djavax.net.debug=verbose -DpropertyName=value"
                - name: STRIMZI_PUBLIC_CA 9
                  value: "false"
                - name: STRIMZI_TLS_AUTH_ENABLED 10
                  value: "false"
                - name: STRIMZI_SASL_ENABLED 11
                  value: "false"
                - name: STRIMZI_SASL_USERNAME 12
                  value: "admin"
                - name: STRIMZI_SASL_PASSWORD 13
                  value: "password"
                - name: STRIMZI_SASL_MECHANISM 14
                  value: "scram-sha-512"
                - name: STRIMZI_SECURITY_PROTOCOL 15
                  value: "SSL"
                - name: STRIMZI_USE_FINALIZERS
                  value: "false" 16

    1
    KafkaTopic リソースを監視する Topic Operator の OpenShift namespace。Kafka クラスターの namespace を指定します。
    2
    Kafka クラスターのすべてのブローカーを検出し、接続するブートストラップブローカーアドレスのホストとポートのペア。サーバーがダウンした場合に備えて、コンマ区切りリストを使用して 2 つまたは 3 つのブローカーアドレスを指定します。
    3
    Topic Operator によって管理される KafkaTopic リソースを識別するラベル。これは、Kafka クラスターの名前である必要はありません。KafkaTopic リソースに割り当てられたラベルにすることができます。複数の Topic Operator をデプロイする場合、ラベルはそれぞれに一意である必要があります。つまり、Operator は同じリソースを管理できません。
    4
    定期的な調整の間隔 (秒単位)。デフォルトは 120000 (2 分) です。
    5
    ロギングメッセージの出力レベル。レベルを、ERRORWARNINGINFODEBUG、または TRACE に設定できます。
    6
    Kafka ブローカーとの暗号化された通信の TLS サポートを有効にします。
    7
    (任意) Topic Operator を実行する JVM に使用される Java オプション。
    8
    (任意) Topic Operator に設定されたデバッグ (-D) オプション。
    9
    (オプション)TLS が STRIMZI_TLS_ENABLED によって有効になっている場合、トラストストア証明書の生成を省略します。この環境変数が有効になっている場合、ブローカーは TLS 証明書に公的に信頼できる認証局を使用する必要があります。デフォルトは false です。
    10
    (オプション) mTLS 認証用のキーストア証明書を生成します。これを false に設定すると、mTLS を使用した Kafka ブローカーへのクライアント認証が無効になります。デフォルトは true です。
    11
    (オプション)Kafka ブローカーに接続するときにクライアント認証の SASL サポートを有効にします。デフォルトは false です。
    12
    (任意) クライアント認証用の SASL ユーザー名。SASL が STRIMZI_SASL_ENABLED によって有効化された場合のみ必須です。
    13
    (任意) クライアント認証用の SASL パスワード。SASL が STRIMZI_SASL_ENABLED によって有効化された場合のみ必須です。
    14
    (任意) クライアント認証用の SASL メカニズム。SASL が STRIMZI_SASL_ENABLED によって有効化された場合のみ必須です。この値は plainscram-sha-256、または scram-sha-512 に設定できます。
    15
    (任意)Kafka ブローカーとの通信に使用されるセキュリティープロトコル。デフォルト値は PLAINTEXT です。値は PLAINTEXTSSLSASL_PLAINTEXT、または SASL_SSL に設定できます。
    16
    トピックの削除 を制御するためにファイナライザーを使用しない場合は、STRIMZI_USE_FINALIZERSfalse に設定します。
  2. 公開認証局から証明書を使用している Kafka ブ ローカーに接続する場合は、STRIMZI_PUBLIC_CAtrue に設定します。たとえば、Amazon AWS MSK サービスを使用している場合は、このプロパティーを true に設定します。
  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"
    # ...

    1
    トラストストアには、Kafka および ZooKeeper サーバー証明書の署名に使用される認証局の公開鍵が含まれます。
    2
    トラストストアにアクセスするためのパスワード。
    3
    キーストアには、mTLS 認証用の秘密鍵が含まれています。
    4
    キーストアにアクセスするためのパスワード。
  4. 変更を Deployment 設定に適用して、Topic Operator をデプロイします。
  5. デプロイメントのステータスを確認します。

    oc get deployments

    デプロイメント名と準備状態が表示されている出力

    NAME                    READY  UP-TO-DATE  AVAILABLE
    strimzi-topic-operator  1/1    1           1

    READY は、Ready/expected 状態のレプリカ数を表示します。AVAILABLE 出力に 1 が表示されれば、デプロイメントは成功しています。

6.8.1.1. 双方向トピック管理のためのスタンドアロン Topic Operator のデプロイ

双方向トピック管理では、クラスター管理に ZooKeeper が必要で、KafkaTopic リソースを通じて、および Kafka クラスター内でトピックを維持します。このモードで Topic Operator の使用に切り替える場合は、次の手順に従ってスタンドアロン Topic Operator をデプロイメントします。

注記

Topic Operator を単方向モードで実行できるようにする機能ゲートが一般提供に進むにつれて、双方向モードは段階的に廃止されます。この移行は、特に KRaft モードでの Kafka のサポートにおいて、ユーザーエクスペリエンスを向上させることを目的としています。

  1. 現在のスタンドアロン Topic Operator のデプロイを解除します。

    KafkaTopic リソースを保持します。これは、Topic Operator が再度デプロイされるときに Toppic Operator によって選択されます。

  2. スタンドアロン Topic Operator の Deployment 設定を編集して、ZooKeeper 関連の環境変数を含めます。

    • STRIMZI_ZOOKEEPER_CONNECT
    • STRIMZI_ZOOKEEPER_SESSION_TIMEOUT_MS
    • TC_ZK_CONNECTION_TIMEOUT_MS
    • STRIMZI_USE_ZOOKEEPER_TOPIC_STORE

      双方向 Topic Operator が使用されるかどうかを定義するのは、ZooKeeper 変数の有無です。一方向のトピック管理は ZooKeeper を使用しません。ZooKeeper 環境変数が存在しない場合は、一方向の Topic Operator が使用されます。それ以外の場合は、双方向の Topic 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

      双方向トピック管理のためのスタンドアロン Topic 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_ZOOKEEPER_CONNECT 1
                    value: my-cluster-zookeeper-client:2181
                  - name: STRIMZI_ZOOKEEPER_SESSION_TIMEOUT_MS 2
                    value: "18000"
                  - name: STRIMZI_TOPIC_METADATA_MAX_ATTEMPTS 3
                    value: "6"
                  - 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"

      1
      (ZooKeeper) ZooKeeper クラスターに接続するためのアドレスのホストおよびポートのペア。これは、Kafka クラスターが使用する ZooKeeper クラスターと同じである必要があります。
      2
      (ZooKeeper) ZooKeeper セッションのタイムアウト (ミリ秒単位)。デフォルトは 18000 (18 秒) です。
      3
      Kafka からトピックメタデータの取得を試行する回数。各試行の間隔は、指数バックオフとして定義されます。パーティションまたはレプリカの数が原因で、トピックの作成に時間がかかる場合は、この値を大きくすることを検討してください。デフォルトの試行回数は 6 回です。
  3. 変更を Deployment 設定に適用して、Topic Operator をデプロイします。

6.8.2. スタンドアロン User Operator のデプロイ

この手順では、ユーザー管理のスタンドアロンコンポーネントとして User Operator をデプロイする方法を説明します。Cluster Operator の管理対象外となっている Kafka クラスターでは、スタンドアロンの User Operator を使用します。

スタンドアロンデプロイメントは、任意の Kafka クラスターと操作できます。

スタンドアロンデプロイメントファイルは、Streams for Apache Kafka で提供されます。05-Deployment-strimzi-user-operator.yaml デプロイメントファイルを使用して、User Operator をデプロイします。Kafka クラスターへの接続に必要な環境変数を追加または設定します。

User Operator は、単一の namespace で KafkaUser リソースを監視します。User Operator 設定で、監視する namespace と Kafka クラスターへの接続を指定します。1 つの User Operator が監視できるのは、namespace 1 つです。1 つの namespace を監視するのは、User Operator 1 つのみとします。複数の User Operator を使用する場合は、それぞれが異なる namespace を監視するように設定します。このようにして、User Operator を複数の Kafka クラスターで使用できます。

前提条件

  • User Operator の接続先となる Kafka クラスターを実行している。

    スタンドアロンの User Operator が接続用に正しく設定されている限り、Kafka クラスターはベアメタル環境、仮想マシン、またはマネージドクラウドアプリケーションサービスで実行できます。

手順

  1. 以下の env プロパティーを install/user-operator/05-Deployment-strimzi-user-operator.yaml スタンドアロンデプロイメントファイルで編集します。

    スタンドアロン User 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

    1
    KafkaUser リソースを監視する User Operator の OpenShift namespace。指定できる namespace は 1 つだけです。
    2
    Kafka クラスターのすべてのブローカーを検出し、接続するブートストラップブローカーアドレスのホストとポートのペア。サーバーがダウンした場合に備えて、コンマ区切りリストを使用して 2 つまたは 3 つのブローカーアドレスを指定します。
    3
    mTLS 認証用の新しいユーザー証明書に署名する認証局の公開鍵 (ca.crt) 値を含む OpenShift Secret
    4
    mTLS 認証用の新しいユーザー証明書に署名する CA の秘密鍵 (ca.key) 値を含む OpenShift Secret
    5
    User Operator によって管理される KafkaUser リソースを識別するラベル。これは、Kafka クラスターの名前である必要はありません。KafkaUser リソースに割り当てられたラベルにすることができます。複数の User Operator をデプロイする場合、ラベルはそれぞれに一意である必要があります。つまり、Operator は同じリソースを管理できません。
    6
    定期的な調整の間隔 (秒単位)。デフォルトは 120000 (2 分) です。
    7
    コントローラーイベントキューのサイズ。キューのサイズは、User Operator が操作すると予想されるユーザーの最大数と少なくとも同じ大きさにする必要があります。デフォルトは 1024 です。
    8
    ユーザーを調整するためのワーカープールのサイズ。プールを大きくすると、より多くのリソースが必要になる可能性がありますが、より多くの KafkaUser リソースも処理されます。デフォルトは 50 です。
    9
    Kafka Admin API および OpenShift 操作のワーカープールのサイズ。プールを大きくすると、より多くのリソースが必要になる可能性がありますが、より多くの KafkaUser リソースも処理されます。デフォルトは 4 です。
    10
    ロギングメッセージの出力レベル。レベルを、ERRORWARNINGINFODEBUG、または TRACE に設定できます。
    11
    ガベッジコレクション (GC) ロギングを有効にします。デフォルトは true です。
    12
    CA の有効期間。デフォルトは 365 日です。
    13
    CA の更新期間。更新期間は、現在の証明書の有効期日から逆算されます。デフォルトでは、古い証明書が期限切れになる前の証明書の更新期間は 30 日です。
    14
    (任意) User Operator を実行する JVM に使用される Java オプション。
    15
    (任意) User Operator に設定されたデバッグ (-D) オプション。
    16
    (オプション)User Operator によって作成される OpenShift シークレットの名前の接頭辞。
    17
    (任意)Kafka クラスターが Kafka Admin API を使用した認可 ACL ルールの管理をサポートするかどうかを示します。false に設定すると、User Operator は simple 認可 ACL ルールを持つすべてのリソースを拒否します。これは、Kafka クラスターログで不要な例外を回避するのに役立ちます。デフォルトは true です。
    18
    (オプション) 期限切れのユーザー証明書が更新されるメンテナンス時間枠を定義する Cron 式のセミコロンで区切られたリスト。
    19
    (オプション) プロパティー形式で User Operator が使用する Kafka Admin クライアントを設定するための設定オプション。
  2. mTLS を使用して Kafka クラスターに接続する場合は、接続の認証に使用されるシークレットを指定します。それ以外の場合は、次のステップに進みます。

    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
    # ..."

    1
    Kafka ブローカー証明書に署名する CA の公開鍵 (ca.crt) 値を含む OpenShift Secret
    2
    Kafka クラスターに対する mTLS 認証に使用される証明書の公開鍵 (entity-operator.crt) と秘密鍵 (entity-operator.key) を含む OpenShift Secret
  3. User Operator をデプロイします。

    oc create -f install/user-operator
  4. デプロイメントのステータスを確認します。

    oc get deployments

    デプロイメント名と準備状態が表示されている出力

    NAME                   READY  UP-TO-DATE  AVAILABLE
    strimzi-user-operator  1/1    1           1

    READY は、Ready/expected 状態のレプリカ数を表示します。AVAILABLE 出力に 1 が表示されれば、デプロイメントは成功しています。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.