【发布时间】:2021-07-21 21:12:15
【问题描述】:
我有多个运行 RDP 应用程序的部署,它们都通过 ClusterIP 服务公开。我在我的 k8s 集群中有 nginx-ingress 控制器,为了允许 tcp,我在 nginx-ingress 控制器部署中添加了--tcp-services-configmap 标志,并为其创建了一个配置映射,如下所示
apiVersion: v1
kind: ConfigMap
metadata:
name: tcp-services
namespace: ingress-nginx
data:
3389: “demo/rdp-service1:3389”
这将公开“rdp-service1”服务。而且我还有 10 个这样的服务需要在同一个端口号上公开,但是如果我像这样在同一个 configmap 中添加更多服务
...
data
3389: “demo/rdp-service1:3389”
3389: “demo/rdp-service2:3389”
然后它会删除之前的服务数据,因为这里我也在k8s中部署了external-dns,所以ingress使用host: ...创建的所有记录都将开始指向configmap中新添加的服务所附加的部署。
现在我的最终要求是,只要我在入口中附加新创建的部署(RDP 应用程序)的规则,它就会开始允许 TCP 连接,那么有什么方法可以实现这一点。或者有没有其他可用的 Ingress 控制器可以解决这种类型的用例并且也可以很容易地与 external-dns 集成?
注意:- 我正在使用 AWS EKS 集群和带有外部 DNS 的 Route53。
【问题讨论】:
-
如果我对您的理解正确,您想公开多个
Deployments或RDP应用,这些应用在单端口上使用TCP流量和nginx-ingress.您是否考虑过创建一个包含所有内容的Service?您可以通过为每个Deployment添加标签来做到这一点,例如connect: true,并将其用作Configmap(big-rdp-service:3389) 中Service的选择器。 -
@DawidKruk 在这里我也想做基于虚拟名称主机的路由,为此我必须在入口中创建一个规则来指定后端服务和主机名,所以在这里我无法创建服务这包括所有部署。
标签: amazon-web-services kubernetes tcp kubernetes-ingress nginx-ingress