25.6. KRaft ベースの Kafka クラスターとクライアントアプリケーションのアップグレード
KRaft ベースの Streams for Apache Kafka クラスターを、サポートされている新しい Kafka バージョンと KRaft メタデータバージョンにアップグレードします。
クライアントをアップグレードするストラテジー を選択する必要もあります。Kafka クライアントは、この手順の 6 でアップグレードされます。
KRaft ベースのアップグレードのサポートに関する最新情報は、Apache Kafka のドキュメントを参照してください。
前提条件
- Cluster Operator が稼働中である。
-
Streams for Apache Kafka クラスターをアップグレードする前に、
Kafka
リソースのプロパティーに、新しい Kafka バージョンでサポートされていない設定オプションが 含まれていない ことを確認した。
手順
Kafka クラスター設定を更新します。
oc edit kafka <kafka_configuration_file>
設定されている場合は、現在の
spec.kafka.metadataVersion
が、アップグレード先の Kafka のバージョンでサポートされているバージョンに設定されていることを確認してください。たとえば、Kafka バージョン 3.6.0 から 3.7.0 にアップグレードする場合、現在のバージョンは 3.6-IV2 です。
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: replicas: 3 metadataVersion: 3.6-IV2 version: 3.6.0 # ...
metadataVersion
が設定されていない場合、次のステップで Kafka バージョンを更新した後、Streams for Apache Kafka はそれを現在のデフォルトに自動的に更新します。注記metadataVersion
の値は、浮動小数点数として解釈されないように文字列にする必要があります。Kafka.spec.kafka.version
を変更して、新しい Kafka バージョンを指定します。現在の Kafka バージョンでは、metadataVersion
をデフォルトのままにしておきます。注記kafka.version
を変更すると、クラスターのすべてのブローカーがアップグレードされ、新しいブローカーバイナリーの使用が開始されます。このプロセスでは、一部のブローカーは古いバイナリーを使用し、他のブローカーはすでに新しいバイナリーにアップグレードされています。metadataVersion
を現在の設定のままにしておくと、Kafka ブローカーとコントローラーがアップグレード中も相互に通信し続けることができます。たとえば、Kafka 3.6.0 から 3.7.0 にアップグレードする場合:
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: replicas: 3 metadataVersion: 3.6-IV2 1 version: 3.7.0 2 # ...
Kafka クラスターのイメージが
Kafka.spec.kafka.image
のKafka
カスタムリソースで定義されている場合、image
を更新して、新しい Kafka バージョンでコンテナーイメージを示すようにします。Kafka バージョンおよびイメージマッピング を参照してください。
保存してエディターを終了し、ローリング更新による Kafka ノードのアップグレードが完了するまで待ちます。
Pod の状態の遷移を監視して、ローリング更新の進捗を確認します。
oc get pods my-cluster-kafka-0 -o jsonpath='{.spec.containers[0].image}'
ローリング更新により、各 Pod が新バージョンの Kafka のブローカーバイナリーを使用するようになります。
クライアントのアップグレードに選択したストラテジー に応じて、新バージョンのクライアントバイナリーを使用するようにすべてのクライアントアプリケーションをアップグレードします。
必要に応じて、Kafka Connect および MirrorMaker の
version
プロパティーを新バージョンの Kafka として設定します。-
Kafka Connect では、
KafkaConnect.spec.version
を更新します。 -
MirrorMaker では、
KafkaMirrorMaker.spec.version
を更新します。 MirrorMaker 2 の場合は、
KafkaMirrorMaker2.spec.version
を更新します。注記手動でビルドしたカスタムイメージを使用している場合は、最新の Streams for Apache Kafka ベースイメージを使用してそのイメージを最新の状態にするために、イメージを再ビルドする必要があります。たとえば、Kafka Connect のベースイメージからコンテナーイメージを作成した 場合は、最新のベースイメージとビルド設定を参照するように Dockerfile を更新します。
-
Kafka Connect では、
- アップグレードされたクライアントアプリケーションが新しい Kafka ブローカーで正しく動作することを確認します。
設定されている場合は、新しい
metadataVersion
バージョンを使用するように Kafka リソースを更新します。それ以外の場合は、ステップ 9 に進みます。たとえば、Kafka 3.7.0 にアップグレードする場合:
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: replicas: 3 metadataVersion: 3.7-IV2 version: 3.7.0 # ...
警告ダウングレードできない可能性があるため、
metadataVersion
を変更する場合は注意してください。新しい Kafka バージョンのmetadataVersion
が、ダウングレード先の Kafka バージョンよりも高い場合は、Kafka をダウングレードすることができません。ただし、古いバージョンを維持する場合は、サポートと互換性に潜在的な影響があることを理解してください。Cluster Operator によってクラスターが更新されるまで待ちます。