2.5.3. RollingSync ストラテジーの設定
RollingSync ストラテジーを設定することで、ラベルに基づいてアプリケーションを段階的に更新できます。これにより、アプリケーションをグループ化して順次更新することができ、制御された段階的なデプロイメントが可能になります。プログレッシブ同期が有効になっている場合、ロールアウトのステータスが GitOps Web UI に表示されます。
前提条件
- ApplicationSet リソースを作成しました。
- ApplicationSet によって生成されたアプリケーションには、グループ化に使用できるラベルが付いています。
- ApplicationSet の設定を編集する権限があります。
- UI でロールアウトのステータスを表示するには、Argo CD インスタンスでプログレッシブ同期を有効にする必要があります。
手順
RollingSync ストラテジーを使用して ApplicationSet カスタムリソースを作成または編集します。
apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: guestbook-rollingsync namespace: openshift-gitops spec: generators: - list: elements: - cluster: in-cluster env: dev - cluster: in-cluster env: qa - cluster: in-cluster env: prod strategy: type: RollingSync rollingSync: steps: - matchExpressions: - key: envLabel operator: In values: [dev] - matchExpressions: - key: envLabel operator: In values: [qa] maxUpdate: 0 - matchExpressions: - key: envLabel operator: In values: [prod] maxUpdate: 10% template: metadata: name: 'guestbook-{{.env}}' labels: envLabel: '{{.env}}' spec: project: default source: repoURL: https://github.com/your-org/your-repo.git targetRevision: HEAD path: guestbook/{{.env}} destination: server: https://kubernetes.default.svc namespace: guestbook-{{.env}}各項目の説明:
metadata.name- ApplicationSet リソースの名前を指定します。
metadata.namespace- ApplicationSet がデプロイされる名前空間を指定します。
仕様戦略タイプ-
作成ストラテジーの種類を指定します。段階的なアプリケーション更新を有効にするには、
RollingSyncに設定してください。 spec.strategy.rollingSync.steps- ラベルセレクターを使用して、段階的な展開ステージを定義します。
matchExpressions.key-
アプリケーションをグループ化するために使用されるラベルキーを指定します (例:
envLabelまたはtier)。 matchExpressions.operator-
ラベルのマッチングに使用する演算子を指定します (例:
In)。 matchExpressions.values-
このステップで更新するアプリケーションのラベル値を指定します (例:
[dev])。 maxUpdate-
(オプション) ステップ内で同時に更新するアプリケーションの最大割合を指定します (例:
10%)。アプリケーションを 1 つずつ順番に処理するには、0に設定してください。
YAML ファイルを適用します。
$ oc apply -f guestbook-rollingsync.yaml
検証
RollingSync ストラテジーが正しく設定されていることを確認してください。
$ oc get applicationset guestbook-rollingsync -n openshift-gitops -o yamlApplicationSet を更新し、アプリケーションが段階的に更新されることを確認してください。
$ oc get applications -n openshift-gitops -l app.kubernetes.io/instance=guestbook-rollingsync -wプログレッシブ同期が有効になっている場合は、Argo CD Web UI のプログレッシブ同期パネルを確認してください。
- デプロイ済みのアプリケーションの Argo CD アプリケーション詳細 ページに移動してください。
アプリケーションステータス パネルに、ロールアウトステータスを表示する プログレッシブ同期 セクションが表示されます。
Progressive Sync パネルには、以下の情報が表示されます。
フィールド 説明 Progressive Sync Status
健康状態:
待機中、保留中、進行中、または健康Last Transition
最後の状態変更のタイムスタンプ
Message
詳細情報またはエラーメッセージ
-
ApplicationSetコントローラーを使用してアプリケーションをデプロイする場合、Argo CD コントローラーは自身の namespace 内のアプリケーションのみを管理します。別の namespace 内に作成されたアプリケーションは認識されません。 -
RollingSync は
matchExpressionsに基づいてアプリケーショングループを順次更新し、rollingSync.stepsフィールドはラベルセレクターを使用して同期するグループとその順序を定義します。 - いずれのステップのラベルセレクターにも一致しないアプリケーションは自動的に更新されないため、手動で同期する必要があります。