使用 Google Cloud Deploy 执行环境

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 执行环境:

  • 您希望部署到专用 Google Kubernetes Engine 集群

  • 您希望渲染和/或部署操作与其他组织隔离的环境执行。

  • 您希望在未连接到公共互联网的环境中执行这些操作。

  • 您希望分离用于渲染和部署的环境。

  • 您希望使用专用服务帐号;与默认服务帐号相比,该服务帐号拥有更针对您的使用的权限。

  • 您希望将已渲染清单存储在与默认 Cloud Storage 存储桶不同的位置。

执行环境所有三个部分的配置(工作器池、服务帐号和存储)按目标在每个目标的 YAML 配置中完成。

从默认池更改为专用池

可为每个目标配置工作器池,以便仅将该池用于该目标使用 RENDER 和/或 DEPLOY

如需在渲染和部署操作中使用默认工作器池,您无需执行任何操作。

以下是为 DEPLOY 指定专用工作器池并为 RENDER 指定默认工作器池的示例目标配置:

executionConfigs:
- privatePool:
    workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
  usages:
  - DEPLOY
- defaultPool:
  usages:
  - RENDER

如需详细了解如何为目标配置专用池,请参阅交付流水线配置文档

将默认池用于 RENDERDEPLOY

如果您配置 defaultPool 以设置不含备用服务帐号或存储位置的用法 (RENDER | DEPLOY),请包含空括号:defaultPool: {}

从默认执行服务帐号更改为自定义执行服务帐号

与工作器池一样,可为每个目标指定用于渲染和/或部署的备用服务帐号。为此,需要将以下行添加到目标配置中 workerPool 元素后面:

serviceAccount: "[name]@[project_name].iam.googleapis.com"

指定的服务帐号必须包含 clouddeploy.jobRunner 角色,如 Google Cloud Deploy 服务帐号文档中所述。

如需详细了解此配置,请参阅目标定义

更改存储位置

如需从 Google Cloud Deploy 默认值更改存储桶,请将以下行添加到目标定义privatePooldefaultPool 节中:

artifactStorage: "gs://[bucket_name]/[dir]"

此配置会更改已渲染清单的存储位置,但不会影响渲染来源的存储位置

部署到 Virtual Private Cloud 网络上的专用集群

您可以将目标配置为部署到连接到 Virtual Private Cloud 网络的专用 GKE 集群

  1. 创建专用集群

    专用集群是 VPC 原生集群,其节点和 pod 默认与公共互联网隔离。

  2. 在 Cloud Build 中,创建专用工作器池,可将其用于部署到此专用集群。

  3. 将执行环境配置为使用专用池

    您必须将此池用于 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 集群都必须是专用集群。

    如需为专用集群设置专用池,请参阅本教程

后续步骤