Anthos(GKE Enterprise):Cloud Service Meshをアップグレードする
Cloud Service Meshバージョンのアップグレード方法について説明します。ここでは、管理クラスターのアップグレード手順を説明しますが、ユーザークラスターについても同様の手順でアップグレードできます。
アップグレードの手順にはアプリケーションが稼働しているネームスペースの操作やPodの再起動が含まれています。
ここでは、Cloud Service Meshを利用する によってサンプルアプリケーションが稼働している環境を前提に説明します。
なお、Cloud Service Meshを利用する では、ゲートウェイをデプロイしてないため、本手順にはゲートウェイのアップグレード手順は含まれません。お客様がゲートウェイをデプロイしている場合は、別途アップグレードが必要です。
詳細は、Google Cloud: ゲートウェイをアップグレードする を参照してください。
ステップ1:データをバックアップ
データをバックアップする を参考にして、データをバックアップします。
ステップ2:Cloud Service Meshバージョンをアップグレード
コントロールパネル左上のプルダウンメニューから「Catalog」を選択します。
左メニューから「リソースグループ」を選択します。
アップグレードしたいクラスターがあるリソースグループ名のリンクをクリックします。
Cloud Service Meshをアップグレードするクラスターを選択し、「選択したクラスターの操作」のプルダウンから「Cloud Service Meshバージョンアップグレード」を選択します。
アップグレード先のバージョンを選択し、「アップグレードする」チェックボックスをチェックします。その後、「OK」ボタンをクリックします。
クラスターのステータスが「設定変更中」から「稼働中」になれば、アップグレードは完了です。
ステップ3:新しいCloud Service Meshバージョンへの切り替え
ステップ2 で Google Cloud: デフォルトの機能と Mesh CA を使用してアップグレードする の手順が完了しました。
以降は、Google Cloud: 新しいコントロール プレーンに切り替える の手順に従って実施していきます。
管理ワークステーションにSSHログインします。
istiod
のリビジョンラベルを出力し、REVを確認します。$ kubectl get pod -n istio-system -L istio.io/rev NAME READY STATUS RESTARTS AGE REV istiod-asm-1196-2-6f58b6fd6f-6xl26 1/1 Running 0 4h11m asm-1196-2 istiod-asm-1196-2-6f58b6fd6f-fzlf5 1/1 Running 0 4h10m asm-1196-2 istiod-asm-1206-0-5cbb6b6859-62m7z 1/1 Running 0 26m asm-1206-0 istiod-asm-1206-0-5cbb6b6859-j7nc9 1/1 Running 0 26m asm-1206-0
新旧のリビジョンを変数に設定します。
$ NEW_REVISION=asm-1206-0 # 新しいREV $ OLD_REVISION=asm-1196-2 # 古いREV
アプリケーションの名前空間に新しいバージョンのリビジョンラベルを適用します。
$ kubectl label namespace sample istio.io/rev=${NEW_REVISION} --overwrite
Podを再起動して再インジェクションを開始します。
$ kubectl rollout restart deployment -n sample
アプリケーションの動作を確認します。
$ kubectl run curl --image=curlimages/curl -it --rm -- sh $ curl hello.sample.svc Hello Kubernetes!
下記のディレクトリに移動します。
例: /opt/nifcloud-catalog/asm/asm-admincluster-001/1.20.6-asm.0$ cd /opt/nifcloud-catalog/asm/<クラスター名>/<新しいCloud Service Meshバージョン>
新しいコントロールプレーンを使用するように検証Webhookを構成します。
$ kubectl apply -f asm/istio/istiod-service.yaml
デフォルトのタグを新しいバージョンへ移動します。
$ ./istioctl tag set default --revision ${NEW_REVISION} --overwrite
古いバージョンの istiod を削除します。
$ kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${OLD_REVISION} -n istio-system --ignore-not-found=true $ kubectl delete validatingwebhookconfiguration istio-validator-${OLD_REVISION}-istio-system -n istio-system --ignore-not-found=true
古いバージョンの IstioOperator 構成を削除します。
$ kubectl delete IstioOperator installed-state-${OLD_REVISION} -n istio-system --ignore-not-found=true
古いバージョンを削除後に、アプリケーションが正常に動作しているか確認します。
$ kubectl run curl --image=curlimages/curl -it --rm -- sh $ curl hello.sample.svc Hello Kubernetes!