ApplicationSet 컨트롤러가 Argo CD와 상호작용하는 방식
ApplicationSet 컨트롤러가 Argo CD와 상호작용하는 방식
ApplicationSet 컨트롤러의 유일한 책임은 Argo CD 네임스페이스 안의 Application 리소스를 선언적인 ApplicationSet 리소스와 일관되게 유지하는 것이에요. 즉 ApplicationSet을 생성/수정/삭제하면 그에 대응하는 Argo CD Application 리소스가 만들어지거나, 바뀌거나, 지워져요. 실제 리소스 배포(Deployments, Services 등)는 Argo CD가 담당해요.
출처: 문서
본문
ApplicationSet 리소스를 생성/수정/삭제하면 ApplicationSet 컨트롤러가 그에 대응하는 하나 이상의 Argo CD Application 리소스를 생성/수정/삭제하며 응답해요.
실제로 ApplicationSet 컨트롤러의 유일한 책임은 Argo CD 네임스페이스 안에서 Application 리소스를 생성·수정·삭제하는 것이에요. 컨트롤러의 일은 Application 리소스가 정의된 선언적인 ApplicationSet 리소스와 일관되게 유지되도록 보장하는 것뿐이며, 그 이상은 아니에요.
따라서 ApplicationSet 컨트롤러는:
- Kubernetes 리소스(
ApplicationCR 외)를 생성/수정/삭제하지 않아요. - Argo CD가 배포된 클러스터 외의 다른 클러스터에 연결하지 않아요.
- Argo CD가 배포된 네임스페이스 외의 다른 네임스페이스와 상호작용하지 않아요.
중요 — Argo CD 네임스페이스를 사용하세요
모든 ApplicationSet 리소스와 ApplicationSet 컨트롤러는 Argo CD와 같은 네임스페이스에 설치되어야 해요. AppSet in any namespace가 활성화되지 않으면 다른 네임스페이스의 ApplicationSet 리소스는 무시돼요.
생성된 하위(child) Application 리소스(Deployments, Services, ConfigMaps 등)의 실제 배포를 담당하는 것은 Argo CD 자체예요.
따라서 ApplicationSet 컨트롤러는 Application '팩토리'로 생각할 수 있어요. ApplicationSet 리소스를 입력으로 받아, 그 집합의 파라미터에 대응하는 하나 이상의 Argo CD Application 리소스를 출력하는 팩토리요.

이 다이어그램에서 ApplicationSet 리소스가 정의되면, 대응하는 Application 리소스를 만드는 것은 ApplicationSet 컨트롤러의 책임이에요. 그렇게 만들어진 Application 리소스들은 Argo CD가 관리해요. 즉 Argo CD가 하위 리소스를 실제로 배포하는 책임을 지는 거예요.
Argo CD는 Application spec 필드에 정의된 Git 저장소의 내용을 기반으로 애플리케이션의 Kubernetes 리소스(Deployments, Service 등)를 생성·배포해요.
ApplicationSet의 생성·수정·삭제는 Argo CD 네임스페이스에 존재하는 Application에 직접적인 영향을 미쳐요. 마찬가지로 클러스터 이벤트(Cluster generator 사용 시 Argo CD 클러스터 시크릿의 추가/삭제)나 Git의 변경(Git generator 사용 시)은 Application 리소스를 구성하는 ApplicationSet 컨트롤러의 입력으로 사용돼요.
Argo CD와 ApplicationSet 컨트롤러는 함께 협력해 일관된 Application 리소스 집합이 존재하고 대상 클러스터들에 배포되도록 보장해요.
더 알아보기 (Learn more)
- AppSet in any namespace — 다른 네임스페이스의 ApplicationSet 사용.
- ApplicationSet 소개 — 기본 개념과 설치.