検索

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

download PDF

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

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

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

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

手順

  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

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

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

    $ 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 コントローラーは、アプリケーションのカナリアリソースを削除し、安定バージョンにロールバックします。

  5. ロールアウトを中止した後、次のコマンドを実行して、カナリア 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.