使用 TCP over SSL 在 Kubernetes (nginx-ingress-controller) 中运行 MQTT 代理

使用 TCP over SSL 在 Kubernetes (nginx-ingress-controller) 中运行 MQTT 代理

我目前正在尝试在我的 kubernetes 集群 (GKE) 上设置 MQTT 代理 (VerneMQ)。目前,我正在使用 nginx-ingress-controller 和 Google 提供的 L4 负载均衡器。VerneMQ 部署和服务正在集群中运行,子域指向负载均衡器的特定 IP。已创建 nginx-ingress-controller 上 TCP 的特定配置映射。我能够通过 MQTT/TCP 通过子域连接到 MQTT 客户端,但现在我希望它也以更安全的方式使用 MQTTS/TLS 运行。

是否可以通过 nginx-ingress-controller 使用 cert-manager 颁发的 lets-encrypt 证书通过 SSL 运行 TCP,以便将 MQTTS 连接到我的代理?

是否有其他入口控制器提供这些功能?

先感谢您。

答案1

看起来haproxy-ingress支持吗?我还没有测试过,但是文档这个选项可能有效:

...
data:
  "9900": "system-prod/admin:9900:PROXY::system-prod/tcp-9900"

9900 将代理到 system-prod 命名空间上的管理服务(端口 9900)。客户端应使用 PROXY 协议 v1 或 v2 进行连接。即将到来的连接应加密,HAProxy 将使用 system-prod/tcp-9900 secret 提供的 crt/key 进行 ssl 卸载数据。

答案2

Kubernetes 有两种不同的 nginx 入口控制器:

  1. “默认” nginx-ingress,由 Kubernetes 社区开发,通常称为
  2. NGINX 公司提供的“企业” nginx-ingress 版本(有免费版和付费“PLUS”版)

第一个版本(Kubernetes 社区版)仅支持 Web 流量(http)的 TLS 终止。而第二个版本通过使用传输服务器自定义资源。在安装 nginx 时,您需要定义自定义 MQTT 侦听器全局配置使其工作。

我对这个问题的回答更多细节。

相关内容