在 Openshift 上部署 Spring 个微服务

Deploy Spring Microservices on Openshift

我需要在 Openshift 上部署一些微服务。这些微服务是使用 Spring 云实现的。我使用 Spring Eureka 服务 discovery/load-balancing && Spring Zuul 服务路由

据我了解,Openshift 已经通过 Kubernetes 提供了这些功能(服务发现、负载均衡、路由)。

话虽如此,我可以将 Spring Eureka 和 Spring Zuul 与 openshift 平台集成吗?

将 Spring Eureka 和 Spring Zuul 组件添加到 Openshift 中不是多余的吗,因为平台本身已经提供了这些微服务功能?

我正在考虑删除服务注册表和路由 Spring 组件,只使用 Openshift 实现路由。然而,这将使项目严重依赖于这个云平台。

您的方法是什么?使用OpenShift提供的特性(路由、负载均衡)还是使用Spring框架提供的特性并尝试与云平台集成?

谢谢

确实是多余的。 Eureka 可以被 Kubernetes 服务替代。 (他们为一组pods提供负载均衡器和域名) Zuul 可以替换为 OpenShift Routes 来公开您的服务。

如果您使用的是平台,请使用平台提供的功能。 Kubernetes 服务将用于任何基于 Kubernetes 的平台。所以我认为这是一个很容易替换并保持你与平台低耦合的人。如果 Zuul 仅用于路由,则路由可能会更困难;用 OpenShift 路由器替换它。如果 Zuul 还具有安全性等其他职责,那么坚持使用 Zuul 可能会更好。

我同意@Jeff 并且我想补充一下使用 spring zuul 作为 网关 而不是 openshift 路线:

  • 如果您使用 spring zuul 作为网关,您可以提供从单点到集群的访问。否则,您的客户端必须知道 urls 通过 openshift routes 公开。它会增加代码的复杂性并且难以维护。使用 API 网关的一个主要好处是它封装了应用程序的内部结构。
  • 另一个是关于安全的。如果您使用 openshift routes 公开您的内部微服务,实际上您直接打开了微服务通往 public 世界的大门。另外,如果你想使用JWT或者安全令牌,你应该选择spring zuul.
  • API 网关为每种客户端提供特定的 API。这减少了客户端和应用程序之间的往返次数。