Google Cloud Deploy 概览

Google Cloud Deploy 是一项代管式服务,可按指定升级序列自动将您的应用交付到一系列目标环境。如果您要部署更新后的应用,则需要创建一个版本,其生命周期交付流水线管理。

Google Cloud Deploy 流水线的工作原理

Google Cloud Deploy 交付流水线包含以下信息:

  • 名称,在引用交付流水线时使用。

  • 题设序列,描述部署到已配置目标的顺序。

  • 目标本身(可选)。

可以在同一交付流水线配置文件或一个或多个单独的文件中定义目标。多个交付流水线可以使用相同的一个或多个目标,但给定目标在给定的交付流水线中只能使用一次。

Google Cloud Deploy 交付流程

下文介绍了简单的 Google Cloud Deploy 持续交付场景中发生的情况。

  1. 您在 YAML 配置文件中定义交付流水线

    此配置文件定义将应用部署到一系列目标的提升序列。

    您还需要 Skaffold 配置,Google Cloud Deploy 需要此配置才能执行渲染和部署操作。

  2. 您可以在流水线配置文件或一个或多个单独的文件中定义目标。

  3. 您可以在 Google Cloud Deploy 服务中注册流水线。

    现在,服务知道了您的应用,因此会根据您定义的提升序列管理部署到目标的操作。

  4. CI 流程的输出包括对 Google Cloud Deploy 的调用以启动交付流水线。

    此调用会创建 release 资源,该资源表示每个目标的已渲染清单,每个清单都是使用提供的渲染来源、skaffold.yaml 和对要部署的特定容器映像的引用生成的。第一次调用以创建发布时,Google Cloud Deploy 会自动创建 rollout 资源,以将版本与第一个目标环境关联。根据该发布,您的应用会部署到第一个目标。

    您可以使用任何 CI 工具,只要它输出一个或多个容器映像以提供给 Google Cloud Deploy 交付流水线。

    此外,创建发布和调用交付流水线的调用不必来自 CI 工具。它可以来自脚本或响应 CI 过程完成的任何系统。

  5. 准备好将应用部署到下一个目标后,调用 Google Cloud Deploy 来提升到该目标。

    在每种情况下,调用提升的调用都会导致 Google Cloud Deploy 创建新的发布。

  6. 提升会继续以完成提升序列中的所有目标,最后一个是 prod(或您用于将应用部署到生产的最终目标的任何名称)。

    Google Cloud Deploy 服务架构中更详细地介绍了版本创建和提升的过程。

在整个流水线执行期间,Google Cloud Deploy 会收集指标和审核详细信息。

提升

提升版本就是将版本部署到流水线中定义的提升序列中的下一个目标。首次调用 Google Cloud Deploy 会创建一个 release,然后创建一项 rollout 资源,用于部署到升级序列中的第一个目标。之后每次调用以提升版本都会导致发布到下一个目标。

批准

您可以指定需要批准才能提升到任何目标。例如,您可能需要获得批准才能提升到生产目标。如需要求批准目标,请在目标定义中设置 requireApproval 属性。

当目标需要批准时,Google Cloud Deploy 会生成一条 Pub/Sub 消息,供订阅该消息的集成系统(例如工单系统)使用。

如需详细了解如何要求批准和批准提升,请参阅管理交付流水线

通知

Google Cloud Deploy 提供针对以下事件的 Pub/Sub 通知:

  • 渲染:开始、成功和失败
  • 部署:开始、成功和失败
  • 需要获得批准
  • 批准已获得批准
  • 批准请求遭拒

Google Cloud Deploy 使用 Pub/Sub 主题发送这些通知。

如需了解详情,请参阅在流水线中使用通知

回滚

Google Cloud Deploy 支持回滚已在任何目标中部署的应用。Google Cloud Deploy 中的回滚包括触发针对最后成功部署的版本的发布,并使用在该成功部署中使用的相同参数。

如需了解详情,请参阅回滚部署

Skaffold 和 Google Cloud Deploy 简介

Google Cloud Deploy 使用 Skaffold 将渲染工具与交付流水线分开。这使得清单渲染变得更加灵活,而不会影响您定义交付流水线的方式。您可以使用 Skaffold 轻松配置本地开发工作区,以便与 Google Cloud Deploy 持续交付流水线搭配使用。

如需了解基础知识,请参阅 Skaffold 快速入门

Google Cloud Deploy 与其他 Google Cloud 工具

Google Cloud Deploy 支持 CI/CD 流水线上游中的几乎任何工具。也就是说,您可以使用任何开发环境和源代码库、任何持续集成 (CI) 系统和任何工件代码库。

在下游,Google Cloud Deploy 仅部署到 Google Kubernetes Engine。

如果您主要使用 Google Cloud 工具,则源代码到生产环境的流程如下所示:

  1. 使用 Cloud Code 来创建应用来源。

    Cloud Code 扩展了几种流行的 IDE(VS Code、IntelliJ 和 Cloud Shell),以便更轻松地构建应用以在 Google Cloud 上部署和运行。

  2. 使用 Skaffold 来管理本地开发循环。

    Google Cloud Deploy 通过 Cloud Build 使用 Skaffold 来渲染和部署清单。这意味着您需要维护 skaffold.yaml 文件,但这并不意味着您需要将 Skaffold 加入本地开发流程。但您可以利用它进行持续开发

  3. 使用 Cloud Build 构建应用。

    借助 Cloud Build,您可以设置 CI 流水线,该流水线可由提交到源代码库触发。Cloud Build 的输出将是包含可部署容器映像的工件。您可以添加对 Google Cloud Deploy 的调用以创建发布以及调用交付流水线。

  4. 将工件存储在 Artifact Registry 中。

    Google Cloud Deploy 从 Artifact Registry 检索容器映像,这些映像可让您集中存储工件和依赖项。

  5. 在 Google Cloud Deploy 中配置您的交付流水线,以获取容器映像并在 n 个目标的进展中部署它。

    您的交付流水线中标识的每个目标都表示一个 GKE 集群,应用最终部署在其中。

  6. 在 GKE 上管理应用。

    GKE 是 Google Cloud 管理的环境,用于在 Kubernetes 上运行容器化应用。

  7. 使用 Google Cloud 的运维套件监控应用的性能。

    Google Cloud 的运维套件为您的应用提供集成式监控和日志记录功能。

后续步骤