이 디렉토리에는 Vault 실습에 필요한 모든 예제 파일이 포함되어 있습니다.
vault-values.yaml: Helm을 사용한 Vault 설치 시 사용하는 values 파일
helm install vault hashicorp/vault -n vault --values vault-values.yaml
vault-auth.yaml: VSO가 Vault에 인증하는 방법 정의
kubectl apply -f vault-connection.yaml
kubectl apply -f vault-auth.yaml
kubectl apply -f static-secret-example.yaml
kubectl apply -f dynamic-secret-example.yaml
kubectl apply -f postgres-dynamic-secret.yaml
# 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>
# VSO 설치
helm install vault-secrets-operator hashicorp/vault-secrets-operator \
--namespace vault-secrets-operator-system \
--create-namespace
kubectl apply -f vault-connection.yaml
kubectl apply -f vault-auth.yaml
# 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
# 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
# VSO 로그 확인
kubectl logs -n vault-secrets-operator-system \
deployment/vault-secrets-operator-controller-manager
# VaultStaticSecret 상태 확인
kubectl describe vaultstaticsecret myapp-database-secret
# 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] 이 예제 파일들은 학습 및 개발 목적입니다. 운영 환경에서는 다음을 고려하세요:
- TLS 활성화
- 적절한 리소스 제한
- High Availability 설정
- Backup 및 Disaster Recovery 계획
- 보안 정책 강화