Agent Injector (Annotations)
Mutating Webhook injiziert einen
Vault-Agent-Sidecar; Secrets landen als Dateien
unter /vault/secrets/. Templates rendern beliebige
Formate. agent-pre-populate-only für
Jobs/CronJobs (nur Init-Container, Pod terminiert sauber).
vault-helm 0.34.1 setzt per Default Vault 2.0.4
(keine Fixes mehr seit 2.1.0): server.image.tag,
injector.agentImage.tag und
csi.agent.image.tag selbst pinnen, dazu
injector.image.tag (vault-k8s 1.7.7).
metadata:
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/role: "app"
vault.hashicorp.com/agent-inject-secret-db:
"secret/data/app/db"
vault.hashicorp.com/agent-inject-template-db: |
{{- with secret "secret/data/app/db" -}}
pg://{{ .Data.data.user }}:{{ .Data.data.pass }}@db
{{- end -}}
Vault CSI Provider
Der Secrets-Store-CSI-Driver mountet Secrets als
Volume (SecretProviderClass), Auth über den
Pod-ServiceAccount (kubernetes/JWT). Optionaler Sync in
K8s-Secrets für Env-Vars. Alle Secrets Engines
nutzbar.
VSO: Vault Secrets Operator
Operator synct Vault-Secrets in native
K8s-Secrets: CRDs VaultConnection,
VaultAuth, VaultStaticSecret,
VaultDynamicSecret, VaultPKISecret.
Remediert Drift am Ziel-Secret, rotiert und kann Deployments per
rolloutRestartTargets neu ausrollen.
apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultStaticSecret
metadata: {name: app-db, namespace: prod}
spec:
vaultAuthRef: app-auth
mount: secret
type: kv-v2
path: app/db
refreshAfter: 60s
destination: {name: app-db, create: true}