Cloud Deploy 是一项代管式服务,可按指定升级序列自动将您的应用交付到一系列目标环境。如果您要部署更新后的应用,则需要创建一个版本,其生命周期由交付流水线管理。
Cloud Deploy 流水线的工作原理
Cloud Deploy 交付流水线包含以下信息:
可以在同一交付流水线配置文件或一个或多个单独的文件中定义目标。多个交付流水线可以使用相同的一个或多个目标,但给定目标在给定的交付流水线中只能使用一次。
Cloud Deploy 交付流程
下文介绍了简单的 Cloud Deploy 持续交付场景中发生的情况。
- 
此配置文件定义将应用部署到一系列目标的提升序列。 
- 您可以在流水线配置文件或一个或多个单独的文件中定义目标。 
- 您可以在 Cloud Deploy 服务中注册流水线。 - 现在,服务知道了您的应用,因此会根据您定义的提升序列管理部署到目标的操作。 
- CI 流程的输出包括对 Cloud Deploy 的调用以启动交付流水线。 - 此调用会创建 - release资源,该资源表示每个目标的已渲染清单,每个清单都是使用提供的渲染来源、skaffold.yaml 和对要部署的特定容器映像的引用生成的。第一次调用以创建发布时,Cloud Deploy 会自动创建- rollout资源,以将发布与第一个目标环境关联。根据该发布,您的应用会部署到第一个目标。- 您可以使用任何 CI 工具,只要它输出一个或多个容器映像以提供给 Cloud Deploy 交付流水线。 - 此外,创建发布和调用交付流水线的调用不必来自 CI 工具。它可以来自脚本或响应 CI 过程完成的任何系统。 
- 准备好将应用部署到下一个目标后,调用 Cloud Deploy 来提升到该目标。 - 在每种情况下,调用提升的调用都会导致 Cloud Deploy 创建新的发布。 
- 提升会继续以完成提升序列中的所有目标,最后一个是 - 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 工具,则源代码到生产环境的流程如下所示:
- 使用 Cloud Code 来创建应用来源。 - Cloud Code 扩展了几种流行的 IDE(VS Code、IntelliJ 和 Cloud Shell),以便更轻松地构建应用以在Google Cloud上部署和运行。 
- 使用 Skaffold 来管理本地开发循环。 - Cloud Deploy 通过 Cloud Build 使用 Skaffold 来渲染和部署清单。这种集成意味着您需要维护 - skaffold.yaml文件,但这并不意味着您需要将 Skaffold 加入本地开发流程。但您可以利用它进行持续开发。
- 使用 Cloud Build 构建应用。 - 借助 Cloud Build,您可以设置 CI 流水线,该流水线可由提交到源代码库触发。Cloud Build 的输出将是包含可部署容器映像的工件。您可以添加对 Cloud Deploy 的调用以创建发布以及调用交付流水线。 
- 将工件存储在 Artifact Registry 中。 - Cloud Deploy 从 Artifact Registry 检索容器映像,这些映像可让您集中存储工件和依赖项。 
- 在 Cloud Deploy 中配置您的交付流水线,以获取容器映像并在 n 个目标的进展中部署它。 - 您的交付流水线中标识的每个目标都表示一个 GKE 集群、Cloud Run 或 GKE 集群,应用最终部署在其中。 
- 在 GKE、Cloud Run 或 GKE Enterprise 上管理应用。 - GKE 是Google Cloud 托管式环境,用于在 Kubernetes 上运行容器化应用。 - 借助 Cloud Run,您可以在无服务器环境中运行容器。 - GKE Enterprise 可为云端和本地环境提供一致的开发和运营体验。 
- 使用 Google Cloud Observability 监控应用的性能。 - Google Cloud Observability 为您的应用提供集成式监控和日志记录功能。 
后续步骤
- 如需快速了解如何创建交付流水线并使用它来部署应用,请尝试使用快速入门。 
- 试用其中一个 Cloud Deploy 演示。 
- 详细了解 Cloud Deploy 组件如何协同工作。 
- 查看Google Cloud 架构完善框架:卓越运营,查看有关如何使用卓越运营原则构建自动交付基础的文章。