homelab89 Docs Logs Legacy Files ☰ TOC 🌓
refk8s 2026-07-02kubernetesargocdgitops

ArgoCD Application 네임스페이스 Watch 범위

작성일: 2026-07-02 | 컴포넌트: argocd-server, argocd-application-controller, argocd-applicationset-controller


1. 핵심 사실

  • 기본 설치 상태에서 ArgoCD는 자신이 설치된 네임스페이스(보통 argocd)에 있는 Application 커스텀 리소스만 list/watch함.
  • 여러 네임스페이스(또는 전체)의 Application을 다루려면 argocd-cmd-params-cm ConfigMap의 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에 네임스페이스를 추가해도, 각 AppProjectspec.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 적용.

6. 참조

Files