通过已发布的服务后端和端点访问已发布的服务

您可以配置受支持的负载平衡器或区域级 Cloud Service Mesh,以通过 Private Service Connect 端点将流量路由到已发布的服务。为此,您需要将区域后端服务与服务连接相关联。此配置称为已发布的服务后端。

本页面介绍了如何为负载平衡器配置已发布的服务后端。如需了解如何为区域 Cloud Service Mesh 配置已发布的服务后端,请参阅为 Cloud Service Mesh 配置已发布的服务后端

只有当提供方和使用方 VPC 网络都属于同一组织时,才支持发布的服务后端。

准备工作

  • 了解已发布的服务后端
  • 确保托管服务的提供方 VPC 网络与您要配置已发布服务后端的消费方网络属于同一组织。
  • 确定要访问的服务的服务连接
  • 确定或创建连接到您要访问的服务的 Private Service Connect 端点。此端点必须与您的使用方负载均衡器位于同一区域。
  • 确定或创建支持已发布服务后端的使用方负载均衡器:
    • 负载均衡器的转发规则和后端服务必须与服务连接以及连接到该服务的 Private Service Connect 端点位于同一区域。
    • 如果您创建新的负载均衡器,请勿向负载均衡器的后端服务添加任何后端。您将在配置已发布的服务后端时添加它们。
  • 在项目中启用 Compute Engine API

所需的角色

如需获得为 Private Service Connect 端点配置负载均衡所需的权限,请让您的管理员为您授予项目的 Compute Load Balancer Admin (roles/compute.loadBalancerAdmin) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

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

将已发布的服务后端添加到使用方负载均衡器

如需创建已发布的服务的后端,请将负载均衡器的区域后端服务与服务连接相关联。您无需明确将负载均衡器与端点相关联。相反,当客户端向负载均衡器发送请求时,负载均衡器会通过连接到服务连接的 ACCEPTED Private Service Connect 端点来路由流量。

gcloud

使用 gcloud beta compute backend-services add-backend 命令

gcloud beta compute backend-services add-backend BACKEND_SERVICE \
    --region=REGION \
    --service=//compute.googleapis.com/projects/PROJECT_ID/locations/REGION/serviceAttachments/SERVICE_ATTACHMENT

替换以下内容:

  • BACKEND_SERVICE:后端服务的名称
  • REGION:后端服务的区域,必须与服务连接的区域匹配
  • PROJECT_ID:服务附件所属项目的项目 ID
  • SERVICE_ATTACHMENT:要与后端服务关联的服务连接的名称

API

  1. 更新后端服务时,您需要添加后端服务的指纹。如需查找指纹,请向 regionBackendServices.get 方法发送请求。

    HTTP 方法和网址:

    GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE
    

    替换以下内容:

    • PROJECT_ID:您的项目的 ID
    • REGION:后端服务的区域,必须与服务连接的区域匹配
    • BACKEND_SERVICE:后端服务的名称

    请记下响应中的 fingerprint 值,您需要在下一步中使用该值。

  2. regionBackendServices.patch 方法发送请求。

    以下请求会替换所有现有后端。

    HTTP 方法和网址:

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE
    

    请求 JSON 正文:

    {
      "backends": [
        {
          "group": "https://www.googleapis.com/compute/beta/projects/PROJECT_ID/locations/REGION/serviceAttachments/SERVICE_ATTACHMENT"
        }
      ],
      "fingerprint": "FINGERPRINT"
    }
    

    替换以下内容:

    • SERVICE_ATTACHMENT:要与后端服务关联的服务连接的名称
    • FINGERPRINT:您在上一步中记下的指纹值