1.17.2. 段階的なロールアウトストラテジーのサンプル ApplicationSet リソースを理解する
ストラテジー仕様を確認して、段階的なロールアウトストラテジーを実装する Argo CD プルモデルを使用したサンプル ApplicationSet を理解します。この YAML は、段階的なロールアウトストラテジーを有効にします。ハブクラスターに strategy パラメーターセクションを追加すると、クラスターを個別に更新するのではなく、完全に同時に更新できるようになります。
たとえば、次の ApplicationSet リソースでストラテジーがどのように定義されているかを確認します。
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook-allclusters-app-set
namespace: openshift-gitops
spec:
generators:
- clusterDecisionResource:
configMapRef: ocm-placement-generator
labelSelector:
matchLabels:
cluster.open-cluster-management.io/placement: aws-app-placement
requeueAfterSeconds: 30
strategy:
type: RollingSync
rollingSync:
steps:
- name: dev-stage
matchExpressions:
- key: envLabel
operator: In
values: [env-dev]
maxUpdate: 100%
- name: qa-stage
matchExpressions:
- key: envLabel
operator: In
values: [env-qa]
maxUpdate: 100%
- name: prod-stage
matchExpressions:
- key: envLabel
operator: In
values: [env-prod]
maxUpdate: 100%
template:
preserveFields:
- metadata.labels.envLabel
metadata:
annotations:
apps.open-cluster-management.io/ocm-managed-cluster: '{{name}}'
apps.open-cluster-management.io/ocm-managed-cluster-app-namespace: openshift-gitops
argocd.argoproj.io/skip-reconcile: "true"
labels:
apps.open-cluster-management.io/pull-to-ocm-managed-cluster: "true"
name: '{{name}}-guestbook-app'
spec:
destination:
namespace: guestbook
server: https://kubernetes.default.svc
project: default
sources:
- repoURL: https://github.com/argoproj/argocd-example-apps.git
targetRevision: main
path: guestbook
syncPolicy:
syncOptions:
- CreateNamespace=true
- 1
preserveFieldsパラメーターを使用して、ApplicationSetコントローラーが無視する必要があるラベルをリストします。必要なラベルを手動で適用できます (例:envLabel=env-qa)。このフィールドがない場合、ApplicationSetコントローラーはテンプレートに定義されていないラベルを上書きまたは削除します。