
문제 발생
ArgoCD: 쿠버네티스에서 Git 저장소의 선언적 설정을 기준으로 애플리케이션 배포/동기화를 자동화하는 지속적 배포(CD) 툴
Vault: 비밀번호,토큰,인증서와 같은 시크릿을 안전하게 저장/발급/제어하는 시크릿 관리 도구
설날에 쉬고 있는데 슬랙에 채팅 알림이 왔다.

ArgoCD에서 Vault를 사용해 배포를 하는 애플리케이션 전체를 Sync를 하지 못한다고 한다.
Vault 토큰 관련해서 오류가 나는 것 같았다.
이걸 해결 못하면 당장 학생단체 신입 부원 모집을 위한 앱 배포를 못하는지라 최대한 빠르게 해결해야 했다.
원인 분석
일단 먼저 ArgoCD에서 발생하는 오류를 찾아보기로 했다.
애플리케이션마다 Sync Failed가 발생했고 그 오류는 다 동일했다.
ComparisonError가 발생했다고 나와있었다.
Vault에서 Kubernetes Auth 로그인을 호출했는데 403 Permisison Denied 오류가 발생했다고 적혀있었다.
가장 먼저 생각난 것은 토큰 만료이다.
찾아보니 구버전 쿠버네티스 Service Account 토큰의 기본 만료 시간이 1년이라는 것을 알 수 있었다.
https://github.com/hashicorp/vault-plugin-auth-kubernetes/issues/121
Vault should support reloading service account token from disk · Issue #121 · hashicorp/vault-plugin-auth-kubernetes
I believe I've found some issues with the current service account token handling. Background (1) Kubernetes issues service account tokens that expire. Beginning from Kubernetes 1.21 the default exp...
github.com
약 1년전에 쿠버네티스 클러스터가 알수 없는 이유로 초기화되면서 복구를 위해 Vault 토큰을 새로 만들었던 기억이 났다.
확인해보니 정확히 365일 전에 토큰을 새로 받았다는 것을 알 수 있었다.
해결 - 토큰 재발급
토큰을 재발급하면 바로 문제를 해결할 수 있을 것 같았다.
먼저 쿠버네티스 클러스터에 접속해준다.
그 다음 아래 명령어를 이용하여 1년짜리 token reviewer jwt 토큰을 발급해준다.
kubectl -n <vault의 namespace> create token vault --duration=8760h
이 명령어를 치면 콘솔창에 jwt 토큰이 발급될텐데 이걸 잠시 복사해둔다.
이제 Vault가 실행중인 Pod에 접속한다
kubectl -n <vault의 namespace> exec -it <vault가 실행중인 pod name> -- sh
아래 명령어를 이용해 Vault 에 로그인해준다. 이때 root token이 필요하다.
만약 Vault가 sealed 상태라면 unseal key를 사용해 unsealed 상태로 풀어줘야 한다.
vault login
Vault에 접근했으면 아래 명령어를 통해 kubernetes auth config를 수정해주어야 한다.
token_reviewer_jwt 에 토큰을 넣어서 아래 명령어를 실행하면 된다.
본인 환경에 따라 kubernetes host가 다를 수 있고, 인증서의 위치가 다를 수 있다. 그 경우 본인의 경우에 맞게 수정해야 한다.
vault write auth/kubernetes/config \
kubernetes_host="https://kubernetes.default.svc:443" \
kubernetes_ca_cert=@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt \
token_reviewer_jwt="Here is your token or environment variable path.."
성공했다면 잘 적용되었다고 출력된다.
마지막으로 ArgoCD 에 있는 모든 애플리케이션을 Hard Refresh 해주면 된다.

아까 전까지만 해도 전부 Sync 상태가 Unknown이였는데 다행히 복구에 성공했다. 끝!
'Infra' 카테고리의 다른 글
| MinIO에 다량의 파일을 빠르게 업로드하는 방법 (0) | 2026.03.08 |
|---|---|
| 의존성 자동 관리를 위한 Renovate 도입기 (4) | 2025.04.24 |
| VMware Workstation Pro 무료 설치 for 개인 사용자용 (0) | 2025.01.23 |
소프트웨어학과 현주씌의 일상을 담는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!