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