总的来说,我对 K8s 还很陌生,我是一名开发人员,而不是网络专家,所以我想了解一些有关如何实现目标的想法,以便我可以对其进行一些研究。
假设我有我的应用程序(托管在 k8s 上),比如说 myapp.domain.com。 让我们假设我有一个新客户,他们想要自己的 URL...比如说 backoffice.company.com。为此,我必须进入我的 k8 的入口并将“backoffice.company.com”添加到主机。 现在让我们假设我有... 30000 个客户这样做...........好吧,你明白了。
我想到的一个想法是使用外部 nginx,例如,它侦听所有服务器名称并将它们代理到“myapp.domain.com”。但这迫使我有一个额外的服务器来充当代理:/
有没有办法,也许是通过 TXT 记录或类似的东西,让入口验证请求是“myapp”?
谢谢
答案 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