第8章 Argo Rollouts の高可用性サポートの有効化
Argo Rollouts サポートは、RolloutManager
カスタムリソース (CR) で高可用性 (HA) の有効化をサポートします。Argo Rollouts で高可用性を設定すると、Red Hat OpenShift GitOps Operator は RolloutManager
CR の .spec.ha
フィールドを使用して、Argo Rollouts コントローラーの Pod 数を 2 に自動的に設定します。また、リーダーエレクションもアクティベートし、Pod をアクティブ/パッシブプロセスで実行できます。単一 Pod はロールアウトをアクティブに管理しますが、他の Pod はパッシブ状態のままとなり、ノードに障害が発生した場合には追加のレプリカで冗長性および可用性が提供されます。
この機能は、ダウンタイムや手動介入なしで実行できるようにすることで、Rollouts コントローラーにメリットをもたらします。また、2 つ目のレプリカによりコントローラーがスムーズに実行されることが確保されるため、計画されたメンテナンス中でも動作します。Argo Rollouts で高可用性を有効にすると、ノードの障害や負荷が大きい場合でも、コントローラーが信頼性と回復力を維持できます。
Red Hat OpenShift GitOps Operator は、デフォルトで非アフィニティールールが適用されるようにします。これらのルールはユーザー定義ではありませんが、コントローラー Pod が複数の異なるノードに分散して、単一障害点を回避し、ノード障害に対する耐障害性を提供します。
前提条件
- 管理者として OpenShift Container Platform クラスターにログインしている。
- OpenShift Container Platform クラスターに Red Hat OpenShift GitOps がインストールされている。
- OpenShift Container Platform クラスターに Argo Rollouts がインストールされている。
8.1. Argo Rollouts の高可用性の設定
高可用性を有効にするには、次の手順を実行して、RolloutManager
カスタムリソース (CR) で ha
仕様を設定します。
手順
- クラスター管理者として OpenShift Container Platform Web コンソールにログインします。
-
Administrator パースペクティブで、Operators
Installed Operators をクリックします。 -
Project ドロップダウンメニューから、
RolloutManager
CR を作成および設定するプロジェクトを作成または選択します。 - インストールされた Operator から Red Hat OpenShift GitOps を選択します。
- Details タブの Provided APIs セクションで、RolloutManager ペインの Create instance をクリックします。
Create RolloutManager ページで、YAML view を選択し、YAML を編集します。
RolloutManager
CR でha
フィールドを有効にする例apiVersion: argoproj.io/v1alpha1 kind: RolloutManager metadata: name: argo-rollouts namespace: openshift-gitops spec: ha: enabled: true 1
- 1
- 高可用性が有効であるかどうかを指定します。値が
true
に設定されている場合、高可用性が有効化されています。
- Create をクリックします。
- RolloutManager タブの RolloutManagers セクションで、RolloutManager インスタンスの Status フィールドに Phase: Available が表示されていることを確認します。
次の手順を実行して、Rollouts デプロイメントのステータスを確認します。
-
Administrator パースペクティブで、Workloads
Deployments をクリックします。 - argo-rollouts デプロイメントをクリックします。
- Details タブをクリックし、Rollouts デプロイメント内のレプリカの数が 2 に設定されていることを確認します。
YAML タブをクリックして、以下の設定が表示されていることを確認します。
Argo Rollouts デプロイメント設定ファイルの例
kind: Deployment metadata: name: argo-rollouts namespace: openshift-gitops spec: replicas: 2 1 selector: matchLabels: app.kubernetes.io/name: argo-rollouts template: metadata: creationTimestamp: null labels: app.kubernetes.io/name: argo-rollouts spec: containers: args: - '--leader-elect' - 'true' 2
-
Administrator パースペクティブで、Workloads