Cloud Deploy 概览

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

Cloud Deploy 流水线的工作原理

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

  • 一个名称(用于指代交付流水线)和说明。

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

  • (可选)标签和注解

  • 此外,还可以选择包含目标定义本身。

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

Cloud Deploy 交付流程

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

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

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

    您还需要 Skaffold配置,Cloud Deploy 需要使用该配置来执行渲染和部署操作。

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

  3. 您可以向 Cloud Deploy 服务注册流水线。

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

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

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

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

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

  5. 当您准备好将应用部署到下一个目标时,可以调用 Cloud Deploy 来提升该应用。

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

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

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

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

推广

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

批准

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

当目标需要审批时,Cloud Deploy 会生成一条可供集成系统使用的 Pub/Sub 消息。 例如,工单系统可以订阅消息以启动审批工作流。

如需详细了解促销活动和管理促销活动的审批,请参阅需要批准

通知

Cloud Deploy 为以下事件提供 Pub/Sub 通知:

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

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

如需了解详情,请参阅使用 Cloud Deploy 通知

回滚

Cloud Deploy 支持在任何目标中回滚已部署的应用。Cloud Deploy 中的回滚包括针对上次成功部署的版本触发发布。新发布作业使用的参数与该成功部署中使用的参数相同。

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

Skaffold 和 Cloud Deploy 简介

Cloud Deploy 使用 Skaffold 进行渲染、部署和验证。借助 Skaffold,您还可以轻松将本地开发循环连接到 Cloud Deploy 持续交付流水线。

如需详细了解 Cloud Deploy 如何与 Skaffold 集成,请参阅 Skaffold 概览

将 Cloud Deploy 与其他 Google Cloud 工具搭配使用

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

在下游,Cloud Deploy 会部署到 Google Kubernetes Engine、Cloud Run 和 GKE Enterprise。

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

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

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

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

    Cloud Deploy 通过 Cloud Build 使用 Skaffold 呈现和部署清单。这种集成意味着您需要维护一个 skaffold.yaml 文件,但并不意味着您需要将 Skaffold 设为本地开发流程的一部分。但您可以利用它进行持续开发

  3. 使用 Cloud Build 构建应用。

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

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

    Cloud Deploy 从 Artifact Registry 中检索一个或多个容器映像,这让您可以集中存储工件和依赖项。

  5. 在 Cloud Deploy 中配置交付流水线,以获取容器映像并逐步部署 n 个目标。

    交付流水线中标识的每个目标代表一个最终部署应用的 GKE 集群、Cloud Run 或 GKE 集群。

  6. 在 GKE、Cloud Run 或 GKE Enterprise 上管理您的应用。

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

    借助 Cloud Run,您可以在无服务器环境中运行容器。

    GKE Enterprise 为云端和本地环境提供一致的开发和运营体验。

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

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

后续步骤