HashiCorp Vault secret injector for Kubernetes init containers
1.2K
Kubernetes init container that fetches secrets from HashiCorp Vault and writes them to a shared volume.
docker run \
-e VAULT_ADDR=http://vault:8200 \
-e VAULT_TOKEN=hvs.xxx \
-e VAULT_SECRET_PATH=secret/myapp \
-v $(pwd)/secrets:/secrets \
ogulcanaydogan/vault-init
-e VAULT_AUTH_METHOD=token -e VAULT_TOKEN=hvs.xxx
-e VAULT_AUTH_METHOD=approle -e VAULT_ROLE_ID=xxx -e VAULT_SECRET_ID=xxx
-e VAULT_AUTH_METHOD=kubernetes -e VAULT_ROLE=myapp
| Variable | Description | Default |
|---|---|---|
VAULT_ADDR | Vault server address | http://vault:8200 |
VAULT_AUTH_METHOD | Auth method (token/approle/kubernetes) | token |
VAULT_TOKEN | Vault token | - |
VAULT_ROLE_ID | AppRole role ID | - |
VAULT_SECRET_ID | AppRole secret ID | - |
VAULT_ROLE | K8s auth role name | - |
VAULT_SECRET_PATH | Secret path (required) | - |
VAULT_KV_VERSION | KV engine version (1 or 2) | 2 |
OUTPUT_FORMAT | Output format (env/json/yaml) | env |
OUTPUT_FILE | Output file path | /secrets/.env |
TEMPLATE_FILE | Template file for custom output | - |
SECRET_PREFIX | Prefix for env variable names | - |
services:
vault-init:
image: ogulcanaydogan/vault-init
environment:
- VAULT_ADDR=http://vault:8200
- VAULT_TOKEN=${VAULT_TOKEN}
- VAULT_SECRET_PATH=secret/myapp
volumes:
- secrets:/secrets
app:
image: myapp
depends_on:
vault-init:
condition: service_completed_successfully
volumes:
- secrets:/secrets:ro
env_file:
- /secrets/.env
volumes:
secrets:
initContainers:
- name: vault-init
image: ogulcanaydogan/vault-init
env:
- name: VAULT_ADDR
value: "http://vault.vault:8200"
- name: VAULT_AUTH_METHOD
value: "kubernetes"
- name: VAULT_ROLE
value: "myapp"
- name: VAULT_SECRET_PATH
value: "secret/myapp/config"
volumeMounts:
- name: secrets
mountPath: /secrets
MIT
Content type
Image
Digest
sha256:83ff6b8c0…
Size
129.2 MB
Last updated
7 months ago
docker pull ogulcanaydogan/vault-init