You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:在GKE中为EMQX Broker实现NGINX Ingress SSL终止及WSS连接

实现GKE上EMQX的WSS接入+谷歌托管证书SSL终止方案

核心思路

用GKE原生L7 Ingress配合谷歌托管证书实现SSL终止,将WSS流量转发到EMQX的WSS端口(默认8084),同时通过自定义域名暴露EMQX控制台。

步骤1:创建谷歌托管证书

先确保你的自定义域名已配置DNS解析(后续Ingress创建后会分配IP,需将域名A记录指向该IP)。创建ManagedCertificate资源:

apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
  name: emqx-cert
spec:
  domains:
    - mqtt.yourdomain.com  # 替换为你的自定义域名
    - console.yourdomain.com  # 可选,控制台单独域名

步骤2:配置EMQX Service

暴露WSS端口和控制台端口(假设EMQX Deployment已正确部署,容器端口为8084(WSS)、18083(HTTP控制台)):

apiVersion: v1
kind: Service
metadata:
  name: emqx-service
spec:
  type: ClusterIP
  ports:
    - name: wss
      port: 443
      targetPort: 8084
    - name: console-http
      port: 80
      targetPort: 18083
  selector:
    app: emqx  # 替换为你的EMQX Deployment的标签

步骤3:配置GKE Ingress

关联托管证书,设置路径规则转发流量:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: emqx-ingress
  annotations:
    networking.gke.io/managed-certificates: emqx-cert
    kubernetes.io/ingress.class: "gce"  # 指定使用GKE原生Ingress
spec:
  rules:
    - host: mqtt.yourdomain.com
      http:
        paths:
          - path: /mqtt
            pathType: Prefix
            backend:
              service:
                name: emqx-service
                port:
                  number: 443
    - host: console.yourdomain.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: emqx-service
                port:
                  number: 80

关键说明

  • WSS连接路径:客户端需使用wss://mqtt.yourdomain.com/mqtt连接,EMQX默认WSS监听路径为/mqtt。
  • 证书验证:创建Ingress后,GKE会自动完成证书颁发,可通过kubectl describe managedcertificate emqx-cert查看状态,当Status.CertificateStatus为ACTIVE时即可使用。
  • 控制台访问:通过https://console.yourdomain.com访问EMQX控制台,Ingress会自动将HTTP转为HTTPS(谷歌托管证书强制HTTPS)。

排查常见问题

  • 证书未颁发:检查域名DNS是否已指向Ingress的外部IP(可通过kubectl get ingress emqx-ingress获取IP),确保域名解析生效。
  • WSS连接失败:确认EMQX已启用WSS监听(默认开启),检查Service的targetPort是否正确指向EMQX的WSS端口(默认8084)。
  • 控制台无法访问:确认EMQX控制台端口配置正确,Ingress路径规则无误。

内容的提问来源于stack exchange,提问作者Orlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:55:16