使用多个规则管理单个 Kubernetes Ingress

使用多个规则管理单个 Kubernetes Ingress

我正在 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,因为它是您现在创建集群时的一个选项。

相关内容