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 クラスターはベアメタル環境、仮想マシン、またはマネージドクラウドアプリケーションサービスで実行できます。
手順
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
- ロギングメッセージの出力レベル。レベルを、
ERROR
、WARNING
、INFO
、DEBUG
、または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
によって有効化された場合のみ必須です。この値はplain
、scram-sha-256
、またはscram-sha-512
に設定できます。 - 15
- (任意)Kafka ブローカーとの通信に使用されるセキュリティープロトコル。デフォルト値は PLAINTEXT です。値は
PLAINTEXT
、SSL
、SASL_PLAINTEXT
、またはSASL_SSL
に設定できます。 - 16
-
公開認証局から証明書を使用している Kafka ブ ローカーに接続する場合は、
STRIMZI_PUBLIC_CA
をtrue
に設定します。たとえば、Amazon AWS MSK サービスを使用している場合は、このプロパティーをtrue
に設定します。 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" # ...
-
変更を
Deployment
設定に適用して、Topic Operator をデプロイします。 デプロイメントのステータスを確認します。
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 のサポートにおいて、ユーザーエクスペリエンスを向上させることを目的としています。
現在のスタンドアロン Topic Operator のデプロイを解除します。
KafkaTopic
リソースを保持します。これは、Topic Operator が再度デプロイされるときに Toppic Operator によって選択されます。スタンドアロン 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
回です。
-
-
変更を
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 クラスターはベアメタル環境、仮想マシン、またはマネージドクラウドアプリケーションサービスで実行できます。
手順
以下の
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
) 値を含む OpenShiftSecret
。 - 4
- mTLS 認証用の新しいユーザー証明書に署名する CA の秘密鍵 (
ca.key
) 値を含む OpenShiftSecret
。 - 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
- ロギングメッセージの出力レベル。レベルを、
ERROR
、WARNING
、INFO
、DEBUG
、または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 クライアントを設定するための設定オプション。
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 # ..."
User Operator をデプロイします。
oc create -f install/user-operator
デプロイメントのステータスを確認します。
oc get deployments
デプロイメント名と準備状態が表示されている出力
NAME READY UP-TO-DATE AVAILABLE strimzi-user-operator 1/1 1 1
READY
は、Ready/expected 状態のレプリカ数を表示します。AVAILABLE
出力に1
が表示されれば、デプロイメントは成功しています。