ArgoCD ApplicationSets
개요
GitOps 기반 Kubernetes 배포 자동화 도구인 ArgoCD는 선언형 애플리케이션 정의를 통해 신뢰성과 일관성을 제공합니다. 하지만 수백 개 이상의 마이크로서비스, 클러스터, 환경(예: dev/staging/prod)에서 동일한 애플리케이션 구조를 반복 배포해야 할 경우, 개별 Application 리소스를 일일이 정의하는 것은 비효율적입니다. 이를 해결하는 고급 기능이 바로 ApplicationSets입니다. 본 글에서는 ArgoCD ApplicationSets의 개념, 구조, 생성 전략, 템플릿 활용법까지 실전 중심으로 소개합니다.
1. 개념 및 정의
ApplicationSets는 ArgoCD에서 제공하는 확장 리소스로, 여러 개의 Application 객체를 템플릿 기반으로 선언적 생성 및 자동 동기화할 수 있도록 해주는 컨트롤러입니다.
즉, 특정 Git 레포지토리 구조, 디렉토리, 클러스터 목록, Helm values, 파라미터 등을 기준으로 Application을 반복 생성할 수 있는 일종의 템플릿 반복기(template generator) 역할을 수행합니다.
2. 특징
항목 | 설명 | 비교/특징 |
선언형 생성 | 반복 Application을 YAML 한곳에서 정의 | Kustomize/Helm보다 상위 레벨 제어 가능 |
템플릿 중심 | Application 정의를 템플릿화 가능 | 중복 코드 제거, 유지보수 용이 |
자동 재동기화 | 소스 변경 시 자동 Application 재생성 | GitOps와 100% 연동 가능 |
ApplicationSets는 GitOps 대규모화를 위한 핵심 자동화 구성 요소입니다.
3. 주요 Generator 유형
Generator 유형 | 설명 | 사용 예시 |
Git Generator | Git 디렉토리 구조를 기반으로 생성 | apps/ 하위 디렉토리별 서비스 생성 |
List Generator | Key-value 리스트로 매핑 생성 | 클러스터 리스트, Helm values 반복 |
Cluster Generator | 등록된 클러스터 목록 기반 생성 | 멀티클러스터 배포 환경에 활용 |
Matrix Generator | 두 개 이상의 Generator 조합 | 환경(env) x 서비스(service) 조합 생성 |
Generator는 Application 반복 생성을 위한 기준 데이터를 정의합니다.
4. 기술 요소 및 구조
요소 | 설명 | YAML 예시 키 |
metadata | ApplicationSets 자체 이름 등 정의 | name: apps-dev |
generators | 반복 생성의 기준 값 정의 | list, git, cluster 등 |
template | 실제 Application 정의 템플릿 | spec.source, spec.destination 등 |
syncPolicy | 자동 동기화 여부 설정 | automated: true, prune: true 등 |
ApplicationSets는 단일 CR(Custom Resource)로 수십~수백 개의 Application 생성을 통제합니다.
5. 장점 및 이점
장점 | 설명 | 기대 효과 |
선언형 자동화 | 반복되는 Application YAML 생략 가능 | 관리 YAML 수 90% 이상 감소 |
대규모 GitOps 확장 | 멀티클러스터, 멀티환경에 손쉽게 대응 | 환경 간 일관성 유지 |
변경 감지 자동 반영 | Git 폴더 또는 클러스터 변경 시 자동 업데이트 | 운영자의 수동 개입 최소화 |
ApplicationSets는 GitOps의 생산성과 확장성을 비약적으로 끌어올립니다.
6. 주요 활용 사례 및 고려사항
사례 | 설명 | 고려사항 |
SaaS 멀티테넌시 | 고객별 YAML 없이 Application 템플릿 반복 | 고객 클러스터 등록 정책 자동화 필요 |
Dev/QA/Prod 환경 분리 | 동일 서비스 코드 → 다양한 환경 배포 | 환경별 값 분리 정책과 Secret 관리 필요 |
쿠버네티스 마이크로서비스 | Git 디렉토리 기반 수백 개 애플리케이션 등록 | Git 폴더 구조 표준화 중요 |
도입 시 Application CR 구조 및 GitOps 디렉토리 아키텍처 표준화가 선행되어야 합니다.
7. 결론
ArgoCD ApplicationSets는 GitOps를 보다 효율적이고 확장성 있게 만들기 위한 선언형 자동화 프레임워크입니다. Generator와 Template의 조합을 통해 수십~수백 개의 애플리케이션을 반복적이면서도 일관되게 정의할 수 있으며, 변화하는 클러스터·폴더 구조에도 유연하게 대응할 수 있습니다. 대규모 Kubernetes 운영 환경에서 GitOps 생산성을 극대화하려는 조직에게 필수적인 도구입니다.