In today’s cloud-native ecosystem, managing sensitive information like API keys, tokens, and credentials is more crucial than ever. Whether you’re an ERP implementation consultant or a DevOps engineer, securing your infrastructure demands a powerful tool like HashiCorp Vault.
Vault provides centralized secrets management, encryption-as-a-service, and granular access control. This guide walks you through deploying HashiCorp Vault within a Kubernetes environment — perfect for development, testing, or production-ready deployments.
🚀 Prerequisites: What You Need Before You Start
Before diving into the deployment steps, make sure you have the following tools and configurations ready:
- A working Kubernetes cluster (e.g., installed via kubeadm, Minikube, or k3s for lightweight use)
kubectl
command-line tool configured- Helm package manager installed (we’ll install this in the first step)
🛠️ Step 1: Installing Helm (If Not Already Installed)
Helm is Kubernetes’ package manager that simplifies deploying complex applications.
Run the following command to install Helm:
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
Verify the installation:
helm version
Expected output:
version.BuildInfo{Version:"v3.12.0", ...}
📦 Step 2: Add the HashiCorp Helm Repository
Add HashiCorp’s Helm chart repository to your local Helm setup:
helm repo add hashicorp https://helm.releases.hashicorp.com
helm repo update
This ensures you always have access to the latest Vault charts for deployment.
📂 Step 3: Create a Kubernetes Namespace for Vault
Namespaces isolate resources in Kubernetes, making management and access easier.
kubectl create namespace vault
🔄 Step 4: Deploy Vault in Development Mode (For Testing Only)
To quickly spin up Vault for testing:
helm install vault hashicorp/vault --namespace vault --set "server.dev.enabled=true"
⚠️ Note: This development mode:
- Does not persist data
- Uses a predefined root token (find it with
kubectl logs -n vault vault-0
)- Is not secure or suitable for production use
🔒 Step 5: Deploy HashiCorp Vault in Production Mode
To create a production-grade deployment, enable High Availability (HA) mode with persistent storage.
1. Create a Configuration File (vault-values.yaml
)
server:
ha:
enabled: true
replicas: 3
dataStorage:
enabled: true
size: 1Gi
storageClass: "default"
standalone:
enabled: false
auditStorage:
enabled: true
injector:
enabled: true
2. Install Vault Using Helm and the Custom Configuration
helm install vault hashicorp/vault -n vault -f vault-values.yaml
3. Verify the Deployment
kubectl get pods -n vault
Expected output:
vault-0 1/1 Running 0 2m
vault-agent-injector-xxxxx 1/1 Running 0 2m
🌐 Step 6: Expose the Vault UI Using Ingress (Optional)
To access the Vault UI externally via a custom domain, configure an Ingress Controller.
1. Install NGINX Ingress Controller
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install ingress-nginx ingress-nginx/ingress-nginx --namespace ingress-nginx --create-namespace
2. Create the Ingress Rule (vault-ingress.yaml
)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: vault-ingress
namespace: vault
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
ingressClassName: nginx
rules:
- host: vault.yourdomain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: vault-ui
port:
number: 8200
tls:
- hosts:
- vault.yourdomain.com
secretName: vault-tls
3. Apply the Ingress Resource
kubectl apply -f vault-ingress.yaml
🔑 Step 7: Initialize and Unseal Vault
When Vault starts, it is in a sealed state. You must initialize it and provide unseal keys.
Option 1: Port-Forward to Access UI
kubectl port-forward svc/vault-ui 8200:8200 -n vault
Visit:http://localhost:8200
Option 2: Initialize Vault Using CLI
- Initialize Vault:
kubectl exec -n vault -it vault-0 -- vault operator init
This will generate:
- Unseal Keys (3 or more)
- Initial Root Token
Save these securely.
- Unseal Vault:
kubectl exec -n vault -it vault-0 -- vault operator unseal <Key1>
kubectl exec -n vault -it vault-0 -- vault operator unseal <Key2>
kubectl exec -n vault -it vault-0 -- vault operator unseal <Key3>
Repeat this for each Vault pod in your HA setup.
✅ What’s Next After Vault Deployment?
Now that Vault is running securely, here’s what you can do:
- Store and access secrets securely in your Kubernetes applications
- Inject secrets automatically into containers using Vault Agent
- Integrate with systems like Odoo, CI/CD pipelines, and databases
- Enable Kubernetes Auth or LDAP for secure, role-based access
- Implement dynamic secrets for database access
- Turn on audit logging to meet compliance requirements
For an ERP implementation consultant, using Vault ensures that client credentials, integration keys, and sensitive environment variables remain protected throughout deployment and scaling.
🧠 Final Thoughts
Deploying HashiCorp Vault in a Kubernetes environment using Helm charts offers a scalable, secure, and cloud-native solution for managing secrets. Whether you’re building complex microservices or implementing enterprise-grade ERP systems, Vault simplifies secrets management while strengthening your security posture.
Book an implementation consultant today.