gitops-demo

Vault Examples

이 디렉토리에는 Vault 실습에 필요한 모든 예제 파일이 포함되어 있습니다.

파일 목록

Vault 설치 및 구성

VSO (Vault Secrets Operator) 리소스

Static Secrets

Dynamic Secrets

Jenkins

사용 순서

1단계: Vault 설치

# Vault 설치
helm install vault hashicorp/vault \
  --namespace vault \
  --create-namespace \
  --values vault-values.yaml

# Vault 초기화 (문서 참조)
kubectl exec -n vault vault-0 -- vault operator init
kubectl exec -n vault vault-0 -- vault operator unseal <KEY>

2단계: VSO 설치

# VSO 설치
helm install vault-secrets-operator hashicorp/vault-secrets-operator \
  --namespace vault-secrets-operator-system \
  --create-namespace

3단계: VSO 리소스 배포

kubectl apply -f vault-connection.yaml
kubectl apply -f vault-auth.yaml

4단계: Static Secrets 테스트

# Vault에 Secret 생성
kubectl exec -n vault vault-0 -- vault kv put secret/myapp/database \
  username=dbuser \
  password=dbpassword \
  host=postgres.default.svc.cluster.local \
  port=5432

# VaultStaticSecret 배포
kubectl apply -f static-secret-example.yaml

# 확인
kubectl get secret myapp-database -o yaml
kubectl logs myapp-test

5단계: Dynamic Secrets 테스트

# PostgreSQL 배포 (전체 예제)
kubectl apply -f postgres-dynamic-secret.yaml

# Database Secret Engine 설정 (Vault Pod에서)
kubectl exec -n vault vault-0 -- sh
vault secrets enable database
vault write database/config/postgresql \
  plugin_name=postgresql-database-plugin \
  allowed_roles="readwrite" \
  connection_url="postgresql://:@postgres.default.svc.cluster.local:5432/myappdb?sslmode=disable" \
  username="vaultadmin" \
  password="vaultpassword"

vault write database/roles/readwrite \
  db_name=postgresql \
  creation_statements="CREATE ROLE \"\" WITH LOGIN PASSWORD '' VALID UNTIL ''; GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO \"\";" \
  default_ttl="1h" \
  max_ttl="24h"

# 확인
kubectl logs -f deployment/postgres-app

트러블슈팅

VaultStaticSecret이 동기화되지 않는 경우

# VSO 로그 확인
kubectl logs -n vault-secrets-operator-system \
  deployment/vault-secrets-operator-controller-manager

# VaultStaticSecret 상태 확인
kubectl describe vaultstaticsecret myapp-database-secret

VaultDynamicSecret이 작동하지 않는 경우

# Database 연결 확인
kubectl exec -n vault vault-0 -- vault read database/config/postgresql

# Role 확인
kubectl exec -n vault vault-0 -- vault read database/roles/readwrite

# 수동으로 Secret 생성 테스트
kubectl exec -n vault vault-0 -- vault read database/creds/readwrite

참고 사항

[!IMPORTANT] 이 예제 파일들은 학습 및 개발 목적입니다. 운영 환경에서는 다음을 고려하세요:

관련 문서