需要集中管理数据库密码、API Key、证书和动态凭据,要求审计、租约和细粒度权限。适合多团队、多环境,且不希望把密钥散落在 CI 变量和 ConfigMap 中。
helm repo add hashicorp https://helm.releases.hashicorp.com
helm repo update
helm install vault hashicorp/vault \
--namespace vault --create-namespace \
--set 'server.ha.enabled=true' \
--set 'server.ha.raft.enabled=true' \
--set 'server.dataStorage.size=20Gi'
kubectl -n vault exec -it vault-0 -- vault operator init
kubectl -n vault exec -it vault-0 -- vault operator unseal <KEY_1>
kubectl -n vault exec -it vault-0 -- vault operator unseal <KEY_2>
kubectl -n vault exec -it vault-0 -- vault operator unseal <KEY_3>
初始化的 root token 只用于首次配置,配置完成后立即撤销或封存。
kubectl -n vault exec -it vault-0 -- vault login <ROOT_TOKEN>
kubectl -n vault exec -it vault-0 -- vault secrets enable -path=secret kv-v2
kubectl -n vault exec -it vault-0 -- vault kv put secret/demo/db username=app password='***'
vault policy write demo-read - <<'EOF'
path "secret/data/demo/*" {
capabilities = ["read"]
}
EOF
vault auth enable kubernetes
vault write auth/kubernetes/config kubernetes_host="https://kubernetes.default.svc"
vault write auth/kubernetes/role/demo \
bound_service_account_names=demo \
bound_service_account_namespaces=demo \
policies=demo-read ttl=1h
kubectl annotate deploy demo \
vault.hashicorp.com/agent-inject="true" \
vault.hashicorp.com/role="demo" \
vault.hashicorp.com/agent-inject-secret-db="secret/data/demo/db"
vault audit enable file file_path=/vault/logs/audit.log
vault operator raft snapshot save /vault/backup/vault.snap
vault status 显示 Sealed: false 和 HA Mode: active/standby。vault policy write。vault operator seal,会中断所有动态凭据续期。bound_service_account_names 配错,表现为 permission denied。data/。vault — 初始化、解封、策略、认证和快照kubectl — 查看 Vault Pod 与注入注解helm — 安装和升级 Vaultopenssl — 证书检查