如何解决Kubernetes NGINX Ingŕess 控制器 TCP/MQTT 配置
我有一个 Kubernetes 集群,其中包含一个适用于一个 REST API 的有效 Ingress 配置。现在我想向这个配置添加一个端口转发到我的 mqtt 适配器,但是我在找到一种向配置添加 TCP 规则的方法时遇到了问题。 Kubernetes 文档仅显示了一个 HTTP 示例。 https://kubernetes.io/docs/concepts/services-networking/ingress/
我对 Kubernetes 还很陌生,我在适应其他配置时遇到了问题,因为我发现的内容与我在 Kubernetes 文档中发现的完全不同。
我使用了一个带有 letencrypt 的常规 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 流量。一些入口控制器支持非 HTTP 数据包处理的自定义扩展,但每个控制器都不同。 https://kubernetes.github.io/ingress-nginx/user-guide/exposing-tcp-udp-services/ 展示了如何专门针对 ingress-nginx 执行此操作,如图所示,您可以通过某些 ConfigMap 完全带外配置它,而不是通过 Ingress 对象。
您可能真正想要的是 LoadBalancer 类型的服务对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。