Vault
Highly Available Vault Enterprise Cluster with Integrated Storage (Raft)
Important Note: This chart is not compatible with Helm 2. Please use Helm 3 with this chart.
Integrated storage (raft) can be enabled using the server.ha.raft.enabled
value:
helm install vault hashicorp/vault \
--set='server.image.repository=hashicorp/vault-enterprise' \
--set='server.image.tag=1.5.4_ent' \
--set='server.ha.enabled=true' \
--set='server.ha.raft.enabled=true'
Next, initialize and unseal vault-0
pod:
kubectl exec -ti vault-0 -- vault operator init
kubectl exec -ti vault-0 -- vault operator unseal
Finally, join the remaining pods to the Raft cluster and unseal them. The pods will need to communicate directly so we'll configure the pods to use the internal service provided by the Helm chart:
kubectl exec -ti vault-1 -- vault operator raft join http://vault-0.vault-internal:8200
kubectl exec -ti vault-1 -- vault operator unseal
kubectl exec -ti vault-2 -- vault operator raft join http://vault-0.vault-internal:8200
kubectl exec -ti vault-2 -- vault operator unseal
To verify if the Raft cluster has successfully been initialized, run the following.
First, login using the root
token on the vault-0
pod:
kubectl exec -ti vault-0 -- vault login
Next, list all the raft peers:
kubectl exec -ti vault-0 -- vault operator raft list-peers
Node Address State Voter
---- ------- ----- -----
a1799962-8711-7f28-23f0-cea05c8a527d vault-0.vault-internal:8201 leader true
e6876c97-aaaa-a92e-b99a-0aafab105745 vault-1.vault-internal:8201 follower true
4b5d7383-ff31-44df-e008-6a606828823b vault-2.vault-internal:8201 follower true
Add License to Vault Enterprise
First, setup a port-forward tunnel to the Vault Enterprise cluster:
kubectl port-forward vault-0 8200:8200
Next, in a separate terminal, create a payload.json
file that contains the license key like this example:
{
"text": "01ABCDEFG..."
}
Finally, using curl, apply the license key to the Vault API:
curl \
--header "X-Vault-Token: VAULT_LOGIN_TOKEN_HERE" \
--request PUT \
--data @payload.json \
http://127.0.0.1:8200/v1/sys/license
To verify that the license installation worked correctly, using curl
, run the following:
curl \
--header "X-Vault-Token: VAULT_LOGIN_TOKEN_HERE" \
http://127.0.0.1:8200/v1/sys/license