2.5.3. RollingSync 전략 구성
라벨에 따라 단계적으로 애플리케이션을 업데이트하도록 RollingSync 전략을 구성할 수 있습니다. 이를 통해 애플리케이션을 그룹화하고 순차적으로 업데이트하여 제어된 진행형 배포를 제공할 수 있습니다. Progressive Sync가 활성화되면 GitOps 웹 UI에 롤아웃 상태가 표시됩니다.
사전 요구 사항
- ApplicationSet 리소스를 생성했습니다.
- ApplicationSet에서 생성한 애플리케이션에는 그룹화에 사용할 수 있는 라벨이 있습니다.
- ApplicationSet 구성을 편집할 수 있습니다.
- UI에서 롤아웃 상태를 보려면 Argo CD 인스턴스에서 Progressive Sync를 활성화했습니다.
절차
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이 배포된 네임스페이스를 지정합니다.
spec.strategy.type-
생성 전략 유형을 지정합니다.
RollingSync로 설정하여 준비된 애플리케이션 업데이트를 활성화합니다. spec.strategy.rollingSync.steps- 라벨 선택기를 사용하여 순차적 롤아웃 단계를 정의합니다.
matchExpressions.key-
애플리케이션을 그룹화하는 데 사용되는 레이블 키(예:
envLabel또는tier)를 지정합니다. matchExpressions.operator-
일치하는 라벨의 연산자를 지정합니다(예:
In). matchExpressions.values-
이 단계에서 업데이트할 애플리케이션의 레이블 값을 지정합니다(예:
[dev]). maxUpdate-
(선택 사항) 단계 내에서 동시에 업데이트할 애플리케이션의 최대 백분율(예:
10%)을 지정합니다. 애플리케이션을 한 번에 하나씩 순차적으로 처리하려면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 -wProgressive Sync가 활성화된 경우 Argo CD 웹 UI에서 Progressive Sync 패널을 확인합니다.
- 배포된 애플리케이션의 Argo CD 애플리케이션 세부 정보 페이지로 이동합니다.
애플리케이션 상태 패널에서 롤아웃 상태가 표시되는 PROGRESSIVE SYNC 섹션이 표시됩니다.
Progressive Sync 패널에는 다음 정보가 표시됩니다.
필드 설명 점진적 동기화 상태
상태:
대기중, 보류 중,진행중 또는Healthy마지막 전환
마지막 상태 변경의 타임 스탬프
메시지
추가 세부 정보 또는 오류 메시지
-
ApplicationSet컨트롤러를 사용하여 애플리케이션을 배포할 때 Argo CD 컨트롤러는 자체 네임스페이스에서 애플리케이션만 관리합니다. 다른 네임스페이스에서 애플리케이션이 생성되면 인식되지 않습니다. -
RollingSync는
matchExpressions를 기반으로 애플리케이션 그룹을 순차적으로 업데이트하고rollingSync.steps필드는 레이블 선택기를 사용하여 동기화할 그룹과 순서를 정의합니다. - 단계의 라벨 선택기와 일치하지 않는 애플리케이션은 자동으로 업데이트되지 않으며 수동으로 동기화해야 합니다.