动态访问 Kubernetes 命名空间

时间:2021-02-12 20:25:22

标签: kubernetes google-cloud-platform google-kubernetes-engine kubernetes-ingress

是否可以定义入口使其指向不同的命名空间。

例如 为不同的客户运行相同的应用程序。 命名空间 - Customer1、Customer2

两者都具有相同的 api - /api/v1/images/

两者都托管在同一个集群上 - api-dev

现在我们可以根据 api 中的客户名称将流量定向到不同的命名空间 例如

Customer1/api/v1/images/- 将显示存储在 Customer1 命名空间中的图像

Customer2/api/v1/images/- 将显示存储在 Customer2 命名空间中的图像

客户名称将由在默认命名空间中运行的另一个服务提供

enter image description here

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点:

  1. 您可以在每个命名空间中为每个 Service 创建一个 DNS 条目,并让每个命名空间都有自己的 LoadBalancer(可能成本较高,但每个应用程序都可以独立扩展等)

  2. 您可以使用 Istio 创建单个 Gateway 并为每个 VirtualServices 创建一个 Namespace。这允许一个 DNS 连接到您的集群,Istio 可以将流量重定向到每个命名空间,而无需更新集群 DNS

  3. 您可以为您的应用程序 (https://github.com/c6o/provisioners) 编写一个简短的 CodeZero 配置程序,CodeZero 将自动为每个命名空间中的每个应用程序实例执行 DNS/入口。您可以使用现有应用进行测试