Expose MQTT port 1883 and test message flow using MQTT CLI

Prequisite

Using Loadbalancer

Exposing port 1883 using Load Balancer

Exposing ip via load balancer in the following steps makes it public. HiveMQ recommends securing the authentication and authorisation of clients for production environment. E.g. https://hivemq.atlassian.net/wiki/spaces/KB/pages/2694479921

Please check out HiveMQ authentication and authorisation extensions to control client access and scope. https://www.hivemq.com/products/extensions/

  1. Open values.yaml and search for port 1883 under hivemq.ports.port

    ports: - name: "mqtt" port: 1883 expose: true patch: - '[{"op":"add","path":"/spec/selector/hivemq.com~1node-offline","value":"false"},{"op":"add","path":"/metadata/annotations","value":{"service.spec.externalTrafficPolicy":"Local"}}]' # If you want Kubernetes to expose the MQTT port to external traffic # - '[{"op":"add","path":"/spec/type","value":"LoadBalancer"}]'
  2. Uncomment and expose the loadbalancer

    ports: - name: "mqtt" port: 1883 expose: true patch: - '[{"op":"add","path":"/spec/selector/hivemq.com~1node-offline","value":"false"},{"op":"add","path":"/metadata/annotations","value":{"service.spec.externalTrafficPolicy":"Local"}}]' # If you want Kubernetes to expose the MQTT port to external traffic - '[{"op":"add","path":"/spec/type","value":"LoadBalancer"}]'
  3. Save the file and apply the changes

    helm upgrade hivemq --install hivemq/hivemq-operator --values values.yaml
  4. Check if the service for port 1883 has an external IP address (98.67.128.195 in our case)

     

     

In case the external IP is not visible, you can uninstall hivemq and reinstall it again.

  1. Uninstall HiveMQ
    helm uninstall hivemq

  2. Reapply the changes
    helm upgrade hivemq --install hivemq/hivemq-operator --values values.yaml

Connect To Your HiveMQ Cluster using MQTT CLI

  • Create a subscriber

  • Create a publisher and publish the message. This should send a message to the subscriber. Test: Hello

You have now successfully connected a new MQTT client to a HiveMQ cluster hosted on Azure.

Using Port Forwarding

Exposing port 1883 using Port Forwarding

  • Run the following command to get the services and look for the MQTT service (hivemq-hivemq-mqtt in our case)

  • Run the port forwarding as follows

  • After running this command, you can access your service on localhost:1883

Connect To Your HiveMQ Cluster using the MQTT CLI

  • Create a subscriber

  • Create a publisher and publish the message. This should send a message to the subscriber. Test: Hello

You have now successfully connected a new MQTT client to a HiveMQ cluster hosted on Azure.

Next steps