2022/09/06

[GKE]Kafka Strimziをアップグレードする

k8skafkagke

以前導入したKafka Strimzi 0.26.0を0.30.0にアップグレードしました。

以下手順を備忘録がてら記載しておきます。

リリース内容の確認

まずはリリース内容の確認をします。

次に公式ドキュメントで、cluster operatorのアップグレードの仕方が記載してあったので、それを読みました。

作業内容

設定ファイルの変更

  • strimzi-0.30.0.tar.gz をダウンロードします。
  • 解凍して、install/cluster-operatorに対して作業をします。
    • 前回デプロイした0.26.0ベースの設定ファイルに上書きをしていくのですが、特に以下の設定を上書きしないように注意しました。

060-Deployment-strimzi-cluster-operator.yamlSTRIMZI_NAMESPACE

           env:
             # 以下は前回の変更を残しておく必要がある
             - name: STRIMZI_NAMESPACE
               value: app1,app2

設定ファイルの反映をデプロイ

設定ファイルの変更が完了したら、以下を実行しました。

# 042-Crd-strimzipodset.yaml は追加のファイルだったので、新規追加
% kubectl apply -f kafka-operator/install/cluster-operator/042-Crd-strimzipodset.yaml

# 一括更新
% kubectl replace -f kafka-operator/install/cluster-operator/

kafka-clusterをローリングアップデート

最後は、このページの10.5. Upgrading Kafkaの内容に沿ってclusterのバージョンを更新して反映させました。

  • spec.kafka.versionspec.config.inter.broker.protocol.versionを変更する感じです。

最終的に以下のようになりました。

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: kafka-cluster
  namespace: app1
spec:
  kafka:
    version: 3.2.0
    replicas: 1
    listeners:
      - name: plain
        port: 9092
        type: internal
        tls: false
#     - name: tls
#       port: 9093
#       type: internal
#       tls: true
    config:
      offsets.topic.replication.factor: 1
      transaction.state.log.replication.factor: 1
      transaction.state.log.min.isr: 1
      default.replication.factor: 1
      min.insync.replicas: 1
      inter.broker.protocol.version: "3.2"
    storage:
      type: jbod
      volumes:
      - id: 0
        type: persistent-claim
        class: pd-ssd
        size: 20Gi
        deleteClaim: false
    # 以下の設定はオプションです。
    template:
      pod:
        affinity:
          nodeAffinity:
            requiredDuringSchedulingIgnoredDuringExecution:
              nodeSelectorTerms:
                - matchExpressions:
                    - key: "cloud.google.com/gke-nodepool"
                      operator: In
                      values:
                        - your-node-name
  zookeeper:
    replicas: 1
    storage:
      type: persistent-claim
      class: pd-ssd
      size: 20Gi
      deleteClaim: false
    # 以下の設定はオプションです。
    template:
      pod:
        affinity:
          nodeAffinity:
            requiredDuringSchedulingIgnoredDuringExecution:
              nodeSelectorTerms:
                - matchExpressions:
                    - key: "cloud.google.com/gke-nodepool"
                      operator: In
                      values:
                        - your-node-name
  entityOperator:
    topicOperator: {}
    userOperator: {}

感想

作業前は「更新作業しなくちゃいけない心理的圧迫感」があったものの、終わってみれば結構あっさりできたので良かったです。
流石にここら辺はよく考えられていて、アップグレードもとてもスムーズにできました。