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 updated
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ロールアウトでデプロイされたコンテナーイメージが変更され、ロールアウトによって新しい canary デプロイメントが開始されます。
- ロールアウトが一時停止状態になるまで待ちます。
次のコマンドを実行して、ロールアウトによって
rollouts-demo:red
canary バージョンがデプロイされ、一時停止ステータスに到達したことを確認します。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
Rollout
CR が定義されている 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
Rollout
CR が定義されている namespace を指定します。
出力例
rollout 'rollouts-demo' aborted
rollout 'rollouts-demo' aborted
Copy 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
Rollout
CR が定義されている 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
Rollout
CR が定義されている namespace を指定します。
出力例
rollout "rollouts-demo" image updated
rollout "rollouts-demo" image updated
Copy 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
Rollout
CR が定義されている namespace を指定します。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow