10.9. Topic Operator モード間の切り替え
Streams for Apache Kafka をアップグレードまたはダウングレードするとき、または同じバージョンの Streams for Apache Kafka を使用するときに、そのバージョンでモードがサポートされている限り、トピック管理モードを切り替えることができます。
双方向トピック管理モードから一方向トピック管理モードへの切り替え
UnidirectionalTopicOperator
フィーチャーゲートを有効にします。Cluster Operator は、Topic Operator とともに Entity Operator を一方向トピック管理モードでデプロイします。
双方向トピック管理モードで実行される Topic Operator をサポートする内部トピックは不要になったので、
KafkaTopic
リソースを削除して管理できます。oc delete $(oc get kt -n <namespace_name> -o name | grep strimzi-store-topic) \ && oc delete $(oc get kt -n <namespace_name> -o name | grep strimzi-topic-operator)
このコマンドは、名前が
strimzi-store-topic
およびstrimzi-topic-operator
で始まる内部トピックを削除します。コンシューマーオフセットとトランザクション状態を保存するための内部トピックは、Kafka で保持する必要があります。したがって、
KafkaTopic
リソースを削除する前に、まず Topic Operator による管理を中止する必要があります。トピックの管理を停止します。
oc annotate $(oc get kt -n <namespace_name> -o name | grep consumer-offsets) strimzi.io/managed="false" \ && oc annotate $(oc get kt -n <namespace_name> -o name | grep transaction-state) strimzi.io/managed="false"
KafkaTopic
リソースにstrimzi.io/managed="false"
のアノテーションを指定して、Topic Operator がそれらのトピックを管理しないことを指定します。この場合、内部トピックを管理するためのアノテーションを、consumer-offsets
とtransaction-state
で始まる名前のリソースに追加します。管理が中断された場合は、
KafkaTopic
リソースを削除します (Kafka 内のトピックは削除されません)。oc delete $(oc get kt -n <namespace_name> -o name | grep consumer-offsets) \ && oc delete $(oc get kt -n <namespace_name> -o name | grep transaction-state)
一方向から双方向トピック管理モードへの切り替え
UnidirectionalTopicOperator
フィーチャーゲートを無効にします。Cluster Operator では、Topic Operator とともに Entity Operator を双方向のトピック管理モードでデプロイします。
双方向トピック管理モードで実行される Topic Operator に必要な内部トピックが作成されます。
トピックの削除を制御するためにファイナライザーが使用されているかどうかを確認します。
KafkaTopic
リソースがファイナライザーを使用している場合は、切り替え後に必ず次のいずれかを実行してください。- トピックからすべてのファイナライザーを削除します。
Topic Operator の
env
設定でSTRIMZI_USE_FINALIZERS
環境変数をfalse
に設定して、ファイナライザーを無効にします。Streams for Apache Kafka が管理するクラスター内で実行されている Topic Operator、またはスタンドアロンデプロイメントとして実行されている Topic Operator に、同じ設定を使用してください。
Streams for Apache Kafka が管理するクラスターでトピックファイナライザーを無効にする
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: # ... entityOperator: topicOperator: {} userOperator: {} template: topicOperatorContainer: env: - name: STRIMZI_USE_FINALIZERS value: "false" # ...
スタンドアロンデプロイメントでのトピックファイナライザーの無効化
apiVersion: apps/v1 kind: Deployment metadata: name: strimzi-topic-operator spec: template: spec: containers: - name: STRIMZI_USE_FINALIZERS value: "false" # ...
Topic Operator は双方向モードでファイナライザーを使用しません。一方向モードから切り替えを行った後にファイナライザーが保持されている場合は、
KafkaTopic
と関連リソースを削除できません。
Topic Operator モード間の切り替え後に、トピックを作成して、Operator が正常に実行されていることを確認します。詳細は、「Kafka トピックの設定」 を参照してください。