第15章 AMQ Streams リソースのアップグレード

本リリースの AMQ Streams では、API バージョン kafka.strimzi.io/v1alpha1 を使用するリソースを更新して kafka.strimzi.io/v1beta1 を使用するようにする必要があります。

kafka.strimzi.io/v1alpha1 API バージョンは非推奨になりました。

ここでは、リソースのアップグレード手順を説明します。

重要

リソースのアップグレードは、Cluster Operator をアップグレードしてから実施する 必要 があります。これにより、Cluster Operator がリソースを認識できるようになります。

リソースのアップグレードが実施されない場合

アップグレードが実施されない場合、apiVersion を更新するまでリソースを更新できないことを示す警告が、調整に関するログに記録されます。

更新をトリガーするには、カスタムリソースにアノテーション追加などの表面的な変更を加えます。

アノテーションの例:

metadata:
  # ...
  annotations:
    upgrade: "Upgraded to kafka.strimzi.io/v1beta1"

15.1. Kafka リソースのアップグレード

前提条件

  • v1beta1 API バージョンをサポートする Cluster Operator が稼働している必要があります。

手順

デプロイメントの Kafka リソースごとに以下の手順を実行します。

  1. エディターで Kafka リソースを更新します。

    oc edit kafka my-cluster
  2. 以下の行を見つけます。

    apiVersion: kafka.strimzi.io/v1alpha1

    この行を以下の行に変更します。

    apiVersion:kafka.strimzi.io/v1beta1
  3. Kafka リソースに以下があるか確認します。

    Kafka.spec.topicOperator

    ある場合は以下に変更します。

    Kafka.spec.entityOperator.topicOperator

    たとえば、以下がある場合を考えてみましょう。

    spec:
      # ...
      topicOperator: {}

    この行を以下の行に変更します。

    spec:
      # ...
      entityOperator:
        topicOperator: {}
  4. 以下があるか確認します。

    Kafka.spec.entityOperator.affinity
    Kafka.spec.entityOperator.tolerations

    あれば以下に変更します。

    Kafka.spec.entityOperator.template.pod.affinity
    Kafka.spec.entityOperator.template.pod.tolerations

    たとえば、以下の場合を考えてみましょう。

    spec:
      # ...
      entityOperator:
        affinity {}
        tolerations {}

    これを以下に変更します。

    spec:
      # ...
      entityOperator:
        template:
          pod:
            affinity {}
            tolerations {}
  5. 以下があるか確認します。

    Kafka.spec.kafka.affinity
    Kafka.spec.kafka.tolerations

    あれば以下に変更します。

    Kafka.spec.kafka.template.pod.affinity
    Kafka.spec.kafka.template.pod.tolerations

    たとえば、以下の場合を考えてみましょう。

    spec:
      # ...
      kafka:
        affinity {}
        tolerations {}

    これを以下に変更します。

    spec:
      # ...
      kafka:
        template:
          pod:
            affinity {}
            tolerations {}
  6. 以下があるか確認します。

    Kafka.spec.zookeeper.affinity
    Kafka.spec.zookeeper.tolerations

    あれば以下に変更します。

    Kafka.spec.zookeeper.template.pod.affinity
    Kafka.spec.zookeeper.template.pod.tolerations

    たとえば、以下の場合を考えてみましょう。

    spec:
      # ...
      zookeeper:
        affinity {}
        tolerations {}

    これを以下に変更します。

    spec:
      # ...
      zookeeper:
        template:
          pod:
            affinity {}
            tolerations {}
  7. ファイルを保存し、エディターを終了して更新したリソースが調整されるのを待ちます。

15.2. Kafka Connect リソースのアップグレード

前提条件

  • v1beta1 API バージョンをサポートする Cluster Operator が稼働している必要があります。

手順

デプロイメントの KafkaConnect リソースごとに以下の手順を実行します。

  1. エディターで KafkaConnect リソースを更新します。

    oc edit kafkaconnect my-connect
  2. 以下の行を見つけます。

    apiVersion: kafka.strimzi.io/v1alpha1

    この行を以下の行に変更します。

    apiVersion:kafka.strimzi.io/v1beta1
  3. 以下があるか確認します。

    KafkaConnect.spec.affinity
    KafkaConnect.spec.tolerations

    あれば以下に変更します。

    KafkaConnect.spec.template.pod.affinity
    KafkaConnect.spec.template.pod.tolerations

    たとえば、以下の場合を考えてみましょう。

    spec:
      # ...
      affinity {}
      tolerations {}

    これを以下に変更します。

    spec:
      # ...
      template:
        pod:
          affinity {}
          tolerations {}
  4. ファイルを保存し、エディターを終了して更新したリソースが調整されるのを待ちます。

15.3. Kafka Connect S2I リソースのアップグレード

前提条件

  • v1beta1 API バージョンをサポートする Cluster Operator が稼働している必要があります。

手順

デプロイメントの KafkaConnectS2I リソースごとに以下の手順を実行します。

  1. エディターで KafkaConnectS2I リソースを更新します。

    oc edit kafkaconnects2i my-connect
  2. 以下の行を見つけます。

    apiVersion: kafka.strimzi.io/v1alpha1

    この行を以下の行に変更します。

    apiVersion:kafka.strimzi.io/v1beta1
  3. 以下があるか確認します。

    KafkaConnectS2I.spec.affinity
    KafkaConnectS2I.spec.tolerations

    あれば以下に変更します。

    KafkaConnectS2I.spec.template.pod.affinity
    KafkaConnectS2I.spec.template.pod.tolerations

    たとえば、以下の場合を考えてみましょう。

    spec:
      # ...
      affinity {}
      tolerations {}

    これを以下に変更します。

    spec:
      # ...
      template:
        pod:
          affinity {}
          tolerations {}
  4. ファイルを保存し、エディターを終了して更新したリソースが調整されるのを待ちます。

15.4. Kafka MirrorMaker リソースのアップグレード

前提条件

  • v1beta1 API バージョンをサポートする Cluster Operator が稼働している必要があります。

手順

デプロイメントの KafkaMirrorMaker リソースごとに以下の手順を実行します。

  1. エディターで KafkaMirrorMaker リソースを更新します。

    oc edit kafkamirrormaker my-connect
  2. 以下の行を見つけます。

    apiVersion: kafka.strimzi.io/v1alpha1

    この行を以下の行に変更します。

    apiVersion:kafka.strimzi.io/v1beta1
  3. 以下があるか確認します。

    KafkaConnectMirrorMaker.spec.affinity
    KafkaConnectMirrorMaker.spec.tolerations

    あれば以下に変更します。

    KafkaConnectMirrorMaker.spec.template.pod.affinity
    KafkaConnectMirrorMaker.spec.template.pod.tolerations

    たとえば、以下の場合を考えてみましょう。

    spec:
      # ...
      affinity {}
      tolerations {}

    これを以下に変更します。

    spec:
      # ...
      template:
        pod:
          affinity {}
          tolerations {}
  4. ファイルを保存し、エディターを終了して更新したリソースが調整されるのを待ちます。

15.5. Kafka Topic リソースのアップグレード

前提条件

  • v1beta1 API バージョンをサポートする Topic Operator が稼働している必要があります。

手順

デプロイメントの KafkaTopic リソースごとに以下の手順を実行します。

  1. エディターで KafkaTopic リソースを更新します。

    oc edit kafkatopic my-topic
  2. 以下の行を見つけます。

    apiVersion: kafka.strimzi.io/v1alpha1

    この行を以下の行に変更します。

    apiVersion:kafka.strimzi.io/v1beta1
  3. ファイルを保存し、エディターを終了して更新したリソースが調整されるのを待ちます。

15.6. Kafka User リソースのアップグレード

前提条件

  • v1beta1 API バージョンをサポートする User Operator が稼働している必要があります。

手順

デプロイメントの KafkaUser リソースごとに以下の手順を実行します。

  1. エディターで KafkaUser リソースを更新します。

    oc edit kafkauser my-user
  2. 以下の行を見つけます。

    apiVersion: kafka.strimzi.io/v1alpha1

    この行を以下の行に変更します。

    apiVersion:kafka.strimzi.io/v1beta1
  3. ファイルを保存し、エディターを終了して更新したリソースが調整されるのを待ちます。