Google Cloud Deploy 执行环境是 Google Cloud Deploy 在其中执行渲染和部署操作的环境。执行环境包含以下内容:
Google Cloud Deploy 在其中执行渲染和部署操作的 Cloud Build 工作器池(默认或专用)。
调用 Google Cloud Deploy 以执行这些操作的服务帐号(默认或备用)。
Cloud Storage 中已渲染清单的存储位置(默认或备用)。
本文介绍 Google Cloud Deploy 的默认执行环境、服务帐号和存储,以及更改这些默认值的原因和方式。
默认值
以下是 Google Cloud Deploy 用于运行、执行渲染和部署以及存储已渲染清单等资产的默认值:
默认工作器池
默认情况下,Google Cloud Deploy 在默认的 Cloud Build 工作器池中运行。但是,您可以将 Google Cloud Deploy 配置为使用 Cloud Build 专用工作器池。
如需详细了解工作器池,请参阅 Cloud Build 默认池和专用池概览。
默认执行服务帐号
默认情况下,Google Cloud Deploy 使用默认 Compute Engine 服务帐号。
默认 Google Cloud Deploy 存储位置
此值是 Google Cloud Deploy 存储已渲染清单的 Cloud Storage 存储桶。默认情况下,Google Cloud Deploy 会在 Google Cloud Deploy 资源所在的区域中创建一个 Cloud Storage 存储桶,格式如下:
<location>.deploy-artifacts.<project ID>.appspot.com
以下各部分介绍在哪些情况下更改这些值,还提供了相关操作说明链接。
默认和专用工作器池简介
默认执行环境是 Cloud Build 默认池。此默认工作器池是可通过公共互联网访问的托管式安全环境。渲染和部署操作会在该池中执行,与其他工作负载隔离。
专用工作器池是专用的私有工作器池,与默认工作器池相比可进行更多自定义。该自定义可包括访问专用网络中的资源的功能。
与默认工作器池一样,私有工作器池由 Cloud Build 托管和完全管理。这些池可以纵向扩容或缩减到零,而无需设置、升级或扩缩基础架构。
Cloud Build 专用池概览更全面地介绍了默认工作器池和专用工作器池,包括比较它们的功能的表。
更改 Google Cloud Deploy 执行环境
在以下情况下,您可以更改 Google Cloud Deploy 执行环境:
您希望渲染和/或部署操作与其他组织隔离的环境执行。
您希望在未连接到公共互联网的环境中执行这些操作。
您希望分离用于渲染和部署的环境。
您希望使用专用服务帐号;与默认服务帐号相比,该服务帐号拥有更针对您的使用的权限。
您希望将已渲染清单存储在与默认 Cloud Storage 存储桶不同的位置。
执行环境所有三个部分的配置(工作器池、服务帐号和存储)按目标在每个目标的 YAML 配置中完成。
从默认池更改为专用池
可为每个目标配置工作器池,以便仅将该池用于该目标使用 RENDER 和/或 DEPLOY。
如需在渲染和部署操作中使用默认工作器池,您无需执行任何操作。
以下是为 DEPLOY 指定专用工作器池并为 RENDER 指定默认工作器池的示例目标配置:
executionConfigs:
- privatePool:
workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
usages:
- DEPLOY
- defaultPool:
usages:
- RENDER
如需详细了解如何为目标配置专用池,请参阅交付流水线配置文档。
将默认池用于 RENDER
和 DEPLOY
如果您配置 defaultPool
以设置不含备用服务帐号或存储位置的用法 (RENDER
| DEPLOY
),请包含空括号:defaultPool: {}
。
从默认执行服务帐号更改为自定义执行服务帐号
与工作器池一样,可为每个目标指定用于渲染和/或部署的备用服务帐号。为此,需要将以下行添加到目标配置中 workerPool
元素后面:
serviceAccount: "[name]@[project_name].iam.googleapis.com"
指定的服务帐号必须包含 clouddeploy.jobRunner
角色,如 Google Cloud Deploy 服务帐号文档中所述。
如需详细了解此配置,请参阅目标定义。
更改存储位置
如需从 Google Cloud Deploy 默认值更改存储桶,请将以下行添加到目标定义 的 privatePool
或 defaultPool
节中:
artifactStorage: "gs://[bucket_name]/[dir]"
此配置会更改已渲染清单的存储位置,但不会影响渲染来源的存储位置。
部署到 Virtual Private Cloud 网络上的专用集群
您可以将目标配置为部署到连接到 Virtual Private Cloud 网络的专用 GKE 集群:
-
专用集群是 VPC 原生集群,其节点和 pod 默认与公共互联网隔离。
在 Cloud Build 中,创建专用工作器池,可将其用于部署到此专用集群。
-
您必须将此池用于
RENDER
。您也可以将其用于DEPLOY
。下面是同时使用两者的示例:executionConfigs: - privatePool: workerPool: "projects/p123/locations/us-central1/workerPools/wp123" usages: - RENDER - DEPLOY
如需了解详情,请参阅使用 Cloud Build 专用池访问专用 GKE 集群。
项目和权限注意事项
您可以轻松配置目标以使用可部署到专用集群的专用工作器池。但是,如果资源位于不同的项目中,则有一些事项需要注意。
当 Google Cloud Deploy 和工作器池位于不同项目中时
要与可访问 VPC 且与您的目标位于不同项目中的专用池进行通信,Google Cloud Deploy 服务代理需要足够的权限才能与该项目进行通信。
执行服务帐号还需要有访问 Cloud Storage 存储桶的权限。
当工作器池和集群位于不同的项目中时
如果专用 GKE 集群与专用工作器池位于不同的项目中,则执行服务帐号需要有足够的权限才能与集群所在的项目进行通信。
在 VPC Service Controls 边界中使用 Google Cloud Deploy
Google Cloud Deploy 支持 VPC Service Controls(Beta 版)。
您可以按照 VPC Service Controls 快速入门来设置服务边界。
限制
您必须将 Cloud Build 专用工作器池用于目标的执行环境,而不是使用混合池和默认工作器池。
包含工作器池的项目和包含 Google Cloud Deploy 资源的项目必须位于同一 VPC Service Controls 安全边界内。
您在 VPC Service Controls 边界内部署的任何 GKE 集群都必须是专用集群。
如需为专用集群设置专用池,请参阅本教程。
后续步骤
详细了解 Google Cloud Deploy 目标配置。
了解 Cloud Build 专用池。
了解 Google Cloud Deploy 如何使用服务帐号。