【发布时间】:2020-06-01 01:16:45
【问题描述】:
您好,我想知道如何将多个域动态路由到 Kubernetes 中的不同服务,我试图让我的用户将域添加到他们的帐户并基于该域路由到特定服务以呈现他们的网页,但是与他们的域名。我不知道从哪里开始,想知道 Kubernetes 是否可以做到这一点。
【问题讨论】:
标签: kubernetes google-cloud-platform kubernetes-ingress nginx-ingress
您好,我想知道如何将多个域动态路由到 Kubernetes 中的不同服务,我试图让我的用户将域添加到他们的帐户并基于该域路由到特定服务以呈现他们的网页,但是与他们的域名。我不知道从哪里开始,想知道 Kubernetes 是否可以做到这一点。
【问题讨论】:
标签: kubernetes google-cloud-platform kubernetes-ingress nginx-ingress
由于您已使用 google cloud 标记了该问题,因此我的答案是针对 google cloud。
对于 HTTP/HTTPS 类型的流量,您可以创建一个入口资源,入口控制器(nginx 或 GKE 入口)将在谷歌云中创建一个 HTTP 负载均衡器。然后,您可以为负载均衡器提供静态 IP。最后,您可以在 DNS 中配置您的域,以便在用户访问您的域时将流量路由到该静态 IP。
Guide 了解如何创建入口和配置静态 IP。
Guide关于配置静态IP域名。
完整的guide 在谷歌云中使用 nginx 入口控制器。
这是上面nginx指南的架构。
对于多域用例,您只需扩展上述内容并使用相同的构造配置不同的域。
【讨论】:
假设所有这些服务都是基于 HTTP(s) 的,需要做两件事:
ingress 对象,将给定域路由到适当的服务(请参阅https://kubernetes.io/docs/concepts/services-networking/ingress/)CNAME 记录,但这取决于您的服务应该处理所有流量还是只处理其中的一部分) 【讨论】:
您可以创建入口对象以根据主机 URL 路由流量。
Ex:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: name-virtual-host-ingress
spec:
rules:
- host: foo.bar.com
http:
paths:
- backend:
serviceName: service1
servicePort: 80
- host: bar.foo.com
http:
paths:
- backend:
serviceName: service2
servicePort: 80
【讨论】: