Exposing ip via load balancer in the following steps makes it public. Please check out HiveMQ authentication and authorisation extensions to control client access and scope. https://www.hivemq.com/products/extensions/
Prequisite: A running HiveMQ Cluster Install HiveMQ on the AKS cluster
Enable load balancer
Open values.yaml and search for port 1883 under hivemq.ports.port
Code Block 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"}]'
Uncomment and expose the loadbalancer
Code Block 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"}]'
Save the file and apply the changes
Code Block helm upgrade hivemq --install hivemq/hivemq-operator --values values.yaml
Check if the service for port 1883 has an external IP address now (in our case its hivemq-hivemq-mqtt)
Code Block kubectl get services
...