我不确定这是否是就基础架构架构提出问题的正确论坛。但是希望如此发布问题:
我的一位客户有一个使用最新微服务技术开发的 Web 应用程序。Kubernetes 是底层。最重要的是,他们正在使用 CDN、API 托管等。现在,从公共云(azure 或 AWS)的角度来看,我如何在这里构建基础设施?关于他们使用的服务,我有几个问题。为简单起见,我将从 Azure POV 开始讨论。决定使用 Azure 中的以下组件:
Azure CDN、Azure 应用程序网关、Azure FrontDoor。
我对这些服务的呼叫流程感到困惑。从客户端(如 Web 浏览器),当有对应用程序的请求时,理想情况下,静态内容需要由 Azure CDN 响应,而其他动态内容需要通过检查容器或服务器来响应。所以,这就是我对呼叫流程的假设:
浏览器 -> Azure 前门 -> 应用程序网关 -> API 管理微服务 -> 其他微服务 -> Azure CDN -> 浏览器
这个对吗?如果没有,您能否指导我了解更好的架构。任何帮助将不胜感激。
好的,首先你有几个不同的服务在那里做同样的事情,所以你想评估你是否需要它们。
无论您选择 Front Door 还是 CDN,他们都希望在您的堆栈中处于领先地位。理想情况下,您希望流量到达 FD/CDN,获得缓存响应,然后请求结束。
如果您不能从缓存中提供服务,那么现在您需要将您的流量导入 Kubernetes,因此您的前端资源(CDN 或 Front Door)现在将转发到您将 Kubernetes 集群暴露给外部世界的情况。如果您决定需要它,这可能是应用程序网关、外部负载均衡器或 Azure API 管理器(如果您使用它来公开 API)。
Front Door 是一项未附加 vNet 的全局服务。您的 Kubernetes 集群是附加的 vNet,因此您需要一种将 Kubernetes 资源公开给 Front Door 的方法。这可以通过 App GW 完成,但会增加额外费用,您也可以使用具有公共 IP 的 Azure 负载均衡器设置 Kubernetes 入口,然后与前门对话。
如果您摆脱 App GW,那么您将需要在集群中运行另一个入口控制器,例如 NGinx、Traefik 等。或者您可以保留 App GW,但我会使用 CDN 而不是 Front Door。
Front Door 和 CDN 使用相同的端点,因此提供相同的缓存。