首页 > 解决方案 > K8s入口响应多个服务器名称而不配置它们?

问题描述

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

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

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

有没有办法,可能通过 TXT 记录或类似的方式让入口验证请求是针对“myapp”的?

谢谢

标签: nginxkubernetesnetworkingdnskubernetes-ingress

解决方案


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

如果你仍然想要 Nginx Ingress,那么你可以使用这样的主机名通配符

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

推荐阅读