Upgrading both HiveMQ version 4.6.4 and the k8s operator version 0.9.0
Challenge
The HiveMQ operator (since 0.9.0) as well as the HiveMQ Docker images (since 4.6.4) introduced some breaking changes. The. following manual shows how to execute a zero downtime rolling upgrade from older operator and HiveMQ versions.
Prerequisites:
k8s version 1.16+ is installed
Helm version 3 is installed
The Hivemq k8s operator repo is already added in helm repo
Instructions:
In the following guide, we will outline the essential steps for performing a zero-downtime upgrade of both the HiveMQ Kubernetes (k8s) operator and HiveMQ itself.
By carefully following the instructions below, you will be able to successfully upgrade to HiveMQ version 4.6.4, and ensure that it is running smoothly with the k8s operator version 0.9.2.
Steps to follow:
Example of hivemq-cluster.yaml file:
apiVersion: hivemq.com/v1
kind: HiveMQCluster
metadata:
name: hivemq-dev
spec:
env:
- name: TEST_ENV
value: 'set'
Example of HiveMQ operator values.yaml file:
monitoring:
enabled: true
operator:
admissionWebhooks:
enabled: false
failurePolicy: Fail
deployCr: false
logLevel: DEBUG
Deploy Hivemq operator with 0.8.7
helm upgrade --version 0.8.7 --install -f operator.yaml <release name> hivemq/hivemq-operator
Deploy Hivemq cluster with hivemq 4.6.2
Simply apply the new CRD using the following command (considering k8s version is 1.16+)
Note: This step can be skipped if you are using BladeCenter.Scale operator to 0 so it doesn’t immediately reconcile. This will only remove the operator pod, but leave the HiveMQ nodes as remaining
Edit hivemq cluster yaml to update the hivemq version as 4.6.4
Apply the changes
check the pods status(no errors)
Update operator version i.e 0.9.2 in the cluster(operator config File or command line)
Run the following command for a rolling upgrade
Related articles