【问题标题】:Recommended GCP blue-green deployment pattern?推荐的 GCP 蓝绿部署模式?
【发布时间】:2020-11-02 18:12:04
【问题描述】:

我们正在为使用 React-Native 与 GCP 后端对话的客户端开发/支持移动应用。数据库是 Firestore,对象存储使用 GCP Storage,我们使用 GCP app-engine 进行一些 REST 调用,以及一系列 Cloud Functions 来处理一些 Firestore 和 GCP Storage 处理。

我们的产品部署包括将移动应用构建文件交付给客户端(他们在自己的服务器上内部分发应用),对于后端,我们使用 GCP CloudBuild 从我们的主/产品部署我们的应用引擎和云功能分支。然而,在过去的六个月里,我们进行了一系列粗略的产品部署,主要归结为我们在 dev 或 qa 环境(或忘记)上没有遇到的意外环境配置问题,以及一些数据库更新问题(数据模型更改)。这样一来,我们就对客户束手无策,因为在我们解决问题时,部署可能会延迟几个小时。

为了尝试解决这个问题,我们一直在考虑为 GCP 后端制定蓝绿部署策略。这将包括创建一个新的 GCP 项目,向其部署最新的 master/prod 分支,并允许我们在将更新的移动应用程序交付给客户端之前进行全面测试——这不足为奇。这在理论上听起来很棒,但在实践中并不是那么简单。主要问题是 Firestore 数据库和 GCP 存储——我们还需要将存储对象和 Firestore 数据库转移到新项目。可行,但又是一个复杂的问题。

所以我们的蓝绿理念是这样的:

  1. 我们创建了一个新的“Firestore/GCP 存储”项目,其唯一目的是充当“产品”数据存储位置(此项目中没有应用引擎或云功能),并充当身份验证提供者。此项目将是静态的,不会在产品部署之间更新
  2. 我们创建了一个新的“prod”(绿色)GCP 项目,该项目将为绿色部署托管最新的 App-Engine 和 Cloud Functions。此项目将被授予访问“Firestore/GCP 存储”项目数据和存储对象的权限
  3. 移动应用将连接“数据存储”项目以与 Firestore 通信和上传文件,并将连接新的“绿色”项目以进行 App-Engine REST 调用

我们希望该模式能够让我们进行蓝绿后端逻辑部署,而无需担心数据/对象传输。我的问题是:有人在 GCP 中使用过这种类型的部署模式吗?它是推荐的模式,还是回避的反模式?

感谢任何反馈。 谢谢

【问题讨论】:

    标签: google-app-engine google-cloud-platform google-cloud-functions google-cloud-build blue-green-deployment


    【解决方案1】:

    我同意必须在发布之前测试移动后端等重要的东西。

    使用 gcloud 访问虚拟机的 API,或根据新更新的批准迁移流量,是 Cloud Build 使用提供的构建器熟悉的事情。

    https://cloud.google.com/cloud-build/docs/cloud-builders#supported_builder_images_provided_by

    Cloud Build 让您可以根据之前定义的概念阶段或阶段进行部署(例如蓝/绿策略)。在定义期间,您必须牢记要部署的应用程序的类型;在这种情况下,您提到了一个 Firestore 实例,一般建议是在另一个实例中复制以进行所有安排。

    https://cloud.google.com/appengine/docs/flexible/nodejs/migrating-traffic

    另一方面,您可以拥有一个 kubernetes 集群,让您能够以更自然的方式管理这些功能,因此您可能需要评估应用程序的工作负载并尝试超越模式的云构建。

    我希望这个观点对你有用。

    【讨论】:

      猜你喜欢
      • 2019-01-01
      • 2021-07-18
      • 1970-01-01
      • 2017-07-10
      • 2018-09-14
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 2019-01-28
      相关资源
      最近更新 更多