...
Put secrets to the vault and enable to read them via policy “hivemq”:
Code Block language bash vault secrets enable -path=hivemq-poc1 kv-v2 cd /tmp vault kv put hivemq-poc1/opt/hivemq/conf/hivemq.jks.b64 mydata="$(base64 </tmp/hivemq.jks)" \ keystore.password=changeme keystore.passphrase=changeme vault kv put hivemq-poc1/opt/hivemq/conf/hivemqtruststore.jks.b64 mydata="$(base64 </tmp/hivemqtruststore.jks)" vault kv put hivemq-poc1/opt/hivemq/license/hivemq.lic.b64 "mydata=$(base64 </tmp/hivemq.lic)" vault policy write hivemq - <<EOF path \"hivemq-poc1/data/opt/hivemq/license\" { capabilities = [\"read\"] } path \"hivemq-poc1/data/opt/hivemq/conf\" { capabilities = [\"read\"] } EOF
Create the HCL template to fetch and decode the secrets:
View file name consul-template-sidecar.hcl Code Block language bash kubectl apply -f consul-template-sidecar.hcl --namespace hivemq
Add init container to the hivemq-platform values.yaml
Code Block language yaml AadditionalInitContainers: - name: init-consul-template image: hashicorp/consul-template:latest command: [ "consul-template", "-once", "-config", "/consul-template/consul-template-sidecar.hcl" ] env: - name: CONSUL_TEMPLATE_LOG_LEVEL value: DEBUG - name: VAULT_ADDR value: http://vault.vault.svc.cluster.local:8200 - name: VAULT_TOKEN value: root - name: TARGET_ENV value: hivemq-poc1/data volumeMounts: - name: consul-template mountPath: /consul-template - name: hivemq-license mountPath: /opt/hivemq/license - name: hivemq-keystore mountPath: /opt/hivemq/consul
Add additional container:
Code Block language yaml - name: sidecar-consul-template image: hashicorp/consul-template:latest command: [ '/bin/sh', '-c' ] args: - | trap 'echo "Terminating container"; exit 0' SIGTERM consul-template -config /consul-template/consul-template-sidecar.hcl & while true; do sleep 1; done env: - name: CONSUL_TEMPLATE_LOG_LEVEL value: DEBUG - name: VAULT_ADDR value: http://vault.vault.svc.cluster.local:8200 - name: VAULT_TOKEN value: root - name: TARGET_ENV value: hivemq-poc1/data volumeMounts: - name: consul-template mountPath: /consul-template - name: hivemq-license mountPath: /opt/hivemq/license - name: hivemq-keystore mountPath: /opt/hivemq/consul
Add additional volumes
Code Block language yaml additionalVolumes: - name: hivemq-license path: /opt/hivemq/license type: emptyDir containerName: hivemq - type: emptyDir name: hivemq-keystore containerName: hivemq path: /tls-hivemqpokeystore - type: configMap name: consul-template containerName: sidecar-consul-template path: /consul-template
Install HiveMQ Platform Operator
Code Block language bash helm upgrade op --install hivemq/hivemq-platform-operator --set logLevel=DEBUG
Install HiveMQ Platform broker
Code Block language bash helm upgrade broker --install hivemq/hivemq-platform --values values-hivemq-platform.yaml
...