选择哪个 GCP 服务来托管存储在 Container Registry 中的 Docker 映像?

时间:2021-04-28 05:31:30

标签: docker google-app-engine google-cloud-platform google-compute-engine google-kubernetes-engine

我有一个使用单个 Dockerfile dockerized 的 SPA 应用程序(服务器端由 Kotlin 和 Spring 启动,前端由带有 React 的打字稿提供),我正在尝试在 GCP 上将该 docker 映像作为 Web 应用程序托管。

起初我认为 Cloud Run 云是合适的,但似乎 Cloud Run 是无服务器服务,而不是用于托管 Web 应用程序。我知道有几种选择; App Engine(灵活环境)、Compute Engine 和 Kubernetes Engine。

考虑到上面的故事,我可以请 GCP 社区支持决定选择哪一个来达到目的吗?

  • 托管存储在 Cloud Registry 中的 Docker 映像
  • 该应用应公开部署; 。IE。每个人都可以像其他网站一样通过浏览器访问该应用
  • 部署的 Docker Image 需要连接 Cloud SQL 以持久化其数据
  • 计划将 Cloud Build 用于 CI/CD 环境

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

IMO,您需要避免使用您提出的建议(Kubernetes、Compute Engine 和 App Engine Flex)并(重新)考虑 Cloud Run 和 App Engine Standard。

如果您有一个容器,App Engine Standard 不合规,但您可以简单地部署您的代码,让 App Engine Standard 构建和部署自己的容器(其中包含您的代码)。

我更喜欢 Cloud Run,它是为 webapp 完美设计的,只要:

  • 您仅根据请求执行处理(无后台进程,不长时间运行的操作(超过 60 分钟))
  • 您不需要在本地存储数据(但需要将数据存储在外部服务、数据库或存储中)

我还建议您拆分前端和后端。

  • 在 App Engine Standard 或 Cloud Storage 上部署您的前端
  • 在 Cloud Run 中部署您的后端(因此在容器中)
  • 在两者前面放置一个 HTTPS 负载平衡器以消除 CORS 问题,并且只有 1 个 URL 可以公开(在您自己的域名后面)

主要优点是:

  • 如果您从 Cloud Storage 提供文件,则可以利用缓存,从而降低成本和延迟。如果您在负载均衡器中使用 CDN 容量,则同样如此。如果您在 Cloud Run 或任何其他计算系统中托管您的前端,您将使用 CPU 仅提供静态文件,并且您将为此 CPU/内存付费 -> 无用
  • 将前端和后端分开,让您能够独立发展这两个部分,而无需重新部署整个应用程序,只重新部署已更改的部分。
  • 建议的模式是企业级模式。从每月 16 美元起,您可以在全球范围内进行大规模扩展。您还可以在负载平衡器上激活 WAF 以提高安全性和预防攻击。

那么现在,如果您同意这一点,您接下来的问题是什么?

相关问题