Topic

ArgoCD ApplicationSets

JackerLab 2025. 7. 17. 12:21
728x90
반응형

개요

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 생산성을 극대화하려는 조직에게 필수적인 도구입니다.

728x90
반응형