Kubernetes Ingress 是否应该与 Spring Cloud Gateway 一起使用?

Should Kubernetes Ingress lives together with a Spring Cloud Gateway?

请问小架构和设计问题。

问题: Kubernetes Ingress 应该与 Spring Cloud Gateway 一起使用吗?如果不是,应该首选哪一个?

首先,通过 Spring Webflux / Spring Cloud Gateway 项目,我成功实现了基于路由的转发。意思是,我所有的客户只需要知道这个 Spring 云网关端点,如果 URL 包含 serviceA,Spring 云网关将转发到 serviceA,如果包含 serviceB,则转发到 serviceB,等等,直截了当。

我添加了一些更多的“软件级功能”,例如动态配置(在运行时更改路由)、断路器、速率限制、隔板和其他一些功能,非常酷,但实际上,我最终使用以路由转发为主。

几周前,我花时间研究 Kubernetes,更准确地说是 Kubernetes Ingress。 我设法学习了 Kubernetes Ingress 是一个非常酷和强大的东西。我设法至少执行了基于路由的转发。 这意味着,客户端只需要知道这个唯一的 Ingress 端点,Ingress 将转发到 Kubernetes 集群中的底层服务。到目前为止,它将所有内容转发到 Spring Cloud Gateway,后者将转发到其他所有内容。我试过了,它可以首先转发到真正的业务服务。

这就是我怀疑的时刻。

我只是重复了工作吗? (我的意思是在功能方面,我在学习这两个方面都很开心)。

我是否应该考虑 Spring 云网关(只有他)真正负责门控的架构?

我是否应该考虑一个 Ingress 和 Software Gateway 都非常重要的架构,在两者中配置功能? (接受重复的工作?)

我应该完全删除 Spring 云网关吗?

谢谢

在我看来,Kubernetes 必须与 Spring Cloud Gateway 共存。

反向代理具有中央日志记录、安全性、缓存、路由、流量管理等功能,但也有它们不能做的事情。 API 网关在此时发挥作用。它们具有反向代理的所有功能,此外还具有它们无法提供的额外功能。因此,API 网关被称为增强型反向代理。

所以 Kubernetes ingress 就像反向代理一样,而 Spring 云网关是 API 网关模式的实现。正如我在上面的定义中提到的,我可以说一些你不能用 Kubernetes 做的事情。

  • 你能实现API组合吗?否
  • 能否通过Kubernetes实现JWT认证?如果是,是否可以通过 Kubernetes 携带超过 8 KB 的 JWT 到下游服务?否
  • 你能合并 Kubernetes 的所有 Swagger/Open API 文档吗?否