Skip to main content

vkdr vault

Use these commands to manage HashiCorp Vault for secrets management in your vkdr cluster.

vkdr vault install

Install HashiCorp Vault in your cluster.

vkdr vault install [-s] [--dev] [--tls] [-d=<domain>] \
[--dev-root-token=<dev_root_token>]

Flags

FlagShorthandDescriptionDefault
--domain-dDomain name for the generated ingresslocalhost
--secure-sEnable HTTPSfalse
--devEnable development modefalse
--dev-root-tokenRoot token for dev mode onlyroot
--tlsForce TLS mode on Vault internal portfalse

Examples

Install Vault in development mode (easiest for testing):

vkdr infra up
vkdr nginx install --default-ic
vkdr vault install --dev
# Access at http://vault.localhost:8000
# Dev root token: root

Install Vault in production mode:

vkdr vault install
# Vault will be sealed and needs initialization
vkdr vault init

Install with custom domain and HTTPS:

vkdr vault install -d example.com -s

Install with TLS on internal port:

vkdr vault install --tls

vkdr vault remove

Remove Vault from your cluster.

vkdr vault remove

Example

vkdr vault remove

vkdr vault init

Initialize and unseal HashiCorp Vault. Required after installing Vault in production mode.

vkdr vault init

Example

# After installing Vault in production mode
vkdr vault install
vkdr vault init

Note: In development mode (--dev), Vault is automatically initialized and unsealed. The init command is only needed for production mode installations.

vkdr vault generate-tls

Generate TLS certificates for Vault.

vkdr vault generate-tls [--force] [--save] \
[--cn=<commonName>] [--days=<validityDays>]

Flags

FlagDescriptionDefault
--cnCertificate Common Namevault
--daysCertificate validity in days365
--forceForce regeneration even if certificates existfalse
--saveSave certificates to Kubernetes secretsfalse

Examples

Generate TLS certificates:

vkdr vault generate-tls

Generate and save to Kubernetes secrets:

vkdr vault generate-tls --save

Generate with custom CN and validity:

vkdr vault generate-tls --cn vault.example.com --days 730 --save

Force regeneration of existing certificates:

vkdr vault generate-tls --force --save

vkdr vault explain

Explain Vault install formulas and configuration options.

vkdr vault explain

Complete Example

Development Mode Setup

For quick testing and development:

# Start cluster with ingress
vkdr infra up
vkdr nginx install --default-ic

# Install Vault in dev mode
vkdr vault install --dev --dev-root-token=mytoken

# Access Vault UI at http://vault.localhost:8000
# Login with token: mytoken

# Clean up
vkdr vault remove

Production Mode Setup

For production-like environments:

# Start cluster with ingress
vkdr infra up
vkdr nginx install --default-ic

# Generate TLS certificates
vkdr vault generate-tls --save

# Install Vault with TLS
vkdr vault install --tls

# Initialize and unseal Vault
vkdr vault init

# Access Vault UI at http://vault.localhost:8000
# Use the unseal keys and root token from init output

# Clean up
vkdr vault remove

Integration with PostgreSQL

Vault can manage database credentials with automatic rotation:

# Install Vault and PostgreSQL
vkdr vault install --dev
vkdr postgres install -w

# Create database with Vault integration
vkdr postgres createdb -d myapp -u myuser --vault

# Vault will manage dynamic credentials for this database

Formula Examples

Install Vault in Dev Mode

Vault can be installed in "dev" mode with a custom root token. No initialization or unsealing required.

vkdr infra start --traefik
vkdr vault install --dev --dev-root-token mysecret

Vault UI: http://vault.localhost:8000

Install Vault in Production Mode

Vault is installed in production mode by default. You need to initialize and unseal it.

vkdr infra start --traefik
vkdr vault install -s
vkdr vault init

The "init" operation handles both Vault initialization and unsealing. Unseal keys are stored in a Kubernetes secret for convenience.

Generate TLS Certificates

# Generate certificates with default settings
vkdr vault generate-tls

# Generate and save as Kubernetes secrets
vkdr vault generate-tls --save

# Force regeneration with custom CN and validity
vkdr vault generate-tls --cn vault.example.com --days 730 --force

# Then install Vault with TLS
vkdr vault install --tls

Certificates are stored in $HOME/.vkdr/certs/vault and optionally as Kubernetes secrets vault-server-ca and vault-server-tls.

Read and Decode Vault Keys

kubectl get secret vault-keys -n vkdr -o jsonpath='{.data}' | \
jq -r 'to_entries[] | "\(.key)=\(.value | @base64d)"'

External Secrets Operator Integration

vkdr infra start --traefik
vkdr vault install -s
vkdr vault init
vkdr eso install