3.5. ロールアウトの手動中断
カナリアデプロイメントを使用する場合、ロールアウトではアプリケーションの初期カナリアバージョンがデプロイされます。手動またはプログラム的に検証できます。カナリアバージョンを検証して安定バージョンにプロモートすると、新しい安定バージョンがすべてのユーザーに公開されます。
ただし、カナリアバージョンでバグ、エラー、またはデプロイメントの問題が発見される場合があり、カナリアロールアウトを中止して、アプリケーションの安定したバージョンにロールバックする必要がある場合があります。
カナリアロールアウトを中止すると、新しいカナリアバージョンのリソースが削除され、アプリケーションの以前の安定バージョンが復元されます。カナリアに送信されていた Ingress、ルート、仮想サービスなどのすべてのネットワークトラフィックは、元の安定バージョンに戻ります。
次のサンプル手順では、アプリケーションの新しい red カナリアバージョンをデプロイし、完全に安定バージョンにプロモートする前に中止します。
手順
Argo Rollouts CLI で次のコマンドを実行して、コンテナーイメージのバージョンを更新し、
.spec.template.spec.containers.imageの値をargoproj/rollouts-demo:yellowからargoproj/rollouts-demo:redに変更します。oc argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:red -n <namespace>
$ oc argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:red -n <namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
ロールアウトカスタムリソース (CR) が定義されている namespace を指定します。
出力例
rollout "rollouts-demo" image updated
rollout "rollouts-demo" image updatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow ロールアウトでデプロイされたコンテナーイメージが変更され、ロールアウトによって新しいカナリアデプロイメントが開始されます。
- ロールアウトが一時停止状態になるまで待ちます。
次のコマンドを実行して、ロールアウトによって
rollouts-demo:redカナリアバージョンがデプロイされ、一時停止ステータスに到達したことを確認します。oc argo rollouts get rollout rollouts-demo --watch -n <namespace>
$ oc argo rollouts get rollout rollouts-demo --watch -n <namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
RolloutCR が定義されている namespace を指定します。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行してロールアウトの更新を停止します。
oc argo rollouts abort rollouts-demo -n <namespace>
$ oc argo rollouts abort rollouts-demo -n <namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
RolloutCR が定義されている namespace を指定します。
出力例
rollout 'rollouts-demo' aborted
rollout 'rollouts-demo' abortedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Argo Rollouts コントローラーは、アプリケーションのカナリアリソースを削除し、安定バージョンにロールバックします。
ロールアウトを中止した後、次のコマンドを実行して、カナリア
ReplicaSetが 0 レプリカにスケーリングされていることを確認します。oc argo rollouts get rollout rollouts-demo --watch -n <namespace>
$ oc argo rollouts get rollout rollouts-demo --watch -n <namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
RolloutCR が定義されている namespace を指定します。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ロールアウトステータスは
Degradedとしてマークされています。これは、アプリケーションが以前の安定バージョン (yellow)にロールバックされているにもかかわらず、ロールアウトが現在、.spec.template.spec.containers.imageフィールド内で設定された、希望のバージョン (red) ではないことを示しています。注記Degradedステータスは、アプリケーションの正常性を反映しません。これは、必要なコンテナーイメージのバージョンと実行中のコンテナーイメージのバージョンが一致していないことを示しているだけです。コンテナーイメージのバージョンを以前の安定バージョン
yellowに更新し、次のコマンドを実行して.spec.template.spec.containers.imageの値を変更します。oc argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:yellow -n <namespace>
$ oc argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:yellow -n <namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
RolloutCR が定義されている namespace を指定します。
出力例
rollout "rollouts-demo" image updated
rollout "rollouts-demo" image updatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow ロールアウトでは、分析とプロモーションの手順がスキップされ、以前の安定したバージョン
yellowにロールバックされ、安定したReplicaSetのデプロイを早い段階で行うことができます。次のコマンドを実行して、ロールアウトのステータスが
Healthyとしてマークされていることを確認します。oc argo rollouts get rollout rollouts-demo --watch -n <namespace>
$ oc argo rollouts get rollout rollouts-demo --watch -n <namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
RolloutCR が定義されている namespace を指定します。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow