如何使用RabbitMQ Cluster Operator启用MQTT插件?
通过RabbitMQ Cluster Operator启用MQTT协议配置方案
完整配置示例
以下是适配已开启AMQP TLS加密场景的RabbitMQ自定义资源(CR)配置片段,直接修改你当前运行的集群CR即可生效:
apiVersion: rabbitmq.com/v1beta1 kind: RabbitmqCluster metadata: name: your-rabbitmq-cluster namespace: your-namespace spec: replicas: 3 # 新增:声明需要启用的MQTT相关插件 rabbitmq: additionalPlugins: - rabbitmq_mqtt # 核心MQTT协议插件 # 可选:如需WebSocket版本MQTT支持,新增以下插件 # - rabbitmq_web_mqtt # 新增:MQTT协议适配配置,已开启TLS场景适配 additionalConfig: | mqtt.allow_anonymous = false mqtt.tcp.port = 1883 mqtt.ssl.port = 8883 mqtt.ssl.certfile = /etc/rabbitmq-tls/tls.crt mqtt.ssl.keyfile = /etc/rabbitmq-tls/tls.key mqtt.ssl.cacertfile = /etc/rabbitmq-tls/ca.crt # 可选:WebSocket MQTT TLS配置,启用web_mqtt插件时配置 # web_mqtt.ssl.port = 15676 # web_mqtt.ssl.certfile = /etc/rabbitmq-tls/tls.crt # web_mqtt.ssl.keyfile = /etc/rabbitmq-tls/tls.key # 新增:暴露MQTT相关端口到服务 service: type: ClusterIP # 可根据你的实际需求调整为LoadBalancer/NodePort ports: # 原有AMQP等端口保留,新增以下MQTT端口 - name: mqtt port: 1883 targetPort: 1883 - name: mqtts port: 8883 targetPort: 8883 # 可选:WebSocket MQTT端口,启用web_mqtt插件时新增 # - name: web-mqtts # port: 15676 # targetPort: 15676 # 你原有TLS配置保留即可,无需修改 tls: secretName: your-existing-tls-secret disableNonTLSListeners: false # 根据你的实际安全要求调整
配置说明
- 插件启用逻辑:
additionalPlugins字段会触发Operator在所有集群节点自动启用指定插件,无需手动进入容器执行插件启用命令 - TLS证书复用:配置中引用的证书路径为Operator挂载TLS Secret的默认路径,直接复用你为AMQP配置的TLS证书即可,无需额外生成证书
- 配置生效:修改CR后,Operator会自动滚动更新集群节点,更新完成后即可通过8883端口访问加密的MQTT服务
生效验证
集群更新完成后,可执行以下命令验证插件是否正常启用:kubectl exec -it your-rabbitmq-cluster-server-0 -n your-namespace -- rabbitmq-plugins list | grep mqtt
若输出结果中rabbitmq_mqtt前缀带[E*]标记即为启用成功。
内容的提问来源于stack exchange,提问作者Jyotirmoy
相关产品推荐
相关产品推荐

