Argo Rollouts
Argo Rollouts を使用したプログレッシブ配信
概要
第1章 Argo Rollouts を使用したデプロイメントのプログレッシブ配信
Argo Rollouts はテクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品サービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
プログレッシブ配信は、制御された段階的な方法で製品の更新をリリースするプロセスです。プログレッシブ配信では、最初に製品更新の新しいバージョンを一部のユーザーのみに公開することで、リリースのリスクを軽減します。このプロセスには、この新しいバージョンを継続的に観察および分析して、その動作が設定された要件および期待と一致するかどうかを検証することが含まれます。このプロセスにより、製品の更新が徐々に幅広いユーザーに公開されるため、検証は継続されます。
OpenShift Container Platform は、ルートを使用して異なるサービス間でトラフィックを分割することにより、ある程度の段階的な配信機能を提供しますが、これには通常、手動による介入と管理が必要です。
Argo Rollouts を使用すると、自動化とメトリック分析を使用して、デプロイメントのプログレッシブ配信をサポートし、アプリケーションの新しいバージョンの自動ロールアウトまたはロールバックを推進できます。Argo Rollouts は高度なデプロイメント機能を提供し、イングレスコントローラーやサービスメッシュとの統合を可能にします。Argo Rollouts を使用すると、デプロイされたアプリケーションのさまざまなバージョンを表す複数のレプリカセットを管理できます。導入戦略に応じて、既存のトラフィックシェーピング機能を最適化し、トラフィックを徐々に新しいバージョンに移行することで、更新中にこれらのバージョンへのトラフィックを処理できます。Argo Rollouts を Prometheus などのメトリックプロバイダーと組み合わせて、パラメーターセットに基づいてメトリックベースおよびポリシー駆動のロールアウトとロールバックを実行できます。
1.1. 前提条件
-
cluster-admin
権限でクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
- Red Hat OpenShift GitOps 1.9.0 以降のバージョンがクラスターにインストールされている。
1.2. Argo Rollouts の利点
従来のインフラストラクチャーでの高度なデプロイメント戦略の管理と調整には、多くの場合、長いメンテナンス期間がかかります。OpenShift Container Platform や Red Hat OpenShift GitOps などのツールを使用した自動化により、これらの期間を短縮できますが、これらの戦略を設定するのは依然として困難な場合があります。Argo Rollouts を使用すると、アプリケーションチームがロールアウト戦略を宣言的に定義できるようになり、このプロセスが簡素化されます。チームは、複数のデプロイメントやサービスを定義したり、トラフィックシェーピングやテストの統合のための自動化を作成したりする必要がなくなりました。Argo Rollouts を使用すると、宣言的ロールアウト戦略に必要なすべての定義をカプセル化し、プロセスを自動化および管理できます。
Argo Rollouts を Red Hat OpenShift GitOps のデフォルトのワークロードとして使用すると、次の利点があります。
- GitOps ワークフローの一部として自動化されたプログレッシブ配信
- 高度なデプロイメント機能
- Blue-Green や Canary などの既存の高度なデプロイメント戦略を最適化します。
- デプロイメント時のダウンタイムがない更新
- きめ細かく重み付けされたトラフィックのシフト
- 実稼働環境に新しいトラフィックが到達することなくテストできる
- 自動化されたロールバックとプロモーション
- 手動判定
- カスタマイズ可能な指標クエリーとビジネス主要業績評価指標 (KPI) の分析
- 高度なトラフィックルーティングのための Ingress コントローラーおよび Red Hat OpenShift Service Mesh との統合
- デプロイメント戦略分析のためのメトリックプロバイダーとの統合
- 複数のプロバイダーの使用
Argo Rollouts を使用すると、ユーザーはエンドユーザー環境でプログレッシブ配信をより簡単に導入できるようになります。これにより、チームがトラフィックマネージャーや複雑なインフラストラクチャーについて学ぶ必要がなく、構造とガイドラインが提供されます。Red Hat OpenShift GitOps Operator は自動ロールアウトにより、エンドユーザー環境にセキュリティーを提供し、リソース、コスト、時間を効果的に管理するのに役立ちます。セキュリティーと自動デプロイメントを備えた Argo CD を使用している既存のユーザーは、プロセスの早い段階でフィードバックを受け取り、影響を与える問題を回避できます。
1.3. RolloutManager のカスタムリソースと仕様について
Argo Rollouts を使用するには、クラスターに Red Hat OpenShift GitOps Operator をインストールし、選択した namespace で RolloutManager
カスタムリソース (CR) を作成して Operator に送信する必要があります。RolloutManager
CR のスコープを 1 つまたは複数の namespace に設定できます。Operator は、次の namespace スコープのサポートリソースを使用して argo-rollouts
インスタンスを作成します。
- Argo Rollouts コントローラー
- Argo Rollouts メトリックサービス
- Argo Rollouts サービスアカウント
- Argo Rollouts のロール
- Argo Rollouts のロールバインディング
- Argo Rollouts のシークレット
RolloutsManager
CR の仕様で、Argo Rollouts コントローラーリソースのコマンド引数、環境変数、カスタムイメージ名などを指定できます。RolloutManager
CR 仕様は、Argo Rollouts の望ましい状態を定義します。
例: RolloutManager
CR
apiVersion: argoproj.io/v1alpha1 kind: RolloutManager metadata: name: argo-rollout labels: example: basic spec: {}
1.3.1. Argo Rollouts コントローラー
Argo Rollouts コントローラーリソースを使用すると、namespace でのプログレッシブアプリケーション配信を管理できます。Argo Rollouts コントローラーリソースはクラスターのイベントを監視し、Argo Rollouts に関連するリソースに変更があるたびに反応します。コントローラーはロールアウトの詳細をすべて読み取り、クラスターをロールアウト定義に記述されているのと同じ状態にします。
1.4. RolloutManager カスタムリソースの作成
Red Hat OpenShift GitOps で Argo Rollouts を使用してデプロイメントのプログレッシブ配信を管理するには、選択した namespace で RolloutManager
カスタムリソース (CR) を作成して設定する必要があります。デフォルトでは、新しい argo-rollouts
インスタンスには、それがデプロイされている namespace でのみリソースを管理する権限がありますが、必要に応じて複数の namespace で Argo Rollouts を使用できます。
前提条件
- Red Hat OpenShift GitOps 1.9.0 以降のバージョンがクラスターにインストールされている。
手順
- クラスター管理者として OpenShift Container Platform Web コンソールにログインします。
- Administrator パースペクティブで、Operators → Installed Operators をクリックします。
-
Project ドロップダウンメニューから、
RolloutManager
カスタムリソース (CR) を作成および設定するプロジェクトを作成または選択します。 - インストールされているオペレーターから OpenShift GitOps Operator を選択します。
- Details タブの Provided APIs セクションで、RolloutManager ペインの Create instance をクリックします。
Create RolloutManager ページで YAML view を選択し、デフォルトの YAML を使用するか、要件に応じて編集します。
例:
RolloutManager
CRapiVersion: argoproj.io/v1alpha1 kind: RolloutManager metadata: name: argo-rollout labels: example: basic spec: {}
- Create をクリックします。
- RolloutManager タブの RolloutManagers セクションで、RolloutManager インスタンスの Status フィールドに Phase: Available と表示されていることを確認します。
左側のナビゲーションペインで、namespace をスコープとしたサポートリソースの作成を確認します。
-
Workloads → Deployments をクリックして、
argo-rollouts
デプロイメントが使用可能で、Status に1 of 1 pods
が実行中と表示されていることを確認します。 -
Workloads → Secrets をクリックして、
argo-rollouts-notification-secret
シークレットが使用可能であることを確認します。 -
Networking → Services をクリックして、
argo-rollouts-metrics
サービスが利用可能であることを確認します。 -
User Management → Roles をクリックして、
argo-rollouts
ロール、argo-rollouts-aggregate-to-admin
、argo-rollouts-aggregate-to-edit
、およびargo-rollouts-aggregate-to-view
クラスターロールが使用可能であることを確認します。 -
User Management → RoleBindings をクリックして、
argo-rollouts
ロールバインディングが使用可能であることを確認します。
-
Workloads → Deployments をクリックして、
1.5. RolloutManager カスタムリソースの削除
Red Hat OpenShift GitOps Operator をアンインストールしても、インストール中に作成されたリソースは削除されません。Red Hat OpenShift GitOps Operator をアンインストールする前に、RolloutManager
カスタムリソース (CR) を手動で削除する必要があります。
前提条件
- Red Hat OpenShift GitOps 1.9.0 以降のバージョンがクラスターにインストールされている。
-
RolloutManager
CR は namespace に存在します。
手順
- クラスター管理者として OpenShift Container Platform Web コンソールにログインします。
- Administrator パースペクティブで、Operators → Installed Operators をクリックします。
-
Project ドロップダウンメニューをクリックし、
RolloutManager
CR を含むプロジェクトを選択します。 - インストールされているオペレーターから OpenShift GitOps Operator を選択します。
- RolloutManager タブをクリックして、RolloutManagers セクションで RolloutManager インスタンスを見つけます。
- インスタンスをクリックします。
- ドロップダウンメニューから Actions → Delete RolloutManager をクリックし、ダイアログボックスで Delete をクリックして確認します。
- RolloutManager タブの RolloutManagers セクションで、RolloutManager インスタンスが使用できないことを確認します。
左側のナビゲーションペインで、namespace をスコープとするサポートリソースが削除されていることを確認します。
-
Workloads → Deployments をクリックして、
argo-rollouts
デプロイメントが削除されていることを確認します。 -
Workloads → Secrets をクリックして、
argo-rollouts-notification-secret
シークレットが削除されていることを確認します。 -
Networking → Services をクリックして、
argo-rollouts-metrics
サービスが削除されていることを確認します。 -
User Management → Roles をクリックして、
argo-rollouts
ロール、argo-rollouts-aggregate-to-admin
、argo-rollouts-aggregate-to-edit
、およびargo-rollouts-aggregate-to-view
クラスターロールが削除されていることを確認します。 -
User Management → RoleBindings をクリックして、
argo-rollouts
ロールバインディングが削除されていることを確認します。
-
Workloads → Deployments をクリックして、