Configure Vault for ActiveMQ
This deployment requires redeployment of ActiveMQ
1. Vault Setup
cd CX-4.10.5/kubernetes
helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
helm install csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver --namespace vault
kubectl -n vault exec -it vault-0 -- sh
Create a KV-v2 secret in Vault:
vault secrets enable -path=kv kv-v2
vault kv put kv/activemq/broker \
activemq.username=admin \
activemq.password=Expertflow123
Verify:
vault kv get kv/activemq/broker
Write policy for the role
vault policy write ef-policy - <<EOF
path "/transit/export/*" {
capabilities = ["read"]
}
path "database/creds/*" {
capabilities = ["read"]
}
path "kv/data/activemq/broker" {
capabilities = ["read"]
}
EOF
Attach policy to the role
vault write auth/approle/role/expertflow policies="ef-policy"
2. Vault Role for Kubernetes Authentication
Create a policy for Kubernetes role in Vault:
vault policy write activemq-kv - <<EOF
path "kv/data/activemq/broker" {
capabilities = ["read"]
}
EOF
Create a Kubernetes role in Vault:
vault auth enable kubernetes
vault write auth/kubernetes/config \
token_reviewer_jwt="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \
kubernetes_host="https://kubernetes.default.svc:443" \
kubernetes_ca_cert=@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
vault write auth/kubernetes/role/expertflow \
bound_service_account_names=default \
bound_service_account_namespaces=ef-external \
policies=activemq-kv \
ttl=87600h
exit
3. Apply SecretProviderClass, ClusterRole and ClusterRoleBinding
kubectl apply -f pre-deployment/activemq-vault
4. Deploy / Restart Pods
kubectl delete pod -n vault <vault-csi-provider-pod>
# Restart ActiveMQ pod
kubectl delete pod -n ef-external <activemq-pod>