Top
Enterprise Postgres 18 for Kubernetes User's Guide

4.6.5 Installing HashiCorp Vault Provider for Secret Store CSI Driver

4.6.5.1 Install HashiCorp Provider drivers using helm chart

helm repo add hashicorp https://helm.releases.hashicorp.com
helm install vault hashicorp/vault --set "server.enabled=false"  --set "injector.enabled=false" --set "csi.enabled=true"

4.6.5.2 Configure Kubernetes Authentication for HashiCorp Vault

vault auth enable kubernetes
vault write auth/kubernetes/config \
token_reviewer_jwt="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \
kubernetes_host="https://$KUBERNETES_PORT_443_TCP_ADDR:443" \
kubernetes_ca_cert=@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt

4.6.5.3 Store Secret in HashiCorp Vault

vault enable secret
vault kv put secret/<path> <secret name>=<secret value>

4.6.5.4 Store Cert in HashiCorp Vault

Certificate should be in below format before uploading cert to HashiCorp Vault i.e it should be one .pem file (key, crt and CA in one file)

(Refer "mycert.pem" for sample certificate format)

Vault kv put secret/<path> <secret name>=@<path to cert.pem>

4.6.5.5 Create policy and role to access the secrets from HashiCorp Vault

Policy:

vault policy write <policy name> - <<EOF
path "secret/database/credentials" {
capabilities = ["read", "write", "update","delete"]
}
EOF

Role:

vault write auth/kubernetes/role/<role name> \
bound_service_account_names=* \
bound_service_account_namespaces=*\
policies=<policy name> \
ttl=24h

Note: access can be restricted by assigning <fep-cluster>-sa service account to bound_service_account_names and also can be namespace restircted by assigning value to bound_service_account_namespaces

Note

Only single key value for secret to be stored in HashiCorp vault.