マルチクラスタVerrazzanoのアップグレード
マルチクラスタVerrazzano環境をアップグレードする方法
Verrazzanoのインストールは、cert-managerなどのコンポーネントのスタックで構成されます。各コンポーネントには特定のリリース・バージョンがあり、Verrazzano全体のバージョンとは異なる場合があります。Verrazzanoプラットフォーム・オペレータは、Verrazzanoバージョンに関連付けられた各コンポーネントのバージョンを認識しています。最初のVerrazzanoインストールを実行すると、プラットフォーム・オペレータによって各コンポーネントの適切なバージョンがインストールされます。インストール後、1つ以上のコンポーネント・イメージまたはHelmチャートを更新する必要がある場合があります。この更新は、プラットフォーム・オペレータによっても行われ、upgrade
と呼ばれます。現在、Verrazzanoはパッチレベルのアップグレードのみを行います。ここでは、コンポーネントに対してhelm upgrade
コマンドを発行できます。通常、パッチレベルのアップグレードでは、コンポーネント・イメージが新しいバージョンに置き換えられます。
Verrazzano 1.0.xを1.1.0にアップグレードすると、Istioが1.7.3から1.10.4にアップグレードされます。このため、新しいEnvoyプロキシ・サイドカーをポッドに注入できるように、Istioメッシュ内のすべてのポッドを再起動する必要があります。これには、Verrazzanoアプリケーションと、NGINX Ingress ControllerなどのVerrazzanoシステム・ポッドが含まれます。WebLogicワークロードの場合、Verrazzanoはすべてのドメインを停止し、アップグレードを実行してから、すべてのドメインを起動します。他のすべてのワークロードの場合、Verrazzanoはアップグレードの完了時にローリング再起動を実行します。これは、アプリケーションの再起動に関連するユーザーが関与することはなく、アップグレード時に自動的に行われます。
Verrazzanoプラットフォーム・オペレータの更新とVerrazzanoインストールのアップグレードを区別することが重要です。プラットフォーム・オペレータには、新しいコンポーネント・チャートおよびイメージ・バージョンが含まれるため、インストールをアップグレードする前に更新する必要があります。プラットフォーム・オペレータを更新しても、Verrazzanoインストールのアップグレードが開始されるまで、既存のインストールには影響しません。現在、プラットフォーム・オペレータの更新またはVerrazzanoのインストール・アップグレードをロールバックする方法はありません。
既存のVerrazzanoインストールのアップグレードは、次の2ステップのプロセスです:
既存のVerrazzanoインストールをアップグレードするには、まずVerrazzanoプラットフォーム・オペレータを更新する必要があります。
Verrazzanoプラットフォーム・オペレータを更新します。
ノート: プライベート・コンテナ・レジストリを使用している場合は、プラットフォーム・オペレータを更新するには、プライベート・レジストリの使用の手順に従います。
最新バージョンに更新するには:
$ kubectl apply -f https://github.com/verrazzano/verrazzano/releases/download/v1.1.2/operator.yaml
特定のバージョンに更新するには(<version>
が目的のバージョンです):
$ kubectl apply -f https://github.com/verrazzano/verrazzano/releases/download/<version>/operator.yaml
デプロイが完了するまで待ちます。
$ kubectl -n verrazzano-install rollout status deployment/verrazzano-platform-operator
# Expected response
deployment "verrazzano-platform-operator" successfully rolled out
オペレータ・ポッドが正しく定義され、実行中であることを確認します。
$ kubectl -n verrazzano-install get pods
# Sample output
NAME READY STATUS RESTARTS AGE
verrazzano-platform-operator-59d5c585fd-lwhsx 1/1 Running 0 114s
Verrazzanoインストールをアップグレードするには、インストールされているVerrazzanoリソースのバージョンをVerrazzanoプラットフォーム・オペレータでサポートされているバージョンに変更する必要があります。
ノート: アップグレード時、バージョン・フィールドのみ変更できます。現時点では、他のフィールドやコンポーネント構成への変更はサポートされていません。
1つの簡単なステップで、次のコマンドを使用して、指定したバージョンのVerrazzanoにアップグレードできます:
$ kubectl patch vz example-verrazzano -p '{"spec":{"version":"v1.1.2"}}' --type=merge
または、次のステップを使用して、Verrazzanoインストールをアップグレードできます:
Verrazzano
リソースを希望するバージョンに更新します。
Verrazzanoコンポーネントをアップグレードするには、Verrazzano
リソース仕様のversion
フィールドを、アップグレードしたプラットフォーム・オペレータがサポートしているバージョンと一致するように更新し、クラスタに適用する必要があります。
リソース仕様のversion
フィールドの値は、有効なVerrazzanoリリース・バージョンに対応するセマンティック・バージョニング値である必要があります。
次のいずれかの方法でリソースを更新できます:
a.Verrazzanoのインストールに使用したYAMLファイルを編集し、バージョン・フィールドを最新バージョンに設定します。
たとえば、v1.1.2
にアップグレードするには、YAMLファイルを編集してバージョン・フィールドを追加または更新する必要があります:
apiVersion: install.verrazzano.io/v1alpha1
kind: Verrazzano
metadata:
name: example-verrazzano
spec:
profile: dev
version: v1.1.2
次に、リソースをクラスタに適用します(kubectl edit
を使用してリソースをインプレースで編集していない場合):
$ kubectl apply -f example-verrazzano.yaml
b.kubectl
を使用してVerrazzano
リソースを直接編集し、バージョン・フィールドを直接設定します。たとえば:
$ kubectl edit verrazzano example-verrazzano
# In the resource editor, add or update the version field to "version: v1.1.2", then save.
アップグレードが完了するまで待ちます:
$ kubectl wait \
--timeout=10m \
--for=condition=UpgradeComplete verrazzano/example-verrazzano
エラーが発生した場合は、ログ出力を確認します:
$ kubectl logs -n verrazzano-install \
-f $(kubectl get pod \
-n verrazzano-install \
-l app=verrazzano-platform-operator \
-o jsonpath="{.items[0].metadata.name}") | grep '"operation":"install"'
アップグレードが失敗すると、次のように表示されます:
$ kubectl get vz
# Sample output
NAME STATUS VERSION
example-verrazzano UpgradeFailed v1.1.1
注釈verrazzano.io/upgrade-retry-version
を一意の値に設定することで、アップグレードを再開できます。たとえば:
$ kubectl patch vz example-verrazzano -p '{"metadata":{"annotations": {"verrazzano.io/upgrade-retry-version":"v1.1.2-1"} }}' --type=merge
verrazzano-system
ネームスペースのすべてのポッドがRunning
状態であることを確認します。アップグレードの進行中は、新しいバージョンのコンポーネントが適用されるため、いくつかのポッドが終了し、再起動する場合があります。次に例を示します:
$ kubectl get pods -n verrazzano-system
# Sample output
coherence-operator-866798c99d-r69xt 1/1 Running 1 43m
fluentd-f9fbv 2/2 Running 0 38m
fluentd-n79c4 2/2 Running 0 38m
fluentd-xslzw 2/2 Running 0 38m
oam-kubernetes-runtime-56cdb56c98-wn2mb 1/1 Running 0 43m
verrazzano-application-operator-7c95ddd5b5-7xzmn 1/1 Running 0 42m
verrazzano-authproxy-594d8c8dcd-llmlr 2/2 Running 0 38m
verrazzano-console-74dbf97fdf-zxvvn 2/2 Running 0 38m
verrazzano-monitoring-operator-6fcf8484fd-gfkhs 1/1 Running 0 38m
verrazzano-operator-66c8566f95-8lbs6 1/1 Running 0 38m
vmi-system-es-master-0 2/2 Running 0 38m
vmi-system-grafana-799d79648d-wsdp4 2/2 Running 0 38m
vmi-system-kiali-574c6dd94d-f49jv 2/2 Running 0 41m
vmi-system-kibana-77f8d998f4-zzvqr 2/2 Running 0 38m
vmi-system-prometheus-0-7f89d54fbf-brg6x 3/3 Running 0 36m
weblogic-operator-7b447fdb47-wlw64 2/2 Running 0 42m
アプリケーション・ネームスペースのポッドの準備ができていることを確認します。次に例を示します:
$ kubectl get pods -n todo-list
# Sample output
NAME READY STATUS RESTARTS AGE
mysql-67575d8954-d4vkm 2/2 Running 0 39h
tododomain-adminserver 4/4 Running 0 39h
マルチクラスタVerrazzano環境をアップグレードする方法