将 Cloud Run 微服务拼接到单个 API 网关中

问题描述 投票:0回答:1

我将我的服务分为 Cloud Run 服务,例如在博客应用程序中,我有

user
post
comment
服务。

对于每个服务,我在部署时都会获得一个单独的 http 端点,但我想要的是让 api.mydomain.com 作为网关,通过各自的路由(

/user*
/post*
等)访问所有服务。

是否有标准(即 GCP 管理和无服务器)方法来执行此操作?

我尝试/想到的事情及其问题:

  • 带有重写功能的 Firebase 托管 - 这是“建议”的解决方案,但它不是很灵活,而且问题更大,我认为这会导致每个请求都双重包装 CDN。如果错误,请纠正我,但 Cloud Run 端点已经使用 CDN,那么您就可以快速运行 Firebase 托管。像这样不必要地增加成本和延迟似乎很愚蠢。
  • nginx 在持续运行的实例上 - 工作正常,但不是托管的,也不是无服务器的;需要扩大干预
  • Cloud Run 上的 nginx - 这似乎会具有高度可变的性能,因为有 (a) 两种可能的冷启动,以及 (b) 再次双重包装 CDN。
  • 直接使用 Cloud LB/CDN - Cloud Run 似乎不支持

有什么想法吗?对我来说,这使得 Cloud Run 无法用于微服务。希望有办法解决它。

google-cloud-platform microservices firebase-hosting google-cloud-run google-cloud-cdn
1个回答
0
投票

当今最简单的途径是使用 GCP API 网关。使用 OpenAPI 规范可以轻松设置,将流量直接路由到 Cloud Run 微服务。 Google API Gateway 文档 整个架构是无服务器的。作为额外的好处,它提供内置的身份验证和监控。

© www.soinside.com 2019 - 2024. All rights reserved.