如何在 Kubernetes 上部署微服务 Web 应用程序?

How to deploy microservices web application on Kubernetes?

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

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

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

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

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

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

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

提前致谢!

Would it be enough just to deploy everything in a several replicas, then expose Coffea and Tea services as a NodePort and finally expose Nginx as a LoadBalancer?

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

  1. 具有集群 IP 的 Coffea 服务
  2. 有集群IP的茶水服务
  3. 使用集群 IP 作为静态内容的 Web 服务器的 Nginx 服务

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