我在 GCP 上使用 Kubernetes Ingress 将流量路由到不同的 HTTP 服务。
TLDR:有没有办法通过从多个不同的规范文件中添加规则来控制单个 Ingress 对象?我们希望允许每个微服务部署它自己的路由规则,但只有一个(或几个)Ingress 实例。
服务应该暴露在背景下:使用 Kubernetes 部署 HTTP 微服务的一个关键原因是我们的团队可以独立部署每个服务,甚至可以在不更改任何中心配置的情况下部署新服务。
在有许多(几十个,几百个?)HTTP端点的环境中,每个端点都是独立管理和部署的,路由成为一个问题;Ingress“应该”解决这个问题,但我们不想单独或集中管理服务的路由配置。
现在无法通过使用 GKE Ingress Controller 从多个不同的规范文件中添加规则来控制单个 Ingress 对象。
我想说的是,GKE Ingress Controller 实现只是为了支持您使用来自本机 K8s 的实用程序创建 K8s Ingress 资源。
要执行更复杂的操作,您需要使用其他实现:
Nginx-ingress 控制器的“Mergeable Ingress Types Support”,就像c4f4t0r推荐的一样。
Istio ingress gateway,这个我感觉比 Nginx ingress controller 更简单。您可以通过以下方式修改每个部署中的 HTTP 规则
Virtual Service
对于 GCP,我会考虑使用 Istio,因为它是您现在创建集群时的一个选项。