gpt4 book ai didi

angular - SPA、微服务和 Kubernetes(架构问题)

转载 作者:行者123 更新时间:2023-12-02 11:55:21 24 4
gpt4 key购买 nike

首先,让我说我对 Kubernetes 和微服务架构总体来说还很陌生。我还要说,这更像是一个高级架构问题,而不是寻求与技术相关的规范性、操作方法建议。我想我可以弄清楚实现细节,但我不确定存在哪些机制可以让我到达我想去的地方。

应用概述

在 K8s 集群上运行的简单“电子商务”示例应用程序。 SPA 前端,带有用于 API 的 .NET Core 服务。

客户端(前端)

Angular SPA 构建并部署到 NGinx 容器,该容器将 Angular 应用程序作为静态站点提供服务。它作为 LoadBalancer 运行集群上的服务。

服务(后端)

两个以 ClusterIP 身份运行的简单服务在集群中。我们称它们为产品和订单。

问题

部署 SPA 时,它会从用户的浏览器而不是容器向服务发出请求。服务未在 LoadBalancer 中运行配置,因此它们不会暴露在集群之外。让客户端应用程序与服务对话的最佳实践是什么?具体来说:

  • 我真的需要在外部公开每个微服务吗?
  • 是否有某种代理技术,我可以在其中公开单个 <cluster>/api端点,路由到适当的后端服务?
  • Angular Universal(又名服务器端渲染)在这里有作用吗?
  • 我可以查看任何可引用的存储库作为示例吗?

  • 我已经通过 SO 搜索并发现了类似的问题,但没有一个确切地问这个问题。如果有人将我指向一个启发我的现有问题,我会很乐意删除这个问题。

    最佳答案

    Do I really need to expose every microservice externally?



    不,你不应该。

    Is there some kind of proxy technique, where I can expose a single /api endpoint, that routes to the appropriate backend service?



    标准方法是使用 nginx 作为代理。

    Any referenceable repos I can look at for an example?



    你可以查看我的玩具项目:
  • Nginx 部分在这里 - https://github.com/taleodor/mafia-vue/tree/master/nginx
  • 部署包装项目 - https://github.com/taleodor/mafia-deployment
  • 写下一切如何组合在一起 - https://itnext.io/building-kubernetes-cicd-pipeline-with-github-actions-argocd-and-reliza-hub-e7120b9be870

  • 具体来说,这是您从上面的玩具项目中引用 nginx 中的后端 api 的方式(注意它使用的是 websockets,您可能不是这种情况):
        location /api {
    proxy_pass http://backend;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; # aws version - essentially this sets https schema

    # enable WebSockets
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    }

    关于angular - SPA、微服务和 Kubernetes(架构问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62157190/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com