Skip to main content

Highly available OpenBao cluster with integrated storage (Raft)

warning

Important Note: This chart is not compatible with Helm 2. Please use Helm 3.6+ with this chart.

Integrated storage (raft) can be enabled using the server.ha.raft.enabled value:

helm install openbao hashicorp/openbao \
--set='server.ha.enabled=true' \
--set='server.ha.raft.enabled=true'

Next, initialize and unseal openbao-0 pod:

kubectl exec -ti openbao-0 -- bao operator init
kubectl exec -ti openbao-0 -- bao 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 openbao-1 -- bao operator raft join http://openbao-0.openbao-internal:8200
kubectl exec -ti openbao-1 -- bao operator unseal

kubectl exec -ti openbao-2 -- bao operator raft join http://openbao-0.openbao-internal:8200
kubectl exec -ti openbao-2 -- bao operator unseal

To verify if the Raft cluster has successfully been initialized, run the following.

First, login using the root token on the openbao-0 pod:

kubectl exec -ti openbao-0 -- bao login

Next, list all the raft peers:

$ kubectl exec -ti openbao-0 -- bao operator raft list-peers

Node Address State Voter
---- ------- ----- -----
a1799962-8711-7f28-23f0-cea05c8a527d openbao-0.openbao-internal:8201 leader true
e6876c97-aaaa-a92e-b99a-0aafab105745 openbao-1.openbao-internal:8201 follower true
4b5d7383-ff31-44df-e008-6a606828823b openbao-2.openbao-internal:8201 follower true

OpenBao with Integrated Storage (Raft) is now ready to use!