4.2. OpenShift Routes を使用してトラフィックをルーティングするように Argo Rollouts を設定する
OpenShift Routes を使用して、ルート、ロールアウト、およびサービスを作成するように Argo Rollouts を設定できます。
以下の手順例では、ルート、ロールアウト、および 2 つのサービスを作成します。その後、徐々にトラフィックの割合を増やしてアプリケーションの canary バージョンにルーティングし、その canary 状態が成功としてマークされて新しい stable バージョンになります。
前提条件
- OpenShift Container Platform クラスターに管理者としてログインしている。
- OpenShift Container Platform クラスターに Red Hat OpenShift GitOps がインストールされている。
- OpenShift Container Platform クラスターに Argo Rollouts がインストールされている。詳細は、「RolloutManager カスタムリソースの作成」を参照してください。
- システムに Red Hat OpenShift GitOps CLI がインストールされている。詳細は、「GitOps CLI のインストール」を参照してください。
- システムに Argo Rollouts CLI がインストールされている。詳細は、「Argo Rollouts CLI の概要」を参照してください。
手順
Route
オブジェクトを作成します。-
Web コンソールの Administrator パースペクティブで、Networking
Routes をクリックします。 - Create Route をクリックします。
Create Route ページで、YAML view をクリックし、以下のスニペットを追加します。以下の例では、
rollouts-demo-route
というルートを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Create をクリックしてルートを作成します。その後、Routes ページに表示されます。
-
Web コンソールの Administrator パースペクティブで、Networking
ルートで参照されるサービス (canary および stable) を作成します。
-
Web コンソールの Administrator パースペクティブで、Networking
Services をクリックします。 - Create Service をクリックします。
Create Service ページで、YAML view をクリックし、以下のスニペットを追加します。以下の例では、
argo-rollouts-canary-service
という名前の canary サービスを作成します。canary トラフィックはこのサービスに転送されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Route
オブジェクトで指定された canary サービスの名前が、Service
オブジェクトで指定された canary サービスの名前と一致していることを確認します。Create をクリックして canary サービスを作成します。
ロールアウトは、作成されたサービスを canary
ReplicaSet
の Pod テンプレートハッシュで自動的に更新します。例:rollouts-pod-template-hash: 7bf84f9696
。これらの手順を繰り返して安定したサービスを作成します。次の例では
argo-rollouts-stable-service
という安定したサービスを作成します。安定したトラフィックがこのサービスに送られます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Route
オブジェクトで指定された安定したサービスの名前が、Service
オブジェクトで指定された安定したサービスの名前と一致していることを確認します。Create をクリックして安定したサービスを作成します。
ロールアウトは、安定した
ReplicaSet
の Pod テンプレートハッシュを使用して、作成されたサービスを自動的に更新します。例:rollouts-pod-template-hash: 1b6a7733
。
-
Web コンソールの Administrator パースペクティブで、Networking
Route
およびService
オブジェクトを参照するRollout
CR を作成します。-
Web コンソールの Administrator パースペクティブで、Operator
Installed Operator Red Hat OpenShift GitOps Rollout に移動します。 Create Rollout ページで、YAML view をクリックし、次のスニペットを追加します。次の例では、
rollouts-demo
というRollout
CR を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Create をクリックします。
- Rollout タブの Rollout セクションで、ロールアウトの Status フィールドに Phase: Healthy と表示されていることを確認します。
-
Web コンソールの Administrator パースペクティブで、Operator
ルートがトラフィックの 100% をアプリケーションの安定バージョンに送信していることを確認します。
注記Rollout
リソースの最初のインスタンスが作成されると、ロールアウトによって、stable バージョンおよび canary バージョンのアプリケーションに送信されるトラフィックの量が調整されます。最初のインスタンスでは、Rollout
リソースの作成により、すべてのトラフィックがアプリケーションの stable バージョンにルーティングされ、トラフィックが canary バージョンに送信される部分がスキップされます。ロールアウトでデプロイされたコンテナーイメージを変更して、アプリケーションの新しい canary バージョンをシミュレートします。
-
Web コンソールの Administrator パースペクティブで、Operator
Installed Operator Red Hat OpenShift GitOps Rollout に移動します。 既存の Rollout を選択し、
.spec.template.spec.containers.image
の値をargoproj/rollouts-demo:blue
からargoproj/rollouts-demo:yellow
に変更します。その結果、ロールアウトにデプロイされたコンテナーイメージが変更され、ロールアウトによって新規の canary デプロイメントが開始されます。
注記Rollout
リソースの.spec.strategy.canary.steps
フィールドで定義されているsetWeight
プロパティーに従って、最初はルートへのトラフィックの 30% が canary バージョンに到達し、トラフィックの 70% が stable バージョンに向けられます。トラフィックの 30% が canary バージョンに移行されると、ロールアウトは一時停止されます。トラフィックの 30% が canary バージョンに送られ、70% が stable バージョンに送られるルートの例。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
Web コンソールの Administrator パースペクティブで、Operator
Argo Rollouts CLI で次のコマンドを実行して、アプリケーションの別の canary バージョンを新たにシミュレートします。
oc argo rollouts promote rollouts-demo -n <namespace>
$ oc argo rollouts promote rollouts-demo -n <namespace>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
Rollout
リソースが定義されている namespace を指定します。
これにより、トラフィックの重みは、canary バージョンでは 60%、stable バージョンでは 40% に増加します。
トラフィックの 60% が canary バージョンに送られ、40% が stable バージョンに送られるルートの例。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、canary バージョンのトラフィックの重みを 100% に増やし、アプリケーションの古い stable バージョンのトラフィックを破棄します。
oc argo rollouts promote rollouts-demo -n <namespace>
$ oc argo rollouts promote rollouts-demo -n <namespace>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
Rollout
リソースが定義されている namespace を指定します。
トラフィックの 0% が canary バージョンに送られ、100% が stable バージョンに送られるルートの例。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow