使用 Private Service Connect 发布代管式服务

服务提供方可以借助 Private Service Connect,在您的 VPC 网络中使用内部 IP 地址发布服务。服务使用方可以使用 VPC 网络中的内部 IP 地址访问您已发布的服务。

本指南介绍如何使用 Private Service Connect 发布托管在内部 TCP/UDP 负载均衡器或内部 HTTP(S) 负载均衡器上的服务。

如果要发布在 Google Kubernetes Engine 的内部 TCP/UDP 负载均衡器上托管的服务,请参阅使用 Private Service Connect 创建内部 TCP/UDP 负载均衡器

如需发布服务,请执行以下操作:

  • 使用服务提供方 VPC 网络中的内部 TCP/UDP 负载均衡器或内部 HTTP(S) 负载均衡器托管服务。

  • 在负载均衡器所在的区域中创建服务连接。

    如果您使用的是共享 VPC,则可以在宿主项目中创建 Private Service Connect 子网,并在服务项目中创建服务连接。

如需连接到已发布的服务,服务使用方需要配置 Private Service Connect 端点来访问同一区域中的服务

角色

以下 IAM 角色提供了执行本指南中的任务所需的权限。

准备工作

  • 如需使用 Private Service Connect 发布服务,该服务必须托管在以下任一负载均衡器的后端上:

  • 确定服务使用方向已发布服务发送请求的方式。我们建议使用以下格式的域名:REGION.p.DOMAIN。例如,如果您的公共网域是example.com,而已发布的服务位于us-west1,则我们建议您允许服务使用方使用 us-west1.p.example.com 网域中的主机名向该服务发送请求。

    • 提供服务的负载均衡器必须能够接受定向到这些域名的请求。如果您使用的是内部 HTTP(S) 负载均衡器,则可能需要更新负载均衡器配置,以反映您希望服务使用方使用的域名。例如,更新证书网址映射
  • 确定应允许从所有项目访问该服务,还是要控制哪些项目可以访问您的服务

限制

  • 每个负载均衡器只能由单个服务连接引用。 您不能将多个服务连接配置为使用同一负载平衡器。

  • 并非所有内部 TCP/UDP 负载平衡器功能都受支持。如果您的负载均衡器使用这些功能中的任何一个,则您不能使用它来发布使用 Private Service Connect 的服务。

    此外,服务连接不得引用用于内部协议转发的转发规则。

  • 使用内部 HTTP(S) 负载均衡器的服务不支持 PROXY 协议。

  • 您为 Private Service Connect 创建的子网具有以下限制:

    • 您不能在多个服务连接配置中使用同一个子网。

    • 您不能将 Private Service Connect 子网中的 IP 地址分配给资源。

  • 如需了解问题和解决方法,请参阅已知问题

为 Private Service Connect 创建子网

您必须创建一个或多个专用子网,以用于 Private Service Connect。如果您使用 Google Cloud Console 发布服务,则可以在此过程中创建子网。

如需了解 Private Service Connect 子网,请参阅 Private Service Connect 子网

控制台

  1. 转到“VPC 网络”页面。
    转到 VPC 网络
  2. 点击某个 VPC 网络的名称以显示其 VPC 网络详情页面。
  3. 点击添加子网。在显示的面板中:
    1. 提供名称
    2. 选择区域
    3. 用途部分中,选择 Private Service Connect
    4. 输入 IP 地址范围。例如 10.10.10.0/24
    5. 点击添加

gcloud

gcloud compute networks subnets create SUBNET_NAME \
    --network=NETWORK_NAME --region=REGION \
    --range=SUBNET_RANGE --purpose=PRIVATE_SERVICE_CONNECT

请替换以下内容:

  • SUBNET_NAME:要分配给子网的名称。

  • NETWORK_NAME:用于新子网的 VPC 的名称。

  • REGION:新子网的区域。此区域必须与您要发布服务的区域相同。

  • SUBNET_RANGE:要用于子网的 IP 地址范围。例如 10.10.10.0/24

API

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks

{
  "ipCidrRange": "SUBNET_RANGE",
  "name": "SUBNET_NAME",
  "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
  "purpose": "PRIVATE_SERVICE_CONNECT",
}

请替换以下内容:

  • PROJECT_ID:用于子网的项目。

  • SUBNET_NAME:要分配给子网的名称。

  • NETWORK_NAME:用于新子网的 VPC 网络的名称。

  • REGION:新子网的区域。此区域必须与您要发布服务的区域相同。

  • SUBNET_RANGE:要用于子网的 IP 地址范围。例如 10.10.10.0/24

发布使用自动项目批准的服务

按照以下说明发布服务,并自动允许任何使用方连接到此服务。如果您想显式批准使用方连接,请参阅发布使用显式项目批准的服务

发布服务时,您需要创建服务连接。服务使用方使用服务连接详情连接到您的服务。

如果您要查看使用方连接信息,可以启用 PROXY 协议。只有使用内部 TCP/UDP 负载均衡器的服务支持 PROXY 协议。不支持使用内部 HTTP(S) 负载均衡器的服务。如需详细了解 PROXY 协议,请参阅查看使用方连接信息

控制台

  1. 在 Google Cloud Console 中,转到 Private Service Connect 页面。

    转到 Private Service Connect

  2. 点击已发布服务标签页。

  3. 点击发布服务

  4. 选择负载均衡器类型内部 TCP/UDP 负载均衡器内部 HTTP(S) 负载均衡器

  5. 选择托管您要发布的服务的内部负载均衡器

    “网络”和“区域”字段会填充所选内部负载平衡器的详细信息。

  6. 如果看到系统提示,请选择与要发布的服务关联的转发规则

  7. 对于服务名称,输入服务连接的名称。

  8. 为该服务选择一个或多个子网。如果要添加新子网,您可以按照如下方式创建一个:

    1. 点击预留新子网
    2. 输入子网的名称和(可选)说明
    3. 为子网选择区域
    4. 输入用于子网的 IP 范围,然后点击添加
  9. 如果您要查看使用方连接信息,请选择使用代理协议

  10. 选择自动接受所有项目的连接

  11. 点击添加服务

gcloud

gcloud compute service-attachments create ATTACHMENT_NAME \
    --region=REGION \
    --producer-forwarding-rule=RULE_NAME  \
    --connection-preference=ACCEPT_AUTOMATIC \
    --nat-subnets=PSC_SUBNET_LIST \
    [ --enable-proxy-protocol ]

替换以下内容:

  • ATTACHMENT_NAME:要分配给服务连接的名称。

  • REGION:新服务连接的区域。此区域必须与您要发布服务的区域相同。

  • RULE_NAME:与您要发布的服务关联的转发规则的名称。

  • PSC_SUBNET_LIST:要与此服务连接搭配使用的一个或多个子网(使用英文逗号分隔)。

API

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments
{
  "name": "ATTACHMENT_NAME",
  "connectionPreference": "ACCEPT_AUTOMATIC",
  "targetService": "RULE_URI",
  "enableProxyProtocol": false,
  "natSubnets": [
    "PSC_SUBNET_1_URI",
    "PSC_SUBNET_2_URI",
  ],
}

请替换以下内容:

  • PROJECT_ID:服务连接的项目。

  • ATTACHMENT_NAME:要分配给服务连接的名称。

  • REGION:新服务连接的区域。此区域必须与您要发布服务的区域相同。

  • RULE_URI:与您要发布的服务关联的转发规则的名称。

  • PSC_SUBNET_1_URIPSC_SUBNET_2_URI:要用于此服务连接的子网 URI。您可以通过 URI 指定一个或多个子网。

发布使用显式项目批准的服务

按照以下说明发布服务,这样想要连接到该服务的使用方必须经过您的显式批准。如果要自动批准使用方连接,请参阅发布使用自动项目批准的服务

发布服务时,您需要创建服务连接。服务使用方使用服务连接详情连接到您的服务。

如果您将一个项目同时添加到了接受列表和拒绝列表,则来自该项目的连接请求会被拒绝。

如果您要查看使用方连接信息,可以启用 PROXY 协议。只有使用内部 TCP/UDP 负载均衡器的服务支持 PROXY 协议。不支持使用内部 HTTP(S) 负载均衡器的服务。如需详细了解 PROXY 协议,请参阅查看使用方连接信息

控制台

  1. 在 Google Cloud Console 中,转到 Private Service Connect 页面。

    转到 Private Service Connect

  2. 点击已发布服务标签页。

  3. 点击发布服务

  4. 选择负载均衡器类型内部 TCP/UDP 负载均衡器内部 HTTP(S) 负载均衡器

  5. 选择托管您要发布的服务的内部负载均衡器

    “网络”和“区域”字段会填充所选内部负载平衡器的详细信息。

  6. 如果出现提示,请选择与要发布的服务关联的转发规则

  7. 对于服务名称,输入服务连接的名称。

  8. 为该服务选择一个或多个子网

    如果要添加新子网,您可以按照如下方式创建一个:

    1. 点击预留新子网
    2. 输入子网的名称和(可选)说明
    3. 为子网选择区域
    4. 输入用于子网的 IP 范围,然后点击添加
  9. 如果您要查看使用方连接信息,请选中协议复选框。

  10. 选择接受选定项目的连接

  11. 点击添加接受的项目,然后输入您希望允许其连接到相应服务的项目的详细信息:

    • 项目名称:允许来自其连接的项目的名称。
    • 连接限制:允许来自此项目的连接数。
  12. 点击添加服务

gcloud

gcloud compute service-attachments create ATTACHMENT_NAME \
    --region=REGION \
    --producer-forwarding-rule=RULE_NAME  \
    --connection-preference=ACCEPT_MANUAL \
    --consumer-accept-list=ACCEPTED_PROJECT_1=LIMIT_1,ACCEPTED_PROJECT_2=LIMIT_2 \
    --consumer-reject-list=REJECTED_PROJECT_1,REJECTED_PROJECT_2 \
    --nat-subnets=PSC_SUBNET_LIST \
    [ --enable-proxy-protocol ]

替换以下内容:

  • ATTACHMENT_NAME:要分配给服务连接的名称。

  • REGION:新服务连接的区域。此区域必须与您要发布服务的区域相同。

  • RULE_NAME:与您要发布的服务关联的转发规则的名称。

  • ACCEPTED_PROJECT_1ACCEPTED_PROJECT_2:要接受的项目。--consumer-accept-list 是可选项,可以包含一个或多个项目。

  • LIMIT_1LIMIT_2:相应项目的连接限制。连接限制代表可以连接到此服务的使用方的 Private Service Connect 端点的数量。所接受的项目都必须配置有一个连接限制。

  • REJECTED_PROJECT_1REJECTED_PROJECT_2:要拒绝的项目。--consumer-reject-list 是可选项,可以包含一个或多个项目。

  • PSC_SUBNET_LIST:用于此服务连接的一个或多个子网的英文逗号分隔列表。

API

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments
{
  "name": "ATTACHMENT_NAME",
  "region": "REGION",
  "connectionPreference": "ACCEPT_MANUAL",
  "targetService": "RULE_URI",
  "enableProxyProtocol": false,
  "natSubnets": [
    "PSC_SUBNET_1_URI",
    "PSC_SUBNET_2_URI",
  ],
  "consumerRejectList": [
    "REJECTED_PROJECT_1",
    "REJECTED_PROJECT_2",
  ],
  "consumerAcceptList": [
    "consumerProjectLimit": {
      "projectId": "ACCEPTED_PROJECT_1",
      "connectionsLimit": "LIMIT_2",
    },
    "consumerProjectLimit": {
      "projectId": "ACCEPTED_PROJECT_2",
      "connectionsLimit": "LIMIT_2",
    },
  ],
}

请替换以下内容:

  • PROJECT_ID:服务连接的项目。

  • REGION:该服务连接的区域。

  • ATTACHMENT_NAME:要分配给服务连接的名称。

  • RULE_URI:与您要发布的服务关联的转发规则的 URL。

  • PSC_SUBNET_1_URIPSC_SUBNET_2_URI:要用于此服务连接的子网 URI。您可以通过 URI 指定一个或多个子网。

  • REJECTED_PROJECT_1REJECTED_PROJECT_2:要拒绝的项目。consumerRejectList 是可选项,可以包含一个或多个项目。

  • ACCEPTED_PROJECT_1ACCEPTED_PROJECT_2:要接受的项目。consumerAcceptList 是可选项,可以包含一个或多个项目。

  • LIMIT_1LIMIT_2:相应项目的连接限制。连接限制代表可以连接到此服务的使用方的 Private Service Connect 端点的数量。所接受的项目都必须配置有一个连接限制。

查看使用方连接信息

默认情况下,Private Service Connect 将使用方的来源 IP 地址转换为服务提供方 VPC 网络中某个 Private Service Connect 子网内的地址。如果您希望查看使用方的原始来源 IP 地址,可以启用 PROXY 协议。

只有使用内部 TCP/UDP 负载均衡器的服务支持 PROXY 协议。不支持使用内部 HTTP(S) 负载均衡器的服务。

如果启用了 PROXY 协议,则可以通过 PROXY 协议标头获取使用方的来源 IP 地址和 PSC 连接 ID (pscConnectionId)。

如果启用了 PROXY 协议,请查看有关后端 Web 服务器软件的文档,了解如何解析和处理客户端连接 TCP 载荷中的传入 PROXY 协议标头。如果在服务连接上启用了 PROXY 协议,但后端 Web 服务器未配置为处理 PROXY 协议标头,则 Web 请求的格式可能不正确。如果请求格式不正确,则服务器无法解读该请求。

Private Service Connect 仅对于 TCP 服务支持 PROXY 协议。尽管不支持 UDP 服务,也不会阻止您为 UDP 服务启用 PROXY 协议。

pscConnectionId类型-长度-值 (TLV) 的格式编码在 PROXY 协议标头中。

字段 字段长度 字段值
类型 1 个字节 0xE0 (PP2_TYPE_GCP)
时长 2 个字节 0x8(8 个字节)
8 个字节 按网络顺序显示的 8 字节 pscConnectionId

您可以通过使用方转发规则提供方服务连接查看 8 字节 pscConnectionId

对于给定时间点的所有活跃连接,pscConnectionId 在全球范围内都是唯一的。但是,随着时间的推移,在以下情况下可能会重复使用 pscConnectionId

  • 在给定的 VPC 网络中,如果您删除 Private Service Connect 端点(转发规则),并使用相同的 IP 地址创建一个新端点,则可能会使用同一 pscConnectionId

  • 如果您删除包含 Private Service Connect 端点(转发规则)的 VPC 网络,则在等待七天后,用于这些端点的 pscConnectionId 可能会用于另一个 VPC 网络中的其他端点。

您可以将 pscConnectionId 用于调试,以及跟踪数据包的来源。

此外,您可以从提供方服务连接获取 16 字节 PSC 连接 ID。PSC 连接 ID 是用于标识 Private Service Connect 服务连接的全局唯一 ID。您可以使用 PSC 连接 ID 来获得可见性及执行调试。PSC 连接 ID 不会包含在 PROXY 协议标头中。

管理对已发布服务的访问请求

如果您已发布了使用显式项目批准的服务,则可以接受或拒绝来自使用方项目的连接请求。

如果您将一个项目同时添加到了接受列表和拒绝列表,则来自该项目的连接请求会被拒绝。

为一项服务接受了使用方端点连接后,该端点可以连接到服务,直至此服务连接被删除。无论项目是被显式接受,还是由于连接偏好设为自动接受连接而连接了使用方端点,这一点都适用。

  • 如果您从接受列表中移除了某个项目,该项目中先前已被接受的任何使用方端点仍然可以连接到该服务。该项目中新使用方端点的连接必须被接受,然后该端点才能连接。

  • 如果您将某个项目添加到拒绝列表,该项目中先前已被接受的所有使用方端点仍然可以连接到该服务。该项目中新使用方端点的连接在连接到该服务时会被拒绝。

控制台

  1. 在 Google Cloud Console 中,转到 Private Service Connect 页面。

    转到 Private Service Connect

  2. 点击已发布服务标签页。

  3. 点击要管理的服务。

  4. 已连接的项目部分列出了已尝试连接到此服务的项目。选中一个或多个项目旁边的复选框,然后点击接受拒绝

gcloud

  1. 描述您要修改的服务连接。

    gcloud compute service-attachments describe \
        ATTACHMENT_NAME --region=REGION
    

    输出类似于以下示例。如果存在任何待处理的使用方连接,则这些连接会以 PENDING 状态列出。

    在此示例输出中,项目 CONSUMER_PROJECT_1 位于接受列表中,因此接受 ENDPOINT_1 并且可以连接到相应服务。项目 CONSUMER_PROJECT_2 不在接受列表中,因此 ENDPOINT_2 处于待处理状态。将 CONSUMER_PROJECT_2 添加到接受列表后,ENDPOINT_2 的状态会更改为 ACCEPTED,并且端点可以连接到相应服务。

    connectedEndpoints:
    - endpoint: https://www.googleapis.com/compute/v1/projects/CONSUMER_PROJECT_1/regions/REGION_1/forwardingRules/ENDPOINT_1
      pscConnectionId: 'ENDPOINT_1_ID'
      status: ACCEPTED
    - endpoint: https://www.googleapis.com/compute/v1/projects/CONSUMER_PROJECT_2/regions/REGION_2/forwardingRules/ENDPOINT_2
      pscConnectionId: 'ENDPOINT_2_ID'
      status: PENDING
    connectionPreference: ACCEPT_MANUAL
    consumerAcceptLists:
    - connectionLimit: LIMIT_1
      projectIdOrNum: CONSUMER_PROJECT_1
    creationTimestamp: 'TIMESTAMP'
    description: 'DESCRIPTION'
    enableProxyProtocol: false
    fingerprint: FINGERPRINT
    id: 'ID'
    kind: compute#serviceAttachment
    name: NAME
    natSubnets:
    - https://www.googleapis.com/compute/v1/projects/PRODUCER_PROJECT/regions/REGION/subnetworks/PSC_SUBNET
    pscServiceAttachmentId:
      high: 'PSC_ATTACH_ID_HIGH'
      low: 'PSC_ATTACH_ID_LOW'
    region: https://www.googleapis.com/compute/v1/projects/PRODUCER_PROJECT/regions/REGION
    selfLink: https://www.googleapis.com/compute/v1/projects/projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    targetService: https://www.googleapis.com/compute/v1/projects/PRODUCER_PROJECT/regions/REGION/forwardingRules/PRODUCER_FWD_RULE
    
  2. 接受或拒绝使用方项目。

    您可以指定 --consumer-accept-list 和/或 --consumer-reject-list。您可以在 --consumer-accept-list--consumer-reject-list 中指定多个值。

    gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --consumer-accept-list=ACCEPTED_PROJECT_1=LIMIT_1,ACCEPTED_PROJECT_2=LIMIT_2 \
        --consumer-reject-list=REJECTED_PROJECT_1,REJECTED_PROJECT_2
    

    请替换以下内容:

    • ATTACHMENT_NAME:要分配给服务连接的名称。

    • REGION:服务连接所在区域。

    • ACCEPTED_PROJECT_1ACCEPTED_PROJECT_2:要接受的项目。consumerAcceptList 是可选项,可以包含一个或多个项目。

    • LIMIT_1LIMIT_2:相应项目的连接限制。连接限制代表可以连接到此服务的使用方的 Private Service Connect 端点的数量。所接受的项目都必须配置有一个连接限制。

    • REJECTED_PROJECT_1REJECTED_PROJECT_2:要拒绝的项目。--consumer-reject-list 是可选项,可以包含一个或多个项目。

API

  1. 描述您要修改的服务连接。

    如果存在任何待处理的使用方连接,则这些连接会以 PENDING 状态列出。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    
  2. 接受或拒绝使用方项目。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    
    {
      ...
      "consumerAcceptLists": [
        {
          "projectIdOrNum": "ACCEPTED_PROJECT_1"
          "connectionLimit": "LIMIT_1",
        },
        {
          "projectIdOrNum": "ACCEPTED_PROJECT_2"
          "connectionLimit": "LIMIT_2",
        }
      ],
      "consumerRejectLists": [
        "REJECTED_PROJECT_1",
        "REJECTED_PROJECT_2",
      ],
      ...
    }
    

    请替换以下内容:

    • PROJECT_ID:服务连接的项目。

    • REGION:该服务连接的区域。

    • ATTACHMENT_NAME:要分配给服务连接的名称。

    • REJECTED_PROJECT_1REJECTED_PROJECT_2:要拒绝的项目。consumerRejectList 是可选项,可以包含一个或多个项目。

    • ACCEPTED_PROJECT_1ACCEPTED_PROJECT_2:要接受的项目。consumerAcceptList 是可选项,可以包含一个或多个项目。

    • LIMIT_1LIMIT_2:相应项目的连接限制。连接限制代表可以连接到此服务的使用方的 Private Service Connect 端点的数量。所接受的项目都必须配置有一个连接限制。

更改已发布服务的连接偏好设置

对于已发布服务,您可以在自动接受项目与显式接受项目之间切换。

从自动接受更改为显式接受并不会影响在此更改之前连接到服务的使用方端点。 现有的使用方端点仍可连接到已发布的服务,直到服务连接被删除为止。新的使用方端点只有在被接受后,才能连接到该服务。如需了解详情,请参阅管理对已发布服务的访问请求

控制台

  1. 在 Google Cloud Console 中,转到 Private Service Connect 页面。

    转到 Private Service Connect

  2. 点击已发布服务标签页。

  3. 点击要更新的服务,然后点击修改

  4. 选择所需的连接偏好设置:

    • 接受选定项目的连接
    • 自动接受所有项目的连接
  5. 如果您要切换为接受选定项目的连接,则可以提供要允许的项目的详细信息,也可以稍后再添加。

    1. 点击添加接受的项目
    2. 输入项目连接限制
  6. 点击保存

gcloud

  • 将服务连接的连接偏好设置从 ACCEPT_AUTOMATIC 改为 ACCEPT_MANUAL

    您可以使用 --consumer-accept-list--consumer-reject-list 控制哪些项目可以连接到您的服务。您可以在更改连接偏好设置时配置接受列表和拒绝列表,也可以稍后更新这些列表。

    gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --connection-preference=ACCEPT_MANUAL \
        [ --consumer-accept-list=ACCEPTED_PROJECT_1=LIMIT_1,ACCEPTED_PROJECT_2=LIMIT_2] \
        [ --consumer-reject-list=REJECTED_PROJECT_1,REJECTED_PROJECT_2 ]
    
    • ATTACHMENT_NAME:服务连接的名称。

    • REGION:服务连接所在区域。

    • ACCEPTED_PROJECT_1ACCEPTED_PROJECT_2:要接受的项目。--consumer-accept-list 是可选项,可以包含一个或多个项目。

    • LIMIT_1LIMIT_2:相应项目的连接限制。连接限制代表可以连接到此服务的使用方的 Private Service Connect 端点的数量。所接受的项目都必须配置有一个连接限制。

    • REJECTED_PROJECT_1REJECTED_PROJECT_2:要拒绝的项目。--consumer-reject-list 是可选项,可以包含一个或多个项目。

  • 将服务连接的连接偏好设置从 ACCEPT_MANUAL 改为 ACCEPT_AUTOMATIC

    如果您的接受列表或拒绝列表中包含值,请在更改连接偏好设置 ("") 时将这些值设置为空。

    gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --connection-preference=ACCEPT_AUTOMATIC \
         --consumer-accept-list="" \
         --consumer-reject-list=""
    
    • ATTACHMENT_NAME:服务连接的名称。

    • REGION:服务连接所在区域。

API

  • 将服务连接的连接偏好设置从 ACCEPT_AUTOMATIC 改为 ACCEPT_MANUAL
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME

{
  ...
  "connectionPreference": "ACCEPT_MANUAL",
  "consumerAcceptLists": [
    {
      "projectIdOrNum": "ACCEPTED_PROJECT_1"
      "connectionLimit": "LIMIT_1",
    },
    {
      "projectIdOrNum": "ACCEPTED_PROJECT_2"
      "connectionLimit": "LIMIT_2",
    }
  ],
  "consumerRejectLists": [
    "REJECTED_PROJECT_1",
    "REJECTED_PROJECT_2",
  ],
  ...
}

请替换以下内容:

  • PROJECT_ID:服务连接的项目。

  • REGION:该服务连接的区域。

  • ATTACHMENT_NAME:要分配给服务连接的名称。

  • REJECTED_PROJECT_1REJECTED_PROJECT_2:要拒绝的项目。consumerRejectList 是可选项,可以包含一个或多个项目。

  • ACCEPTED_PROJECT_1ACCEPTED_PROJECT_2:要接受的项目。consumerAcceptList 是可选项,可以包含一个或多个项目。

  • LIMIT_1LIMIT_2:相应项目的连接限制。连接限制代表可以连接到此服务的使用方的 Private Service Connect 端点的数量。所接受的项目都必须配置有一个连接限制。

  • 将服务连接的连接偏好设置从 ACCEPT_MANUAL 改为 ACCEPT_AUTOMATIC

    如果 consumerAcceptListsconsumerRejectLists 字段指定了任何项目,请在将连接偏好设置更改为 ACCEPT_AUTOMATIC 时将其设置为空。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME

{
  ...
  "connectionPreference": "ACCEPT_AUTOMATIC",
  "consumerAcceptLists": [ ],
  "consumerRejectLists": [ ],
  ...
}

请替换以下内容:

  • PROJECT_ID:服务连接的项目。

  • REGION:该服务连接的区域。

  • ATTACHMENT_NAME:服务连接的名称。

修改与服务关联的子网

您可以修改哪些 Private Service Connect 子网用于已发布的服务。

控制台

  1. 在 Google Cloud Console 中,转到 Private Service Connect 页面。

    转到 Private Service Connect

  2. 点击已发布服务标签页。

  3. 点击要更新的服务,然后点击修改

  4. 修改用于此服务的子网。

    如果要添加新子网,您可以按照如下方式创建一个:

    1. 点击预留新子网
    2. 输入子网的名称和(可选)说明
    3. 为子网选择区域
    4. 输入用于子网的 IP 范围,然后点击添加
  5. 点击保存

gcloud

更新用于此服务连接的 Private Service Connect 子网。如果您需要创建新子网,请参阅创建 Private Service Connect 子网

gcloud compute service-attachments update ATTACHMENT_NAME \
    --region=REGION \
    --nat-subnets=PSC_SUBNET_LIST

请替换以下内容:

  • ATTACHMENT_NAME:服务连接的名称。

  • REGION:服务连接所在区域。

  • PSC_SUBNET_LIST:要与此服务连接搭配使用的一个或多个子网(使用英文逗号分隔)。

API

更新用于此服务连接的 Private Service Connect 子网。如果您需要创建新子网,请参阅创建 Private Service Connect 子网

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME

{
  ...
  "natSubnets": [
    "PSC_SUBNET1_URI",
    "PSC_SUBNET2_URI",
  ],
  ...
}

请替换以下内容:

  • PROJECT_ID:服务连接的项目。

  • REGION:该服务连接的区域。

  • ATTACHMENT_NAME:要分配给服务连接的名称。

  • PSC_SUBNET1_URIPSC_SUBNET2_URI:您要用于此服务连接的子网的 URI。您可以指定一个或多个子网。

列出已发布的服务

您可以列出所有服务。

控制台

  1. 在 Google Cloud Console 中,转到 Private Service Connect 页面。

    转到 Private Service Connect

  2. 点击已发布服务标签页。

    此时会显示 Private Service Connect 服务连接。

gcloud

  1. 列出服务连接。

    gcloud compute service-attachments list [--regions=REGION_LIST]
    

    请替换以下内容:

    • REGION_LIST:要查看其服务连接的一个或多个区域的英文逗号分隔列表。例如 us-central1us-west1,us-central1

API

您可以查看指定区域或所有区域中的所有服务连接。

  • 查看一个区域中的所有服务连接:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments
    
  • 查看所有区域中的所有服务连接:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/serviceAttachments
    

    请替换以下内容:

    • PROJECT_ID:服务连接的项目。

    • REGION:该服务连接的区域。

    • ATTACHMENT_NAME:服务连接的名称。

查看已发布服务的详细信息

您可以查看已发布服务的配置详细信息。您可以在 Cloud Console 中查看一些配置详细信息,例如服务使用方需要连接到服务的服务连接 URI。如需查看包括服务连接使用方的 pscConnectionId 值在内的所有详细信息,请使用 gcloud 命令行工具或 API。

控制台

您可以查看已发布服务的详细信息。服务连接字段包含服务连接 URI。

  1. 在 Google Cloud Console 中,转到 Private Service Connect 页面。

    转到 Private Service Connect

  2. 点击已发布服务标签页。

  3. 点击要查看的服务。

gcloud

您可以查看已发布服务的详细信息。selfLink 字段包含服务连接 URI。

gcloud compute service-attachments describe \
    ATTACHMENT_NAME --region=REGION

API

您可以查看已发布服务的详细信息。selfLink 字段包含服务连接 URI。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME

请替换以下内容:

  • PROJECT_ID:服务连接的项目。

  • REGION:该服务连接的区域。

  • ATTACHMENT_NAME:服务连接的名称。

删除已发布的服务

即使一项已发布服务的服务连接具有使用方连接,您也可以删除该服务。删除已发布的服务只会移除服务连接。关联的负载均衡器不会被删除,但消费者流量将不再发送到负载均衡器。

控制台

  1. 在 Google Cloud Console 中,转到 Private Service Connect 页面。

    转到 Private Service Connect

  2. 点击已发布服务标签页。

  3. 点击要删除的服务。

  4. 点击删除

gcloud

gcloud compute service-attachments delete \
    ATTACHMENT_NAME --region=REGION

API

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME

请替换以下内容:

  • PROJECT_ID:服务连接的项目。

  • REGION:该服务连接的区域。

  • ATTACHMENT_NAME:服务连接的名称。

日志记录

您可以在包含后端虚拟机的子网上启用 VPC 流日志。日志显示 Private Service Connect 子网中后端虚拟机与 IP 地址之间的流。

已知问题

  • 使用 PATCH API 更新服务连接时,您必须在请求正文中提供服务连接的所有字段,而不能仅提供要更新的字段。使用 serviceAttachments.get 可以检索所有字段。