핵심 요약
Argo CD 3.0 ApplicationSet으로 멀티 클러스터(prod 6, staging 4) × 멀티 앱(28개) = 280 Application을 8개 ApplicationSet으로 압축. 매니페스트 코드 -78%, 신규 환경 추가 30분. 1년 운영 사후.
1. ApplicationSet 패턴 — Cluster + Git generator
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: web-apps
spec:
generators:
- matrix:
generators:
- clusters: {}
- git:
repoURL: https://github.com/org/manifests
directories:
- path: apps/*
template:
metadata:
name: '{{path.basename}}-{{name}}'
spec:
project: default
source:
repoURL: https://github.com/org/manifests
path: '{{path}}/overlays/{{name}}'
destination:
server: '{{server}}'
namespace: '{{path.basename}}'
2. 신규 환경 추가 — 30분
새 클러스터 등록 후 cluster label만 추가하면 ApplicationSet이 자동으로 모든 앱 deploy. 기존엔 클러스터당 28개 Application 매니페스트 작성 필요.
3. 데이터
| 지표 | Before | After |
|---|---|---|
| 매니페스트 라인 | 12,400 | 2,700 |
| 신규 환경 추가 | 2.5h | 30m |
| 동기화 실패 회복 | 수동 | 자동 retry |
4. progressive rollout
3.0의 progressive sync — staging cluster 먼저 update → 1시간 안정 확인 → prod cluster 순차 update. 실패 시 자동 rollback.
5. 함정
- Template 변경 — ApplicationSet template 수정 시 모든 child Application 동시 sync, blast radius 큼. canary 클러스터 먼저 적용 후 promote
- Secret 관리 — ApplicationSet은 Secret 자동 분배 안 함, External Secrets Operator 같이 사용
- Generator 조합 — matrix generator 너무 중첩하면 Application 수 폭증, list × git × cluster 조합 주의
- Sync wave — ApplicationSet 내부 의존성 표현 어려움, label 정책으로 우회

댓글 0