K8s 入口响应多个服务器名称而不配置它们?

时间:2021-01-28 11:44:54

标签: nginx kubernetes networking dns kubernetes-ingress

总的来说,我对 K8s 还很陌生,我是一名开发人员,而不是网络专家,所以我想了解一些有关如何实现目标的想法,以便我可以对其进行一些研究。

假设我有我的应用程序(托管在 k8s 上),比如说 myapp.domain.com。 让我们假设我有一个新客户,他们想要自己的 URL...比如说 backoffice.company.com。为此,我必须进入我的 k8 的入口并将“backoffice.company.com”添加到主机。 现在让我们假设我有... 30000 个客户这样做...........好吧,你明白了。

我想到的一个想法是使用外部 nginx,例如,它侦听所有服务器名称并将它们代理到“myapp.domain.com”。但这迫使我有一个额外的服务器来充当代理:/

有没有办法,也许是通过 TXT 记录或类似的东西,让入口验证请求是“myapp”?

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用负载均衡器直接向客户端公开服务,并添加指向负载均衡器的通配符 dns CNAME 记录 *.company.com。在这种情况下,您不需要 Nginx Ingress,它可以减少客户端的延迟并消除一个可能的瓶颈。

如果你仍然想要 Nginx Ingress,那么你可以像这样使用 hostname wildcards

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-wildcard-host
spec:
  rules:
  - host: "*.foo.com"
    http:
      paths:
      - pathType: Prefix
        path: "/foo"
        backend:
          service:
            name: service2
            port:
              number: 80