3.5. ロールアウトの手動中断
canary デプロイメントを使用する場合、ロールアウトではアプリケーションの初期 canary バージョンがデプロイされます。手動またはプログラム的に検証できます。canary バージョンを検証して stable バージョンにプロモートすると、新しい stable バージョンがすべてのユーザーに公開されます。
ただし、canary バージョンでバグ、エラー、またはデプロイメントの問題が発見される場合があり、canary ロールアウトを中止して、アプリケーションの stable バージョンにロールバックする必要がある場合があります。
canary ロールアウトを中止すると、新しい canary バージョンのリソースが削除され、アプリケーションの以前の stable バージョンが復元されます。canary に送信されていた Ingress、ルート、仮想サービスなどのすべてのネットワークトラフィックは、元の stable バージョンに戻ります。
次のサンプル手順では、アプリケーションの新しい red canary バージョンをデプロイし、完全に stable バージョンにプロモートする前に中止します。
手順
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 ロールアウトでデプロイされたコンテナーイメージが変更され、ロールアウトによって新しい canary デプロイメントが開始されます。
- ロールアウトが一時停止状態になるまで待ちます。
次のコマンドを実行して、ロールアウトによって
rollouts-demo:redcanary バージョンがデプロイされ、一時停止ステータスに到達したことを確認します。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 コントローラーは、アプリケーションの canary リソースを削除し、stable バージョンにロールバックします。
ロールアウトを中止した後、次のコマンドを実行して、canary
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