Use Heartbeat extension with HiveMQ Kubernetes Operator

Use Heartbeat extension with HiveMQ Kubernetes Operator

 Instructions

  1. Get a local copy of the Helm chart.
    This will download the chart of the version $CHART_VERSION and untar it to the subdirectory hivemq-operator:

    helm pull hivemq/hivemq-operator --version $CHART_VERSION --untar

    Hint: To download the latest chart version, omit the option --version $CHART_VERSION. To learn more about chart versions refer to the article https://hivemq.atlassian.net/wiki/spaces/KB/pages/2406449153.

  2. Update dependencies in the chart’s directory.
    This command verifies that the required charts, as expressed in 'Chart.yaml', are present in 'charts/' and are at an acceptable version. It will pull down the latest charts that satisfy the dependencies, and clean up old dependencies.

    helm dependencies update hivemq-operator
    Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "hivemq" chart repository ...Successfully got an update from the "prometheus-community" chart repository Update Complete. ⎈Happy Helming!⎈ Saving 1 charts Downloading kube-prometheus-stack from repo https://prometheus-community.github.io/helm-charts Deleting outdated charts
  3. Edit operator templates, and update the livenessProbe’s declaration.

    1. Edit the operator templates:

      1. hivemq-operator/operator-tmpls/cluster-daemon-set.yaml

      2. hivemq-operator/operator-tmpls/cluster-deployment.yaml

      3. hivemq-operator/operator-tmpls/cluster-stateful-set.yaml

    2. Find the existing declaration of the livenessProbe:

      livenessProbe: tcpSocket: port: {{ util:getPort(spec, "mqtt").port }} initialDelaySeconds: 15 periodSeconds: 30 failureThreshold: 240
    3. Replace with the new declaration of the livenessProbe:

      livenessProbe: httpGet: path: /heartbeat port: {{ util:getPort(spec, "heartbeat").port }} initialDelaySeconds: 30 periodSeconds: 15 failureThreshold: 240
  4. Get the values.yaml file for the hivemq-operator of the version $CHART_VERSION:

    helm show values hivemq/hivemq-operator --version $CHART_VERSION > my-values.yaml

    Hint: To download from the latest chart version, omit the option --version $CHART_VERSION. To learn more about chart versions refer to the article https://hivemq.atlassian.net/wiki/spaces/KB/pages/2406449153.

  5. Edit the my-values.yaml file:

    1. Add the heartbeat extension to the end of the hivemq.extensions array:

      hivemq: ... extensions: ... ... - name: hivemq-heartbeat-extension extensionUri: https://github.com/hivemq/hivemq-heartbeat-extension/releases/download/1.0.4/hivemq-heartbeat-extension-1.0.4.zip enabled: true
    2. Add the heartbeat port to the end of the hivemq.ports array:

      hivemq: ... ports: ... ... - name: "heartbeat" port: 9090 expose: true
  6. Using Helm, install hivemq-operator from the local directory hivemq-operator which is containing updated operator templates, and use the updated my-values.yaml:

    helm upgrade my-hivemq \ --install hivemq-operator \ --values my-values.yaml

     

  7. When the hivemq-operator and hivemq pods are ready, monitor the event.log:

    kubectl exec pod/my-hivemq-abcdefgh -- tail -f log/event.log

 Related articles