Kubernetes NGINX Ing?ess 控制器 TCP/MQTT 配置

JWo*_*JWo 3 mqtt kubernetes kubernetes-ingress nginx-ingress

我有一个 Kubernetes 集群,其中包含一个 REST API 的有效 Ingress 配置。现在我想将端口转发到我的 mqtt 适配器添加到此配置中,但我在寻找将 TCP 规则添加到配置中的方法时遇到问题。Kubernetes 文档仅显示一个 HTTP 示例。https://kubernetes.io/docs/concepts/services-networking/ingress/

我对 Kubernetes 还很陌生,在适应其他配置时遇到了问题,因为我发现的任何内容看起来都与我在 Kubernetes 文档中找到的完全不同。

我使用了常规的 nginx Web 服务器和 LetsEncrypt 来保护 TCP 连接。我希望这也适用于入口控制器。

我的目标是通过 MQTT 使用 TLS 将消息发送到我的集群。有人有这方面的正确文档或知道如何添加配置吗?

我的配置如下:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ratings-web-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: letsencrypt
spec:
  tls:
    - hosts: 
      - example.com
      secretName: ratings-web-cert
  
  rules:
  - host: example.com
    http:
      paths:
      - backend:
          serviceName: test-api
          servicePort: 8080
        path: /
Run Code Online (Sandbox Code Playgroud)

cod*_*ger 6

Ingress 系统一般只处理 HTTP 流量。一些入口控制器支持非 HTTP 数据包处理的自定义扩展,但每个入口控制器都不同。https://kubernetes.github.io/ingress-nginx/user-guide/exusing-tcp-udp-services/显示了如何专门针对 ingress-nginx 执行此操作,如图所示,您可以通过一些 ConfigMap 将其完全带外配置,而不是通过 Ingress 对象。

您可能真正想要的是 LoadBalancer 类型的 Service 对象。