![使用多个规则管理单个 Kubernetes Ingress](https://linux22.com/image/743313/%E4%BD%BF%E7%94%A8%E5%A4%9A%E4%B8%AA%E8%A7%84%E5%88%99%E7%AE%A1%E7%90%86%E5%8D%95%E4%B8%AA%20Kubernetes%20Ingress.png)
我正在 GCP 上使用 Kubernetes Ingress 将流量路由到不同的 HTTP 服务。
TLDR:有没有办法通过从多个不同的规范文件向单个 Ingress 对象添加规则来控制它?我们希望允许每个微服务部署自己的路由规则,但只有一个(或几个)Ingress 实例。
服务应该在背景下公开:使用 Kubernetes 部署 HTTP 微服务的一个关键原因是我们的团队可以独立部署每个服务,甚至无需更改任何中央配置即可部署新服务。
在存在许多(数十、数百?)HTTP 端点且每个端点都独立管理和部署的环境中,路由成为一个问题;Ingress“应该”解决这个问题,但我们不想单独或集中地从服务管理路由配置。
答案1
现在无法通过使用 GKE Ingress Controller 从多个不同的规范文件向单个 Ingress 对象添加规则来控制它。
我想说的是,GKE Ingress Controller 实现只是为了支持您使用其实用程序从本机 K8s 创建 K8s Ingress 资源。
要做一些更复杂的事情,你需要使用其他实现:
Nginx-ingress 控制器的“可合并入口类型支持”,例如c4f4t0r推荐。
Istio 入口网关,这个我觉得比 Nginx 入口控制器更简单。你可以通过以下方式修改每个 Deployment 中的 HTTP 规则
Virtual Service
对于 GCP,我会考虑使用 Istio,因为它是您现在创建集群时的一个选项。