在专用网络中从 GitLab Enterprise Edition 构建代码库

借助 Cloud Build,您可以创建触发器,以便通过 GitLab Enterprise Edition 上托管的代码库进行构建,从而让您能够执行构建来响应与 GitLab Enterprise Edition 代码库关联的提交请求或合并请求等事件。

本页面介绍了如何在 GitLab 上启用触发器功能 企业版实例(如果您的实例托管在专用网络中)。

准备工作

  • Enable the Cloud Build, Secret Manager, Compute Engine, and Service Networking APIs.

    Enable the APIs

在专用网络中从 GitLab Enterprise Edition 构建代码库

如果您的 GitLab Enterprise Edition 实例只能在 您需要设置一个 Service Directory 服务,并使用专用池进行构建。包含 VPC 网络的项目可以与包含 Service Directory 服务的项目不同。请按照以下说明确保您的实例在 创建触发器:

  1. 启用 Service Directory API

  2. 确保您已将 Project IAM Admin 角色授予 Google Cloud 项目, Service Directory 服务。如需了解如何授予 IAM 角色,请参阅配置对 Cloud Build 资源的访问权限

  3. 请完成以下步骤,设置 Service Directory 服务:

    1. 为您的 Google Cloud 项目配置命名空间

      您在命名空间中指定的区域必须与您在 Cloud Build 主机连接中指定的区域一致。

    2. 在您的命名空间中配置服务

    3. 配置端点

      配置端点时,您必须使用内部 IP 地址并指定 HTTPS 端口号,以便 Cloud Build 能够访问您的服务。

    如需详细了解专用网络访问配置,请参阅配置专用网络访问。Service Directory 还可以与各种服务集成, 例如负载平衡器和 Google Kubernetes Engine (GKE)。 如需了解详情,请参阅 Service Directory 和负载均衡概览Service Directory for GKE 概览

  4. 向 Service Directory 授予对 Cloud Build 服务代理的访问权限:

    export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    export CLOUD_BUILD_SERVICE_AGENT="service-$PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding  PROJECT_ID_CONTAINING_SERVICE_DIRECTORY \
       --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \
       --role="roles/servicedirectory.viewer"
    

    替换以下内容:

    • PROJECT_ID 是您的 Cloud Build 项目 ID。
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY 是包含您的服务目录的 Google Cloud 项目的 ID。
  5. 向 Cloud Build 服务代理授予 VPC 网络资源访问权限:

    export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    export CLOUD_BUILD_SERVICE_AGENT="service-$PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding PROJECT_ID_CONTAINING_NETWORK_RESOURCE \
       --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \
       --role="roles/servicedirectory.pscAuthorizedService"
    

    替换以下内容:

    • PROJECT_ID 是您的 Cloud Build 项目 ID。
    • PROJECT_ID_CONTAINING_NETWORK_RESOURCE 是包含您的网络资源的 Google Cloud 项目的 ID。
  6. 使用专用池运行 您的 build。如果您尚未创建专用池,请参阅创建新的专用池

  7. 按照说明 创建 GitLab 企业版触发器 构建托管在 GitLab Enterprise Edition 实例上的代码库。

    如果您在连接 GitLab 企业版主机连接到 Cloud Build,则必须设置 主机 URI 作为证书的主题备用名称 (SAN)。

您的 GitLab Enterprise Edition 触发器现在将自动调用 GitLab Enterprise Edition 实例。

使用 Service Directory 访问 Google Cloud 外部的主机

Service Directory 使用 IP 地址范围 35.199.192.0/19 来 连接到 Google Cloud 外部的主机。您必须将此范围添加到 防火墙中的许可名单此外,您需要将私有网络配置为通过 Cloud VPN 或 Cloud Interconnect 连接路由此范围。

如果您的连接使用 Cloud Router,您可以将连接配置为您的专用网络通信该范围。

如需了解详情,请参阅配置专用网络访问

使用 Cloud Load Balancing 访问 Google Cloud 外部的主机

如果您的网络配置不允许您将服务目录 IP 地址范围 35.199.192.0/19 路由到 Cloud VPN 或 Cloud Interconnect,您可以使用 Cloud 负载均衡创建负载均衡器,将流量引导到您的主机。

创建 Service Directory 端点时,请务必使用负载均衡器转发规则的 IP 地址,而不是主机的 IP 地址。您可以使用 内部 HTTPS 负载均衡器内部传输控制协议 (TCP) 负载均衡器 创建端点时

创建 TCP 负载均衡器时,请考虑以下事项:

  • 只需一个混合连接网络端点组 (NEG) 即可访问您的主机。
  • TCP 负载均衡器不需要 SSL 证书的未加密私钥。
  • 您的 Cloud VPN 设置需要将 Cloud Router 与全球动态路由搭配使用。如果您的 Cloud VPN 使用静态路由,您可以改用使用 Cloud Service Mesh 的代理。有关详情,请参阅设置网络 适用于混合环境的边缘服务 部署

如需详细了解如何创建 HTTPS 负载均衡器,请参阅 设置具有混合连接的内部应用负载平衡器。 如需详细了解如何创建 TCP 负载均衡器,请参阅 设置具有混合连接的区域级内部代理网络负载平衡器

数据共享

从 Cloud Build 发送到 GitLab Enterprise Edition 的数据可以帮助您 在 GitLab Enterprise 上按名称识别触发器并查看构建结果 Edition 代码库。

以下数据在 Cloud Build 和 GitLab 之间共享 企业版:

  • Google Cloud 项目 ID
  • 触发器名称

后续步骤