本文档介绍了 Cloud Deploy 与其配合以部署应用的外部系统之间的关系。这些系统是其他 Google Cloud 服务和第三方工具。
概要视图
下图显示了 Cloud Deploy 与其所依赖的独立系统之间的关系。
如图所示,Cloud Deploy 会与以下系统交互:
您的 CI 系统
Cloud Deploy 支持大多数 CI 工具,前提是 CI 流程的一个输出可以调用 Cloud Deploy API 或 CLI 来创建版本。
-
Cloud Deploy 调用 Cloud Build 来渲染清单并部署到目标运行时。
-
Cloud Deploy 通过 Cloud Build 使用 Skaffold 呈现和部署清单,从而部署应用。
-
Cloud Deploy 将渲染来源和渲染的清单存储在 Cloud Storage 存储桶中。
Google Cloud 的运维套件和 Cloud Audit Logs。
Google Cloud 的运维套件会为 Cloud Deploy 收集并提供日志记录数据。
另请参阅审核日志记录。
-
Cloud Deploy 将消息发布到多个 Pub/Sub 主题。您可以使用此服务来与外部工作流、测试和其他相关系统集成。
如需了解详情,请参阅订阅 Cloud Deploy 通知 。
目标运行时
Cloud Deploy 通过 Cloud Build 使用
skaffold apply
将应用部署到目标运行时(GKE 或 GKE Enterprise)。
Cloud Deploy 资源
下图显示了 Cloud Deploy 用于交付应用的资源,以及这些资源之间的关系:
如下图所示,资源之间的关系如下:
每个版本可以生成零个或多个“发布”,并且可以引用零个或多个工件。
每个发布都至少包含一个阶段,表示发布中按逻辑分组在一起的操作(作业)集合,例如部署或部署和验证。
每个阶段都包含一个或多个作业,表示要在发布时完成的操作 - 部署或验证。每个作业可以包含一个或多个作业运行,这些作业运行是作业实例(例如尝试部署)。作业运行是发布的子资源。
每次发布都与一个目标相关联。
每个目标都与一个 GKE 或 Anthos 集群或应用的其他运行时目标相关联。
目标可以与一个或多个交付流水线关联。
工件是在发布过程中部署到目标运行时的任何 CI 流程输出(例如容器映像)。
此外,发布包含一个或多个阶段,而阶段包含一个或多个作业,以及一个或多个作业运行。
如图所示,发布包含以下内容:
阶段
一个阶段包含一个或多个作业(例如部署、部署和验证)。每次发布都会经历一个或多个阶段。阶段是发布作业中的子消息。
作业
要在发布时执行的具体操作,例如部署或验证。作业是发布作业中的子消息。
JobRuns
作业实例,例如尝试验证。每个作业可以有零个或多个 JobRun。JobRun 是发布的子资源。
它们如何整合在一起以交付版本
本部分介绍 Cloud Deploy 如何与本文档中列出的组件交互,以自动将应用作为“版本”进行交付。
您的 CI 系统会调用 Cloud Deploy 交付流水线。
您的 CI 流程使用 CLI 或 API 调用 Cloud Deploy 来创建新的版本,并将构建工件或对映像的引用传递。
如需详细了解如何集成 CI 系统,请参阅将 Cloud Deploy 与其他系统集成。
创建新版本后,Cloud Deploy 会执行以下操作:
将交付流水线的实例存储为版本的一部分。
即使交付流水线配置已更改,此版本的此流水线实例也保持不变。如需了解详情,请参阅每个版本的流水线实例。
此外,Skaffold 版本会存储为该版本的一部分。在大多数情况下,这将是默认的 Skaffold 版本,但由于您可以指定其他版本,因此系统会存储该信息。
调用 Cloud Build,以从 Cloud Storage 获取 Skaffold 渲染来源。
Cloud Deploy 将渲染来源存储在默认或备用 Cloud Storage 存储桶中。
调用
skaffold diagnose
(使用创建版本时存储的 Skaffold 版本)生成单个有效的清单。调用
skaffold render
以使用提供的映像或构建工件渲染清单。Cloud Deploy 会将
spec.templates.spec.containers.image
中的映像名称替换为gcloud deploy releases create
命令或该命令引用的构建工件文件中提供的完整映像路径(包括摘要或标记)。Cloud Deploy 将渲染的清单存储在默认或备用 Cloud Storage 存储桶中。
通过调用
skaffold apply
自动创建发布并将其部署到第一个目标。仅当从 CLI 调用 Cloud Deploy 来创建版本时,才符合此要求。
部署到第一个目标的过程与提升相同,如下一步所述。
如果交付流水线 config 中的目标的
verify
为true
,并且在 Skaffold 配置中指定,则调用skaffold verify
。
当需要将版本提升到下一个目标时,Cloud Build 会从 Cloud Storage 中检索特定于目标的清单。然后,Cloud Build 调用
skaffold apply
以将已渲染清单应用于指定的目标运行时。如果目标需要批准,您可以通过 CLI 或使用控制台批准或拒绝。
此外,Cloud Deploy 还会生成 Pub/Sub 消息,您可以订阅该消息以自动启动审批工作流。
Cloud Deploy 使用 Skaffold 版本和与此版本关联的流水线实例,并在默认或自定义执行环境中执行此步骤。
此过程不仅适用于提升,也适用于回滚和重新部署。
在整个 Cloud Deploy 操作期间,该服务都会向多个 Pub/Sub 主题发布通知(例如,当发布需要批准时)。
将 Cloud Deploy 与外部系统集成中详细介绍了此集成和其他集成。
在整个 Cloud Deploy 操作过程中,该服务会将平台日志和审核日志写入 Google Cloud 的运维套件和 Cloud Audit Logs 中。
在所有这些步骤中,都可以使用 Identity and Access Management 来限制流控制和资源访问权限。
后续步骤
详细了解如何将 Cloud Deploy 与其他系统集成
查看有关 Skaffold 版本生命周期的重要信息。
了解 Cloud Deploy 执行环境。