0

我想使用 Angular 和微服务后端创建一个 Web 应用程序,为一些 REST api 提供服务。然后我想把所有东西都部署在 Kubernetes 上。

假设应用程序将提供一些饮料(咖啡和茶)。为了简化,我们假设应用程序是完全无状态的,我希望 2 拥有微服务。

如果没有 Kubernetes,我会这样做:

  1. Coffea 服务 - /api/coffea 端点的 REST API

  2. 茶服务 - /api/tea 端点的休息 API

  3. Nginx - 带有 Angular 应用程序(HTML/CSS/JS/图像等)和网关(/api/coffea 和 /api/tea 端点的代理)的静态内容

现在的问题是如何在 Kubernetes 中体现这一点?将所有内容部署在多个副本中,然后将 Coffea 和 Tea 服务公开为 NodePort,最后将 Nginx 公开为 LoadBalancer 是否足够?这是一个正确的方法吗?我应该使用 Ingress 而不是制作自己的 nginx 代理吗?如果是,那么如何使用 Ingress Controller 提供静态内容?

提前致谢!

4

1 回答 1

1

将所有内容部署在多个副本中,然后将 Coffea 和 Tea 服务公开为 NodePort,最后将 Nginx 公开为 LoadBalancer 是否足够?

可能是的,这足以让您的应用程序正常工作,但最好的方法是将您的服务与集群 IP 一起使用并通过 Ingress 公开它。因为 Ingress 适合路由但不适合提供静态内容,所以您可以将 Nginx 用作仅用于静态内容的 Web 服务器。你的应用看起来像是隐藏在 Ingress 后面的 3 个服务:

  1. 具有集群 IP 的咖啡服务
  2. 带集群 IP 的茶水服务
  3. 具有集群 IP 的 Nginx 服务作为静态内容的 Web 服务器

这是一个很好的答案,为什么最好将 Nginx 用作静态内容的服务。

于 2018-04-12T11:09:56.380 回答