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

Kubernetes NGINX Ingŕess controller TCP / MQTT config

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

我是 Kubernetes 的新手,我在调整其他配置时遇到问题,因为我发现的任何内容看起来都与我在 Kubernetes 文档中找到的完全不同。

我使用带有 letsencrypt 的常规 nginx 网络服务器来保护 TCP 连接。我希望这也适用于入口控制器。

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

我的配置如下所示:

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: /

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

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