쿠버네티스 클러스터에 ArgoCD를 설치하고 정상적으로 애플리케이션을 연동했음에도 다음과 같은 에러가 발생했습니다.
Failed to load target state: failed to generate manifest for source 1 of 1:
rpc error: code = Unknown desc = failed to list refs: NOAUTH Authentication required

‼️ 처음에는 git 인증이나 레포지토리 설정 문제로 생각했지만, 실제로는 ArgoCD 내부 레디스 인증 문제였습니다.
해당 오류는 Argo CD 내부 컴포넌트(repo-server, application-controller, argocd-server)가 레디스에 접근하려 했지만 인증 정보가 누락되어 발생한 것입니다.

ArgoCD는 여러 내부 컴포넌트 간 상태 동기화, 캐싱 등을 위해 레디스를 중앙 저장소로 사용합니다. 주요 구성 요소는 다음과 같습니다.
저는 다음과 같이 ArgoCD를 설치했습니다.
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
🥲 저만 그런 건지는 모르겠지만... 레디스 설정에서 문제가 있었습니다.
설치 과정에서 argocd-redis는 비밀번호가 포함된 secret을 자동으로 생성하지만, repo-server, server, application-controller와 같은 다른 컴포넌트들은 이 인증 정보를 자동으로 반영하지 않습니다.
결과적으로 레디스에 접근할 때 인증 오류가 발생하였습니다.
1. 레디스 비밀번호 설정 확인
먼저 argocd-redis에 비밀번호가 설정되어 있는지 확인합니다. 출력된 YAML에서 auth: 항목이 존재하고 base64 인코딩된 값이 있다면, Redis 비밀번호가 설정된 상태입니다.
kubectl -n argocd get secret argocd-redis -o yaml
다음으로 ArgoCD의 각 컴포넌트가 해당 비밀번호를 인식하고 있는지 확인합니다.
kubectl -n argocd get deployment argocd-repo-server -o yaml | grep REDIS_PASSWORD
kubectl -n argocd get deployment argocd-server -o yaml | grep REDIS_PASSWORD
kubectl -n argocd get statefulset argocd-application-controller -o yaml | grep REDIS_PASSWORD

‼️ 이처럼 argocd-redis Secret에는 auth 키로 레디스 비밀번호가 설정되어 있지만, repo-server에는 REDIS_PASSWORD 또는 REDIS_PASSWORD_FILE 환경변수가 설정되어 있지 않은 것을 확인할 수 있습니다.
2. 레디스 비밀번호 전달
각 ArgoCD 구성 요소에 환경변수로 Redis 비밀번호를 수동으로 주입합니다.
argocd-repo-server 설정
kubectl -n argocd patch deployment argocd-repo-server \
--type='json' \
-p='[{"op": "add", "path": "/spec/template/spec/containers/0/env", "value": [{"name": "REDIS_PASSWORD", "valueFrom": {"secretKeyRef": {"name": "argocd-redis", "key": "auth"}}}]}]'
argocd-server 설정
kubectl -n argocd patch deployment argocd-server \
--type='json' \
-p='[{"op": "add", "path": "/spec/template/spec/containers/0/env", "value": [{"name": "REDIS_PASSWORD", "valueFrom": {"secretKeyRef": {"name": "argocd-redis", "key": "auth"}}}]}]'
argocd-application-controller 설정
kubectl -n argocd patch statefulset argocd-application-controller \
--type='json' \
-p='[{"op": "add", "path": "/spec/template/spec/containers/0/env", "value": [{"name": "REDIS_PASSWORD", "valueFrom": {"secretKeyRef": {"name": "argocd-redis", "key": "auth"}}}]}]'
💡 이 명령어들은 argocd-redis 시크릿에서 auth 키 값을 읽어와 각 컴포넌트의 REDIS_PASSWORD 환경변수로 설정합니다.
3. pod 재시작
설정을 적용한 후, 변경 사항이 반영되도록 각 컴포넌트를 재시작하거나 기다리면 됩니다.
kubectl -n argocd rollout restart deployment argocd-repo-server
kubectl -n argocd rollout restart deployment argocd-server
kubectl -n argocd rollout restart statefulset argocd-application-controller
정상적으로 재시작되었는지 로그를 통해 확인합니다.
kubectl -n argocd get pods
kubectl -n argocd logs deployment/argocd-repo-server
🥳 해결 완료
