ArgoCD Application 네임스페이스 Watch 범위
작성일: 2026-07-02 | 컴포넌트: argocd-server, argocd-application-controller, argocd-applicationset-controller
1. 핵심 사실
- 기본 설치 상태에서 ArgoCD는 자신이 설치된 네임스페이스(보통
argocd)에 있는Application커스텀 리소스만 list/watch함. - 여러 네임스페이스(또는 전체)의 Application을 다루려면
argocd-cmd-params-cmConfigMap의application.namespaces키를 명시적으로 설정해야 함. “Applications in any namespace” 기능 (v2.5+에서 지원). AppProject는 이 설정과 무관하게 항상 ArgoCD 설치 네임스페이스에만 존재 가능. AppProject에는 네임스페이스 확장 기능 자체가 없음.
2. 설정 확인 방법
kubectl -n argocd get configmap argocd-cmd-params-cm -o jsonpath='{.data.application\.namespaces}'; echo
data.application.namespaces 상태 |
의미 |
|---|---|
| 키 없음 | 기본값 — 설치 네임스페이스만 watch |
"argocd" (설치 네임스페이스와 동일 값) |
명시적 지정, 결과는 기본값과 동일 |
"*" |
전체 네임스페이스 watch |
"ns1,ns2", "team-*" (와일드카드 지원) |
지정된 네임스페이스(들)만 watch |
주의: ConfigMap 자체의
metadata.namespace: argocd는 이 ConfigMap 리소스가 어디 위치하는지를 나타낼 뿐 watch 범위와 무관함. 반드시data블록 안의application.namespaces키를 확인해야 함 — 헷갈리기 쉬운 포인트.
3. 확장 시 함께 필요한 설정
application.namespaces에 네임스페이스를 추가해도, 각 AppProject의 spec.sourceNamespaces에 해당 네임스페이스가 명시되어 있지 않으면 그 네임스페이스의 Application이 permission 에러로 거부됨. 두 설정은 항상 세트로 관리.
4. 설정 반영 방법
application.namespaces는 컨트롤러 기동 시 읽는 정적 파라미터라 ConfigMap 수정만으로는 반영되지 않음. 변경 후 재기동 필요:
kubectl -n argocd rollout restart deployment argocd-server
kubectl -n argocd rollout restart statefulset argocd-application-controller
kubectl -n argocd rollout restart deployment argocd-applicationset-controller # 사용 시
5. 관련 트러블슈팅: SyncFailed / “Too long”
Application의 sync 결과가 Too long: may not be more than 262144 bytes로 실패하는 것은 이 네임스페이스 설정과는 무관한 별개 이슈. Kubernetes API server의 annotation 총 크기 제한(256KiB)에 걸리는 것으로, 주로 client-side apply가 kubectl.kubernetes.io/last-applied-configuration 어노테이션에 전체 manifest를 복사해 넣으면서 발생. CRD처럼 spec이 큰 리소스에서 흔함. 해결은 해당 Application/리소스에 ServerSideApply=true sync option 적용.