创建和管理专用池

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

准备工作

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

  2. 启用 Cloud Build API。

    启用 API

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

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

创建新的专用池

IAM 权限:您需要 Cloud Build WorkerPool Owner 角色才能执行此任务。有关授予此角色的说明,请参阅配置对 Cloud Build 资源的配置权限

在每个区域,每个 Google Cloud 项目最多可以创建 10 个专用池。如需创建新的专用池,请按以下所述操作:

控制台

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

    打开 Cloud Build 工作器池页面

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

  3. 工作器池页面中,点击创建

    您会看到创建专用池侧边栏。

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

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

    2. 区域:选择要在哪个区域创建专用池。

    3. 机器类型:选择要用于专用池的 Compute Engine 机器类型。

    4. 可用磁盘大小:输入专用池的磁盘大小。指定大于或等于 100 且小于或等于 1000 的值。如果未提供,Cloud Build 使用的磁盘大小为 100。

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

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

      2. 专用网络:如果您的实例托管在专用网络上,请选择此选项。

        1. Project:选择您的 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 地址指定值,则系统会自动为 IP 地址分配一个在对等互连 VPC 网络中的范围。

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

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

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 且小于或等于 1000 的值。如果未提供值,则 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

更新专用池

IAM 权限:您需要 Cloud Build WorkerPool Editor 角色才能执行此任务。有关授予此角色的说明,请参阅配置对 Cloud Build 资源的访问权限

您可以更新现有专用池的磁盘大小和机器类型。要更新专用池,请执行以下操作:

控制台

  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:您在其中创建了专用池的区域

查看专用池的详细信息

IAM 权限:您需要 Cloud Build WorkerPool Viewer 角色才能执行此任务。有关授予此角色的说明,请参阅配置对 Cloud Build 资源的访问权限

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

控制台

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

    打开 Cloud Build 工作器池页面

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

  3. 点击专用池名称。

此时会显示修改专用池侧边栏,其中包含该专用池的详细信息。

gcloud

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

gcloud builds worker-pools list --project=PRIVATEPOOL_PROJECT_ID

其中,PRIVATEPOOL_PROJECT_ID 是包含专用池的 Google Cloud 项目的 ID。

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

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:在其中创建了专用池的地区

删除专用池

IAM 权限:您需要 Cloud Build WorkerPool Owner 角色才能执行此任务。有关授予此角色的说明,请参阅配置对 Cloud Build 资源的访问权限

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

控制台

  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:在其中创建了专用池的地区

后续步骤