3.5. ロールアウトの手動中断


canary デプロイメントを使用する場合、ロールアウトではアプリケーションの初期 canary バージョンがデプロイされます。手動またはプログラム的に検証できます。canary バージョンを検証して stable バージョンにプロモートすると、新しい stable バージョンがすべてのユーザーに公開されます。

ただし、canary バージョンでバグ、エラー、またはデプロイメントの問題が発見される場合があり、canary ロールアウトを中止して、アプリケーションの stable バージョンにロールバックする必要がある場合があります。

canary ロールアウトを中止すると、新しい canary バージョンのリソースが削除され、アプリケーションの以前の stable バージョンが復元されます。canary に送信されていた Ingress、ルート、仮想サービスなどのすべてのネットワークトラフィックは、元の stable バージョンに戻ります。

次のサンプル手順では、アプリケーションの新しい red canary バージョンをデプロイし、完全に stable バージョンにプロモートする前に中止します。

手順

  1. 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> 1
    1
    ロールアウト カスタムリソース (CR) が定義されている namespace を指定します。

    出力例

    rollout "rollouts-demo" image updated

    ロールアウトでデプロイされたコンテナーイメージが変更され、ロールアウトによって新しい canary デプロイメントが開始されます。

  2. ロールアウトが一時停止状態になるまで待ちます。
  3. 次のコマンドを実行して、ロールアウトによって rollouts-demo:red canary バージョンがデプロイされ、一時停止ステータスに到達したことを確認します。

    $ oc argo rollouts get rollout rollouts-demo --watch -n <namespace> 1
    1
    Rollout CR が定義されている namespace を指定します。

    出力例

    Name:            rollouts-demo
    Namespace:       spring-petclinic
    Status:          ॥ Paused
    Message:         CanaryPauseStep
    Strategy:        Canary
      Step:          1/8
      SetWeight:     20
      ActualWeight:  20
    Images:          argoproj/rollouts-demo:red (canary)
                     argoproj/rollouts-demo:yellow (stable)
    Replicas:
      Desired:       5
      Current:       5
      Updated:       1
      Ready:         5
      Available:     5
    
    NAME                                       KIND        STATUS        AGE    INFO
    ⟳ rollouts-demo                            Rollout     ॥ Paused      17m
    ├──# revision:3
    │  └──⧉ rollouts-demo-5747959bdb           ReplicaSet  ✔ Healthy     75s    canary
    │     └──□ rollouts-demo-5747959bdb-fdrsg  Pod         ✔ Running     75s    ready:1/1
    ├──# revision:2
    │  └──⧉ rollouts-demo-6cf78c66c5           ReplicaSet  ✔ Healthy     9m45s  stable
    │     ├──□ rollouts-demo-6cf78c66c5-zrgd4  Pod         ✔ Running     9m44s  ready:1/1
    │     ├──□ rollouts-demo-6cf78c66c5-2ptpp  Pod         ✔ Running     4m58s  ready:1/1
    │     ├──□ rollouts-demo-6cf78c66c5-tmk6c  Pod         ✔ Running     4m38s  ready:1/1
    │     └──□ rollouts-demo-6cf78c66c5-zv6lx  Pod         ✔ Running     4m27s  ready:1/1
    └──# revision:1
       └──⧉ rollouts-demo-687d76d795           ReplicaSet  • ScaledDown  17m

  4. 以下のコマンドを実行してロールアウトの更新を停止します。

    $ oc argo rollouts abort rollouts-demo -n <namespace> 1
    1
    Rollout CR が定義されている namespace を指定します。

    出力例

    rollout 'rollouts-demo' aborted

    Argo Rollouts コントローラーは、アプリケーションの canary リソースを削除し、stable バージョンにロールバックします。

  5. ロールアウトを中止した後、次のコマンドを実行して、canary ReplicaSet が 0 レプリカにスケーリングされていることを確認します。

    $ oc argo rollouts get rollout rollouts-demo --watch -n <namespace> 1
    1
    Rollout CR が定義されている namespace を指定します。

    出力例

    Name:            rollouts-demo
    Namespace:       spring-petclinic
    Status:          ✖ Degraded
    Message:         RolloutAborted: Rollout aborted update to revision 3
    Strategy:        Canary
      Step:          0/8
      SetWeight:     0
      ActualWeight:  0
    Images:          argoproj/rollouts-demo:yellow (stable)
    Replicas:
      Desired:       5
      Current:       5
      Updated:       0
      Ready:         5
      Available:     5
    
    NAME                                       KIND        STATUS        AGE    INFO
    ⟳ rollouts-demo                            Rollout     ✖ Degraded    24m
    ├──# revision:3
    │  └──⧉ rollouts-demo-5747959bdb           ReplicaSet  • ScaledDown  7m38s  canary
    ├──# revision:2
    │  └──⧉ rollouts-demo-6cf78c66c5           ReplicaSet  ✔ Healthy     16m    stable
    │     ├──□ rollouts-demo-6cf78c66c5-zrgd4  Pod         ✔ Running     16m    ready:1/1
    │     ├──□ rollouts-demo-6cf78c66c5-2ptpp  Pod         ✔ Running     11m    ready:1/1
    │     ├──□ rollouts-demo-6cf78c66c5-tmk6c  Pod         ✔ Running     11m    ready:1/1
    │     ├──□ rollouts-demo-6cf78c66c5-zv6lx  Pod         ✔ Running     10m    ready:1/1
    │     └──□ rollouts-demo-6cf78c66c5-mlbsh  Pod         ✔ Running     4m47s  ready:1/1
    └──# revision:1
       └──⧉ rollouts-demo-687d76d795           ReplicaSet  • ScaledDown  24m

    ロールアウトステータスは Degraded としてマークされています。これは、アプリケーションが以前の安定バージョン (yellow) にロールバックされているにもかかわらず、ロールアウトが現在、.spec.template.spec.containers.image フィールド内で設定された、希望のバージョン (red) ではないことを示しています。

    注記

    Degraded ステータスは、アプリケーションの正常性を反映しません。これは、必要なコンテナーイメージのバージョンと実行中のコンテナーイメージのバージョンが一致していないことを示しているだけです。

  6. コンテナーイメージのバージョンを以前の安定バージョン yellow に更新し、次のコマンドを実行して .spec.template.spec.containers.image の値を変更します。

    $ oc argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:yellow -n <namespace> 1
    1
    Rollout CR が定義されている namespace を指定します。

    出力例

    rollout "rollouts-demo" image updated

    ロールアウトでは、分析とプロモーションの手順がスキップされ、以前の安定したバージョン yellow にロールバックされ、安定した ReplicaSet のデプロイを早い段階で行うことができます。

  7. 次のコマンドを実行して、ロールアウトのステータスが Healthy としてマークされていることを確認します。

    $ oc argo rollouts get rollout rollouts-demo --watch -n <namespace> 1
    1
    Rollout CR が定義されている namespace を指定します。

    出力例

    Name:            rollouts-demo
    Namespace:       spring-petclinic
    Status:          ✔ Healthy
    Strategy:        Canary
      Step:          8/8
      SetWeight:     100
      ActualWeight:  100
    Images:          argoproj/rollouts-demo:yellow (stable)
    Replicas:
      Desired:       5
      Current:       5
      Updated:       5
      Ready:         5
      Available:     5
    
    NAME                                       KIND        STATUS        AGE  INFO
    ⟳ rollouts-demo                            Rollout     ✔ Healthy     63m
    ├──# revision:4
    │  └──⧉ rollouts-demo-6cf78c66c5           ReplicaSet  ✔ Healthy     55m  stable
    │     ├──□ rollouts-demo-6cf78c66c5-zrgd4  Pod         ✔ Running     55m  ready:1/1
    │     ├──□ rollouts-demo-6cf78c66c5-2ptpp  Pod         ✔ Running     50m  ready:1/1
    │     ├──□ rollouts-demo-6cf78c66c5-tmk6c  Pod         ✔ Running     50m  ready:1/1
    │     ├──□ rollouts-demo-6cf78c66c5-zv6lx  Pod         ✔ Running     50m  ready:1/1
    │     └──□ rollouts-demo-6cf78c66c5-mlbsh  Pod         ✔ Running     44m  ready:1/1
    ├──# revision:3
    │  └──⧉ rollouts-demo-5747959bdb           ReplicaSet  • ScaledDown  46m
    └──# revision:1
       └──⧉ rollouts-demo-687d76d795           ReplicaSet  • ScaledDown  63m

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.