创建和管理专用池

本页面介绍如何创建、更新、查看和删除 Cloud Build 专用池。如果您不熟悉专用池,请参阅专用池概览

准备工作

  1. 创建新的 Google Cloud 项目或选择现有项目。您将使用此项目创建专用池。

  2. Enable the Cloud Build API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  3. 如需使用本指南中的命令行示例,请安装并配置 Google Cloud CLI

  4. 可选:要使构建能够从 Virtual Private Cloud 网络访问私有资源,您必须在您的 Virtual Private Cloud 网络与专用池所在的 Virtual Private Cloud 网络之间建立对等互连连接。如需了解相关说明,请参阅设置环境以创建专用池

  5. 可选:熟悉机器类型配置和区域可用性。如需了解详情,请参阅专用池配置文件架构文档中的 workerconfig

创建专用池

如需获得创建私有池所需的权限,请让管理员向您授予服务账号的 Cloud Build WorkerPool Owner (roles/cloudbuild.workerPoolOwner) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

您可以按区域为每个 Google Cloud 项目最多创建 10 个专用池。如需创建专用池,请执行以下操作:

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,打开工作器池页面:

    打开 Cloud Build 工作器池页面

  2. 点击创建专用池

    系统会显示创建专用池页面。

    输入以下信息以创建专用池:

  3. 名称:输入专用池的名称。此值只能包含字母数字字符 /[a-z][0-9]/ 或短划线 -。私密池的名称长度必须介于 1 到 63 个字符之间。

  4. 区域:选择要在其中创建专用池的区域。

  5. 机器配置:配置以下内容:

    1. 系列:选择机器系列。

    2. 机器类型:此设置会显示工作器池可使用的机器类型,这些类型取决于您选择的机器系列。可用的机器类型因区域而异。

    3. 磁盘大小:输入专用池的磁盘大小。 指定一个大于或等于 100 且小于或等于 4000 的值。如果您未提供值,则 Cloud Build 将使用大小为 100 的磁盘。

    4. 嵌套虚拟化:如果您选择了 C3 系列机器,则可以启用嵌套虚拟化。借助此功能,您可以在其他虚拟机内运行虚拟机 (VM) 实例,从而创建自己的虚拟化环境。

  6. 网络类型下,选择以下选项之一:

    1. 默认网络:如果您的实例可通过公共互联网访问,请选择此选项。选择默认网络选项后,您的专用池将使用服务提供方网络。如需了解详情,请参阅设置环境以在 VPC 网络中使用专用池

    2. 专用网络:如果您的实例托管在专用网络上,请选择此选项,然后执行以下操作:

      1. 项目:选择您的 Google Cloud 项目 ID。

      2. 网络:从下拉菜单中选择您的网络。如果您尚未创建网络,请参阅创建和管理 VPC 网络,了解如何创建网络。

      3. IP 范围:输入 Cloud Build 提供方网络可用于分配给与私有代码库保持连接的虚拟机的内部 IP 范围。

        您可以使用无类别域间路由 (CIDR) 路由表示法以 STARTING_IP_ADDRESS/SUBNET_PREFIX_SIZE 格式指定范围。例如,192.0.2.0/24 的前缀长度为 24。IP 范围的前 24 位用作子网掩码 (192.0.2.0),而可能的宿主地址范围为 192.0.2.0192.0.2.255

        前缀长度的值不得超过 /29。如果未指定范围值,系统会自动分配默认值 /24。如果未指定前缀长度值,系统会自动在对等互连的 VPC 网络中分配 IP 地址。如果未指定 IP 地址的值,系统会自动在对等互连的 VPC 网络中为 IP 地址分配一个范围。

    3. 分配外部 IP:此选项默认处于选中状态,以允许专用池访问公共互联网。取消选中此框可限制对专用网络的访问。

  7. 点击创建以创建专用池。

gcloud

您可以通过两种方式使用 gcloud 创建新的专用池:您可以将专用池配置文件传递给 gcloud 命令,也可以直接将配置选项传递给 gcloud 命令。

将专用池配置文件传递给 gcloud 命令

  1. 创建 YAML 或 JSON 格式的专用池配置文件

  2. 运行以下 gcloud 命令,其中 PRIVATEPOOL_ID 是专用池的唯一标识符,PRIVATEPOOL_CONFIG_FILE 是您的专用池配置文件的名称,而 REGION 是要在其中创建专用池的地区

    gcloud builds worker-pools create PRIVATEPOOL_ID --config-from-file PRIVATEPOOL_CONFIG_FILE --region REGION
    

    您应该会看到类似于如下内容的输出:

    Created [https://cloudbuild.googleapis.com/v1/projects/gcb-docs-project/locations/us-central1/workerPools/private-pool].
    NAME                 CREATE_TIME                STATUS
    private-pool  2018-11-19T16:08:24+00:00  RUNNING
    

直接将配置选项传递到 gcloud 命令

运行以下 gcloud 命令:

    gcloud builds worker-pools create PRIVATEPOOL_ID \
        --project=PRIVATEPOOL_PROJECT_ID \
        --region=REGION \
        --peered-network=PEERED_NETWORK \
        --worker-machine-type=PRIVATEPOOL_MACHINE_TYPE \
        --worker-disk-size=PRIVATEPOOL_DISK_SIZE_GB \
        --no-public-egress

其中:

  • PRIVATEPOOL_ID:专用池的唯一标识符。此值应为 1-63 个字符,有效字符为 [a-zA-Z0-9_-]+
  • PRIVATEPOOL_PROJECT_ID:要在其中创建专用池的 Google Cloud 项目的 ID。
  • REGION:某个受支持的地区
  • PEERED_NETWORK:与服务提供方网络建立对等互连的网络的网络资源网址。PEERED_NETWORK 必须采用 projects/NETWORK_PROJECT_ID/global/networks/NETWORK_NAME 格式,其中 NETWORK_PROJECT_ID 是 VPC 网络所在的 Google Cloud 项目的 ID,NETWORK_NAME 是 VPC 网络的名称。如果您未指定值,则 Cloud Build 将使用服务提供商网络。
  • PRIVATEPOOL_DISK_SIZE_GB:挂接到专用池的磁盘的大小。指定一个大于或等于 100 且小于或等于 4000 的值。如果未提供值,则 Cloud Build 将使用大小为 100 的磁盘。如果您在 gcloud builds submit 期间使用 --disk-size 指定不同的磁盘大小,则会覆盖 --worker-disk-size
  • PRIVATEPOOL_MACHINE_TYPE:工作器的机器类型。如果留空,Cloud Build 将使用默认值 e2-standard-2。如需查看支持的机器类型的列表,请参阅专用池配置文件架构。如果您在 gcloud builds submit 期间使用 --machine-type 指定其他机器类型,则会替换 --worker-machine-type
  • --no-public-egress:如果设置此标志,则创建没有外部 IP 地址的专用池。如果您要在 VPC Service Controls 边界内创建专用池,请设置此标志。

API

  1. 创建专用池配置文件并命名为 workerpool.json

  2. 使用 cURL 调用 Cloud Build API:

        curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)"
            -H "Content-Type: application/json" \
            https://cloudbuild.googleapis.com/v1/projects/PRIVATEPOOL_PROJECT_ID/locations/REGION/workerPools/?workerPoolId=PRIVATEPOOL_ID -d @workerpool.json
    

    其中:

    • PRIVATEPOOL_PROJECT_ID:要在其中创建专用池的 Google Cloud 项目的 ID。
    • PRIVATEPOOL_ID:专用池的 ID。此值应为 1-63 个字符,有效字符为 [a-zA-Z0-9_-]+
    • REGION:用于创建专用池的受支持的地区之一。

在 VPC Service Controls 边界内创建专用池

如需创建具有 VPC Service Controls 边界的专用池,请参阅使用 VPC Service Controls

更新专用池

如需获得创建私有池所需的权限,请让您的管理员为您授予服务账号的 Cloud Build WorkerPool Editor (roles/cloudbuild.workerPoolEditor) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

如需更新专用池的配置,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,打开工作器池页面:

    打开 Cloud Build 工作器池页面

  2. 选择您在其中创建了专用池的项目。

  3. 点击专用池名称。

  4. 修改专用池页面中,根据需要更新机器类型和磁盘大小。

  5. 点击保存

gcloud

通过更新专用池配置文件,您可以:

  1. 专用池配置文件中更新您要更改的字段。

  2. 运行以下命令,其中 PRIVATEPOOL_ID 是专用池的唯一标识符,REGION 是专用池所在的区域,PRIVATEPOOL_CONFIG_FILE 是专用池配置文件的名称:

    gcloud builds worker-pools update PRIVATEPOOL_ID \
        --region=REGION \
        --config-from-file=PRIVATEPOOL_CONFIG_FILE
    

将要更新的值直接传递给 gcloud builds worker-pools update 命令

   gcloud builds worker-pools update PRIVATEPOOL_ID \
       --region=REGION \
       --worker-disk-size=PRIVATEPOOL_DISK_SIZE \
       --worker-machine-type=PRIVATEPOOL_MACHINE_TYPE

其中:

  • PRIVATEPOOL_ID:现有专用池的 ID。无法更新此值;必须指定现有专用池 ID。
  • REGION:在其中创建了专用池的地区
  • PRIVATEPOOL_DISK_SIZE:更新后的磁盘大小。
  • PRIVATEPOOL_MACHINE_TYPE 是更新后的机器类型。

API

  1. 专用池配置文件中,根据需要更新磁盘大小和机器类型。

  2. 使用 cURL 调用 Cloud Build API,并将相关变量替换为适当的值:

    curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        https://cloudbuild.googleapis.com/v1/projects/PRIVATEPOOL_PROJECT_ID/locations/REGION/workerPools/PRIVATEPOOL_ID \
        -d @workerpool.json
    

    其中:

    • PRIVATEPOOL_ID:专用池的 ID。
    • PRIVATEPOOL_PROJECT_ID:包含专用池的 Google Cloud 项目的 ID。
    • REGION:在其中创建了专用池的地区

查看专用池的详细信息

如需获得创建私有池所需的权限,请让管理员向您的服务账号授予 Cloud Build WorkerPool Viewer (roles/cloudbuild.workerPoolViewer) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

要查看专用池的详细信息,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,打开工作器池页面:

    打开 Cloud Build 工作器池页面

  2. 选择您在其中创建了专用池的项目

  3. 点击专用池名称。

    系统会显示修改专用池页面。

gcloud

如果您不知道专用池的 ID,请运行以下命令以列出专用池的详细信息:

gcloud builds worker-pools list --region=REGION --project=PRIVATEPOOL_PROJECT_ID

其中:

  • PRIVATEPOOL_PROJECT_ID 是包含专用池的Google Cloud 项目的 ID。
  • REGION 是专用池的区域。

您应该会看到类似于如下内容的输出:

NAME                                                                  CREATE_TIME                STATUS
projects/[PRIVATEPOOL_PROJECT_ID]/locations/us-central1/workerPools/[PRIVATEPOOL_ID]      2018-11-19T16:08:24+00:00  RUNNING

如果您知道专用池 ID,请运行以下命令来获取专用池的详细信息:

gcloud builds worker-pools describe PRIVATEPOOL_ID \
    --region=REGION \
    --project=PRIVATEPOOL_PROJECT_ID

地点

  • PRIVATEPOOL_ID:专用池的 ID。
  • REGION:在其中创建了专用池的地区
  • PRIVATEPOOL_PROJECT_ID:包含专用池的 Google Cloud 项目的 ID。

API

如果您不知道专用池的 ID,请运行以下 cURL 命令以列出专用池的详细信息,其中 PRIVATEPOOL_PROJECT_ID 是包含专用池的 Google Cloud 项目的 ID:

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://cloudbuild.googleapis.com/v1/projects/PRIVATEPOOL_PROJECT_ID/locations/REGION/workerPools

如果您知道专用池 ID,请运行以下 curl 命令以获取专用池的详细信息:

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://cloudbuild.googleapis.com/v1/projects/PRIVATEPOOL_PROJECT_ID/locations/REGION/workerPools/PRIVATEPOOL_ID

地点

  • PRIVATEPOOL_ID:专用池的 ID。
  • PRIVATEPOOL_PROJECT_ID:包含专用池的 Google Cloud 项目的 ID。
  • REGION:在其中创建了专用池的地区

查看专用池价格估算值

创建或更新专用池时,创建专用池修改专用池页面上的每月估算费用侧边栏会显示专用池每月运行费用的估算值。计算基于以下因素:

  • 虚拟 CPU 数量
  • 机器类型
  • 内存
  • 构建分钟数
  • 区域,仅适用于 N2D 和 C3 机器

估算价格不包括默认提供的 100 GB 以外的额外磁盘容量的费用。估计价格可能与最终价格不同,具体取决于最终 build 配置、实际使用的 build 分钟数和其他因素。如需了解详情,请参阅 Cloud Build 价格

删除专用池

如需获得创建私有池所需的权限,请让管理员向您授予服务账号的 Cloud Build WorkerPool Owner (roles/cloudbuild.workerPoolOwner) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

如需删除专用池,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,打开工作器池页面:

    打开 Cloud Build 工作器池页面

  2. 在专用池所在的行中,点击垃圾桶图标。

gcloud

要删除专用池,请运行 gcloud builds worker-pools delete 命令:

 gcloud builds worker-pools delete PRIVATEPOOL_ID \
     --region=REGION \
     --project=PRIVATEPOOL_PROJECT_ID

其中:

  • PRIVATEPOOL_ID:专用池的 ID。
  • PRIVATEPOOL_PROJECT_ID:包含专用池的 Google Cloud 项目的 ID。
  • REGION:在其中创建了专用池的地区

删除专用池后,您应该会看到类似于以下内容的输出:

 Deleted [https://cloudbuild.googleapis.com/v1/projects/gcb-docs-project/locations/us-central1/workerPools/[PRIVATEPOOL_ID].

API

使用 cURL 调用 Cloud Build API:

  curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      https://cloudbuild.googleapis.com/v1/projects/PRIVATEPOOL_PROJECT_ID/locations/REGION/workerPools/PRIVATEPOOL_ID

其中:

  • PRIVATEPOOL_ID:专用池的 ID。
  • PRIVATEPOOL_PROJECT_ID:包含专用池的 Google Cloud 项目的 ID。
  • REGION:在其中创建了专用池的地区

后续步骤