이 문서는 Vault HA 구성 및 MCP 연동 작업을 진행하면서 발생한 주요 이슈와 해결 과정을 기록합니다.
Kind 클러스터에 HA 모드(replicas: 3)로 배포 시 vault-1, vault-2 파드가 Pending 상태에서 멈춤.
$ kubectl describe pod vault-1
Warning FailedScheduling ... 0/2 nodes are available: 1 node(s) didn't match pod anti-affinity rules
Vault Helm Chart의 기본 설정에는 Pod Anti-Affinity가 포함되어 있어, 파드들이 서로 다른 노드에 배포되도록 강제함. Kind는 단일 노드(Single Node)로 동작하므로 하나의 노드에 여러 Vault 파드를 띄울 수 없어 스케줄링 실패.
Helm Values 파일(vault-ha-values.yaml)에서 Affinity 설정을 비활성화(초기화)함.
수정된 코드 (examples/vault-ha-values.yaml):
server:
# ... 기존 설정 ...
# Affinity 설정 완화 (Kind 등 단일 노드 환경 지원)
affinity: ""
설정 변경 후 helm upgrade 실행 시 에러 발생.
Error: UPGRADE FAILED: conflict occurred while applying object ... Kind=MutatingWebhookConfiguration ... conflict with "vault-k8s"
Helm 차트 업그레이드 과정에서 기존에 등록된 MutatingWebhookConfiguration 리소스와 충돌 발생 (Helm의 알려진 이슈 중 하나).
기존 설치를 완전히 제거하고 재설치 진행.
실행 명령어:
# 1. 기존 설치 제거
helm uninstall vault -n vault
# 2. PVC 제거 (데이터 초기화)
kubectl delete pvc -l app.kubernetes.io/name=vault -n vault
# 3. 재설치
helm install vault hashicorp/vault --namespace vault --values examples/vault-ha-values.yaml
vault-mcp-server Deployment 배포 후 Pod가 생성되지 않음. ReplicaSet 상태 확인 시 FailedCreate 에러 발생.
Error creating: pods ... is forbidden: error looking up service account default/myapp-sa: serviceaccount "myapp-sa" not found
HA 테스트를 위해 Vault Environments를 재구성하면서, 이전 단계에서 생성했던 default 네임스페이스의 myapp-sa ServiceAccount가 누락됨 (또는 이전 테스트 과정에서 정리됨).
ServiceAccount 재생성 및 Vault 권한 설정 복구.
실행 명령어:
# ServiceAccount 생성
kubectl create sa myapp-sa -n default
이후 setup-vault.sh 스크립트를 통해 Vault의 Auth, Policy, Role 설정을 다시 적용함.
Vault 설정을 복구하기 위해 스크립트 실행 시 permission denied 및 invalid token 에러 다수 발생.
VAULT_TOKEN 환경 변수가 kubectl exec 세션 내부로 제대로 전달되지 않음.ha-keys.json).kubectl exec 내부에서 vault login 명령어를 명시적으로 실행하도록 스크립트 수정.수정된 코드 (setup-vault.sh):
# 수정 전 (Token 전달 실패 가능성)
export VAULT_TOKEN=...
kubectl exec ... -- sh -c "export VAULT_TOKEN=$VAULT_TOKEN; vault auth enable..."
# 수정 후 (명시적 로그인)
kubectl exec ... -- sh -c "
vault login $VAULT_TOKEN
vault auth enable...
"
git push 실행 시 GitHub의 Push Protection 기능에 의해 차단됨.
remote: error: GH013: Repository rule violations found for refs/heads/main.
remote: - GITHUB PUSH PROTECTION
remote: —— HashiCorp Vault Root Service Token ————————————————
remote: path: docs/05-vault/ha-keys.json
remote: path: setup-vault.sh
실습 과정에서 생성된 실제 Vault Root Token과 Unseal Key가 포함된 파일(*-keys.json)과 스크립트(setup-vault.sh)가 커밋에 포함됨.
커밋을 취소하고(Reset), 민감한 파일을 삭제한 후, 스크립트를 수정하여 재커밋.
조치 내용:
git reset --soft HEAD~1rm docs/05-vault/*-keys.jsonsetup-vault.sh에서 하드코딩된 토큰 제거 및 환경변수 사용으로 변경..gitignore에 *keys.json 추가.git push origin main 성공.