25.5. Cluster Operator のアップグレード
Cluster Operator をアップグレードするには、最初のデプロイ方法と同じ方法を使用します。
25.5.1. インストールファイルを使用した Cluster Operator のアップグレード
この手順では、Streams for Apache Kafka 2.7 を使用するように Cluster Operator デプロイメントをアップグレードする方法を説明します。
インストール YAML ファイルを使用して Cluster Operator をデプロイした場合は、以下の手順に従います。
Cluster Operator によって管理される Kafka クラスターの可用性は、アップグレード操作による影響を受けません。
特定バージョンの Streams for Apache Kafka をサポートするドキュメントを参照して、そのバージョンにアップグレードする方法を確認してください。
前提条件
- 既存の Cluster Operator デプロイメントを利用できる。
- Streams for Apache Kafka 2.7 のリリースアーティファクトをダウンロード した。
手順
-
既存の Cluster Operator リソース (
/install/cluster-operator
ディレクトリー内) に追加した設定変更を書留めておきます。すべての変更は、新しいバージョンの Cluster Operator によって上書きされます。 - カスタムリソースを更新して、Streams for Apache Kafka バージョン 2.7 で使用できるサポート対象の設定オプションを反映します。
Cluster Operator を更新します。
Cluster Operator を実行している namespace に従い、新しい Cluster Operator バージョンのインストールファイルを編集します。
Linux の場合は、以下を使用します。
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml
MacOS の場合は、以下を使用します。
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml
-
既存の Cluster Operator
Deployment
で 1 つ以上の環境変数を編集した場合、install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml
ファイルを編集し、これらの環境変数を使用します。
設定を更新したら、残りのインストールリソースとともにデプロイします。
oc replace -f install/cluster-operator
ローリング更新が完了するのを待ちます。
新しい Operator バージョンがアップグレード元の Kafka バージョンをサポートしなくなった場合、Cluster Operator はバージョンがサポートされていないことを示すエラーメッセージを返します。そうでない場合は、エラーメッセージは返されません。
エラーメッセージが返される場合は、新しい Cluster Operator バージョンでサポートされる Kafka バージョンにアップグレードします。
-
Kafka
カスタムリソースを編集します。 -
spec kafka.version
プロパティーをサポートされる Kafka バージョンに変更します。
-
- エラーメッセージが返されない場合は、次のステップに進みます。Kafka のバージョンを後でアップグレードします。
Kafka Pod のイメージを取得して、アップグレードが正常に完了したことを確認します。
oc get pods my-cluster-kafka-0 -o jsonpath='{.spec.containers[0].image}'
イメージタグに、新しい Streams for Apache Kafka バージョンと Kafka バージョンが表示されます。
registry.redhat.io/amq-streams/strimzi-kafka-37-rhel9:2.7.0
Cluster Operator はバージョン 2.7 にアップグレードされましたが、管理するクラスターで稼働している Kafka のバージョンは変更されていません。
25.5.2. OperatorHub を使用した Cluster Operator のアップグレード
OperatorHub から Streams for Apache Kafka をデプロイした場合、Operator Lifecycle Manager (OLM) を使用して、Streams for Apache Kafka Operator の更新チャネルを新しい Streams for Apache Kafka バージョンに変更します。
チャネルを更新すると、選択したアップグレード戦略に応じて、次のタイプのアップグレードのいずれかが開始されます。
- 自動アップグレード
- インストール開始前に承認が必要な手動アップグレード
安定した チャンネルに登録すると、チャンネルを変更せずに自動更新を取得できます。ただし、インストール前のアップグレード手順が失われる可能性があるため、自動更新を有効にすることは推奨しません。バージョン固有のチャネルでのみ自動アップグレードを使用します。
OperatorHub を使用した Operator のアップグレードについての詳細は、Upgrading installed Operators (OpenShift documentation) を参照してください。
25.5.3. 一方向のトピック管理への移行
Topic Operator をデプロイしてトピックを管理する場合、Cluster Operator はデフォルトで一方向のトピック管理を有効にします。双方向トピック管理を使用する Streams for Apache Kafka のバージョンから切り替える場合は、Cluster Operator のアップグレード後にいくつかのクリーンアップタスクを実行する必要があります。詳細は、「Topic Operator モード間の切り替え」 を参照してください。
25.5.4. Cluster Operator をアップグレードすると Kafka バージョンエラーが返される
Cluster Operator を、使用している Kafka の現在のバージョンをサポートしていないバージョンにアップグレードすると、サポートされていない Kafka バージョン エラーが発生します。このエラーはすべてのインストール方法に適用され、Kafka をサポートされている Kafka バージョンにアップグレードする必要があることを意味します。Kafka
リソースの spec.kafka.version
をサポートされているバージョンに変更します。
oc
を使用して、Kafka
リソースの ステータス
でこのようなエラーメッセージを確認できます。
エラーの Kafka ステータスの確認
oc get kafka <kafka_cluster_name> -n <namespace> -o jsonpath='{.status.conditions}'
<kafka_cluster_name> は、Kafka クラスターの名前に、<namespace> は、Pod が実行されている OpenShift namespace に置き換えます。
25.5.5. OperatorHub を使用した Streams for Apache Kafka 1.7 以前からのアップグレード
OperatorHub を使用して Streams for Apache Kafka 1.7 以前からアップグレードする場合に必要な操作
Streams for Apache Kafka Operator をバージョン 2.7 にアップグレードする前に、次の変更を行う必要があります。
-
カスタムリソースおよび CRD を
v1beta2
に変換します。 -
ControlPlaneListener
フィーチャーゲートが無効な Streams for Apache Kafka のバージョンにアップグレードします。
これらの要件については、「1.7 より前のバージョンの Streams for Apache Kafka からアップグレードする」 を参照してください。
Streams for Apache Kafka 1.7 以前からアップグレードする場合は、次の手順を実行します。
- Streams for Apache Kafka 1.7 にアップグレードします。
- Streams for Apache Kafka 1.8 に付属する Red Hat Streams for Apache Kafka API 変換ツール を、Streams for Apache Kafka ソフトウェアダウンロードページ からダウンロードします。
カスタムリソースおよび CRD を
v1beta2
に変換します。詳細は、Streams for Apache Kafka 1.7 のアップグレードドキュメント を参照してください。
- OperatorHub で、Streams for Apache Kafka Operator のバージョン 1.7 を削除します。
Streams for Apache Kafka Operator のバージョン 2.7 も存在する場合は削除します。
存在しない場合は、次のステップに進みます。
Streams for Apache Kafka Operator の Approval Strategy が Automatic に設定されている場合、Operator のバージョン 2.7 がクラスター内にすでに存在している可能性があります。リリース前にカスタムリソースおよび CRD を
v1beta2
API バージョンに 変換しなかった 場合、Operator が管理するカスタムリソースおよび CRD は古い API バージョンを使用します。その結果、2.7 Operator は Pending ステータスで停止します。このような場合、Streams for Apache Kafka Operator のバージョン 1.7 だけでなくバージョン 2.7 も削除する必要があります。両方の Operator を削除すると、新しい Operator バージョンがインストールされるまで、調整は一時停止されます。カスタムリソースへの変更が遅延しないように、次の手順を直ちに実行します。
OperatorHub で、次のいずれかを実行します。
-
Streams for Apache Kafka Operator のバージョン 1.8 (
ControlPlaneListener
フィーチャーゲートがデフォルトで無効) にアップグレードします。 -
ControlPlaneListener
フィーチャーゲートを無効にして、Streams for Apache Kafka Operator のバージョン 2.0 または 2.2 (ControlPlaneListener
フィーチャーゲートがデフォルトで有効) にアップグレードします。
-
Streams for Apache Kafka Operator のバージョン 1.8 (
速やかに Streams for Apache Kafka Operator のバージョン 2.7 にアップグレードします。
インストールされた 2.7 Operator はクラスターの監視を開始し、ローリング更新を実行します。このプロセス中に、クラスターのパフォーマンスが一時的に低下する場合があります。