【问题标题】:How to deploy microservices web application on Kubernetes?如何在 Kubernetes 上部署微服务 Web 应用程序?
【发布时间】:2018-09-22 09:59:30
【问题描述】:

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

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

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

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

  2. Tea 服务 - /api/tea 端点的 REST API

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

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

提前致谢!

【问题讨论】:

    标签: web-applications kubernetes microservices kubernetes-ingress


    【解决方案1】:

    将所有内容部署在多个副本中就足够了吗? 然后将 Coffea 和 Tea 服务公开为 NodePort,最后公开 Nginx 作为负载均衡器?

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

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

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

    【讨论】:

    • 我收到了照片。我一直认为 Ingress 是一个传统的 Web 服务器(静态内容 + API 网关)。我花了很多时间在谷歌上搜索如何以这种方式使用 Ingress。现在我发现我有错误的概念。感谢您的澄清
    最近更新 更多