使用 Private Service Connect 发布服务

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

本指南介绍如何使用 Private Service Connect 发布服务。如需发布服务,请执行以下操作:

Private Service Connect 提供了两种连接到已发布服务的方法:

这些端点类型需要的提供方配置略有不同。如需了解详情,请参阅功能和兼容性

角色

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

准备工作

  • 如需了解如何发布服务(包括限制),请参阅已发布服务简介

  • 确定应允许从所有项目访问该服务,还是要控制哪些项目可以访问您的服务

  • 确定您希望此服务支持端点还是后端,或者都支持。如需详细了解端点和后端,请参阅 Private Service Connect 类型

    如需详细了解服务配置要求,请参阅功能和兼容性

  • 确定您是否要为服务配置域名,以便自动为服务使用方端点配置 DNS。如果您配置了域名,则发布服务的同一 IAM 主账号必须在 Google Search Console 中验证自己是否拥有该网域的 Owner 权限。如果您配置了域名,但不拥有该网域,则服务发布将失败。如需验证所有权,请前往 Google Search Console

    您在服务连接中指定的域名可以是您验证的网域的子网域。例如,您可以验证 example.com,然后使用域名 us-west1.p.example.com 创建服务连接。

创建受支持的负载均衡器

如需托管服务,请在服务提供方 VPC 网络中创建以下负载均衡器之一:

如需了解每种负载均衡器类型支持的配置,请参阅功能和兼容性

您可以将每个服务连接与单个负载均衡器的转发规则相关联。您不能将多个服务连接与同一转发规则相关联。

负载均衡器的转发规则的 IP 版本(IPv4 或 IPv6)会影响哪些使用方可以连接到已发布的服务。 如需了解详情,请参阅IP 版本转换

对于区域级内部代理网络负载均衡器,后端可以位于 Google Cloud、其他云、本地环境或这些位置的任意组合中。

您还可以发布在 Google Kubernetes Engine 上的内部直通式网络负载均衡器上托管的服务。GKE 文档中的使用 Private Service Connect 创建内部直通式网络负载均衡器中介绍了此配置,包括负载均衡器和服务连接配置。

为 Private Service Connect 创建子网

创建一个或多个专用子网,以配合 Private Service Connect 使用。如果您使用 Google Cloud 控制台发布服务,则可以在此过程中创建子网。

如果您需要为现有服务提供更多 IP 地址,请参阅为已发布的服务添加或移除子网

您还可以在共享 VPC 宿主项目中创建 Private Service Connect 子网。

在服务的负载均衡器所在的区域中创建子网。

您无法将常规子网转换为 Private Service Connect 子网。

如果您要发布用于提供 IPv6 流量的服务,则必须使用双栈子网。

控制台

  1. 在 Google Cloud 控制台中,进入 VPC 网络页面。

    进入 VPC 网络页面

  2. 点击某个 VPC 网络的名称以显示其 VPC 网络详情页面。

  3. 点击子网

  4. 点击添加子网。在显示的面板中,执行以下操作:

    1. 提供名称
    2. 选择区域
    3. 用途部分中,选择 Private Service Connect
    4. 选择 IP 栈类型
    5. 输入 IPv4 范围。例如 10.10.10.0/24
    6. 点击添加

gcloud

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

请替换以下内容:

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

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

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

  • STACK_TYPE:子网的栈类型,可以是 IPV4_ONLYIPV4_IPV6。默认值为 IPV4_ONLY

  • SUBNET_RANGE:要用于子网的 IPv4 地址范围,例如 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",
  "stackType": "STACK_TYPE"
}

请替换以下内容:

  • PROJECT_ID:用于子网的项目。

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

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

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

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

  • STACK_TYPE:子网的栈类型,可以是 IPV4_ONLYIPV4_IPV6

配置防火墙规则

将防火墙规则配置为允许端点或后端与服务连接之间的流量。客户端请求源自不同的位置,具体取决于 Private Service Connect 类型。

Private Service Connect 类型 客户端流量的 IP 地址范围 详细信息
端点(基于转发规则) 与此服务关联的 Private Service Connect 子网的 IP 地址范围。 如果您使用的是默认网络,则预先填充的 default-allow-internal 规则允许此流量,除非有优先级较高的规则阻止它。
后端(基于全球外部应用负载均衡器)
  • 130.211.0.0/22
  • 35.191.0.0/16
全球外部应用负载均衡器在 Google Front End (GFE) 前端上实现,这些前端使用这些 IP 地址范围。

如果您的防火墙配置尚未允许来自相应端点类型的流量,请将防火墙规则配置为允许它。

以下示例配置允许您创建 VPC 防火墙规则,以允许从客户端 IP 地址范围到提供方服务负载均衡器中的后端虚拟机的流量。此配置假设后端虚拟机已配置网络标记

入站规则示例:

gcloud compute firewall-rules create NAME \
    --network=NETWORK_NAME \
    --direction=ingress \
    --action=allow \
    --target-tags=TAG \
    --source-ranges=CLIENT_IP_RANGES_LIST \
    --rules=RULES_LIST

替换以下内容:

  • NAME:防火墙规则的名称。

  • NETWORK_NAME:包含服务和 Private Service Connect 子网的网络。

  • TAG:应用于提供方服务负载均衡器中的后端虚拟机的目标标记。

  • CLIENT_IP_RANGES_LIST:客户端流量源自的 IP 地址范围。如需了解详情,请参阅上表。

  • RULES_LIST:规则适用的协议和目标端口的逗号分隔列表。例如 tcp,udp

出站规则示例:

gcloud compute firewall-rules create NAME \
    --network=NETWORK_NAME \
    --direction=egress \
    --action=allow \
    --target-tags=TAG \
    --destination-ranges=CLIENT_IP_RANGES_LIST \
    --rules=RULES_LIST

替换以下内容:

  • NAME:防火墙规则的名称。

  • NETWORK_NAME:包含服务和 Private Service Connect 子网的网络。

  • TAG:应用于提供方服务负载均衡器中的后端虚拟机的目标标记。

  • CLIENT_IP_RANGES_LIST:客户端流量源自的 IP 地址范围。如需了解详情,请参阅上表。

  • RULES_LIST:规则适用的协议和目标端口的逗号分隔列表。例如 tcp,udp

如需详细了解如何配置 VPC 防火墙规则,请参阅 VPC 防火墙规则。如需配置分层防火墙规则以允许此流量,请参阅分层防火墙政策

发布服务

要发布服务,您需要创建服务连接。您可以通过以下两种方式之一来提供服务:

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

每个服务连接可以指向一个或多个 Private Service Connect 子网,但一个 Private Service Connect 子网不能用于多个服务连接。

通过自动批准发布服务

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

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

若要查看使用方连接信息,您可以在受支持的服务上启用 PROXY 协议。如需了解支持的服务,请参阅功能和兼容性。如需详细了解 PROXY 协议,请参阅使用方连接信息

您可以将单栈和双栈子网与同一服务连接相关联。如果您的负载均衡器配置了 IPv6 流量,则必须使用双栈子网。

当您发布使用自动批准的服务时,传播连接数限制适用于每个连接到服务连接的使用方项目。

控制台

  1. 在 Google Cloud 控制台中,转到 Private Service Connect 页面。

    转到 Private Service Connect

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

  3. 点击发布服务

  4. 为要发布的服务选择负载均衡器类型

    • 内部直通式网络负载均衡器
    • 区域级内部代理网络负载均衡器
    • 区域级内部应用负载均衡器
  5. 选择托管您要发布的服务的内部负载均衡器。 “网络”和“区域”字段会填充所选内部负载均衡器的详细信息。

    Service Project Admin 可以选择具有来自共享 VPC 网络的 IP 地址的内部负载均衡器。如需了解详情,请参阅共享 VPC

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

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

  8. 为服务选择一个或多个 Private Service Connect 子网。相关列表会填充来自所选内部负载均衡器的 VPC 网络的子网,包括通过共享 VPC 与服务项目共享的子网。

    如果您的服务连接使用具有来自共享 VPC 网络的 IP 地址的内部负载均衡器,您必须选择来自同一共享 VPC 网络的共享子网。

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

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

  10. 选择自动接受所有连接

  11. 如果您想停用连接协调,请清除启用连接协调复选框。

  12. 可选:点击高级配置,然后执行以下操作:

    1. 如果要配置域名,请输入域名(包括结尾句点)。

      建议的域名格式为 REGION.p.DOMAIN.

      您必须拥有域名。如需了解详情,请参阅 DNS 配置

    2. 输入 NCC 传播连接数限制。如果未指定,则默认值为 250

  13. 点击添加服务

gcloud

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

替换以下内容:

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

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

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

    Service Project Admin 可以指定具有来自共享 VPC 网络的 IP 地址的内部负载均衡器的转发规则。如需了解详情,请参阅共享 VPC

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

    如果您要使用具有来自共享 VPC 网络的 IP 地址的转发规则创建服务连接,请使用来自同一共享 VPC 网络的共享子网。对于每个共享子网,请指定完整的资源 URI,例如 --nat-subnets=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET

  • PROPAGATED_CONNECTION_LIMIT:每个项目的传播连接限制。默认值为 250

  • DOMAIN_NAME:服务的 DNS 域名,包括结尾句点。建议的格式:REGION.p.DOMAIN.

    如需了解详情,请参阅 DNS 配置

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"
  ],
  "propagatedConnectionLimit": "PROPAGATED_CONNECTION_LIMIT",
  "domainNames": [
    "DOMAIN_NAME"
  ]
}

请替换以下内容:

  • PROJECT_ID:服务连接的项目。

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

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

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

    Service Project Admin 可以指定具有来自共享 VPC 网络的 IP 地址的内部负载均衡器的转发规则。如需了解详情,请参阅共享 VPC

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

    如果您要使用具有来自共享 VPC 网络的 IP 地址的转发规则创建服务连接,请使用来自同一共享 VPC 网络的共享子网。

  • DOMAIN_NAME:服务的 DNS 域名,包括结尾句点。建议的格式:REGION.p.DOMAIN.

    如需了解详情,请参阅 DNS 配置

  • PROPAGATED_CONNECTION_LIMIT:每个项目的传播连接限制。默认值为 250

通过明确批准发布服务

如果您希望使用方在连接到服务之前先明确批准使用方,请按照以下说明发布该服务。如果要自动批准使用方连接,请参阅发布使用自动批准的服务

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

每个服务连接都有一个使用方接受列表和一个使用方拒绝列表,用于确定哪些端点可以连接到服务。给定的服务连接可以使用这些列表中的项目或网络,但不能同时使用这两者。不支持按文件夹指定使用方。

如果您要从根据项目接受使用方更改为根据网络接受使用方,或反之,请执行以下操作:

  • 在一次操作中替换所有已批准的项目或网络。
  • 如果您需要提供与之前相同的访问权限,请确保新的接受和拒绝列表与之前的接受和拒绝列表等效。

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

如果您的使用方接受列表和拒绝列表引用的是项目,则传播的连接限制会应用于使用方项目。如果您的使用方接受和拒绝列表引用了 VPC 网络,则传播的连接限制会应用于使用方 VPC 网络。

控制台

  1. 在 Google Cloud 控制台中,转到 Private Service Connect 页面。

    转到 Private Service Connect

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

  3. 点击发布服务

  4. 为要发布的服务选择负载均衡器类型

    • 内部直通式网络负载均衡器
    • 区域级内部代理网络负载均衡器
    • 区域级内部应用负载均衡器
  5. 选择托管您要发布的服务的内部负载均衡器。 “网络”和“区域”字段会填充所选内部负载均衡器的详细信息。

    Service Project Admin 可以选择具有来自共享 VPC 网络的 IP 地址的内部负载均衡器。如需了解详情,请参阅共享 VPC

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

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

  8. 为服务选择一个或多个 Private Service Connect 子网。相关列表会填充来自所选内部负载均衡器的 VPC 网络的子网,包括通过共享 VPC 与服务项目共享的子网。

    如果您的服务连接使用具有来自共享 VPC 网络的 IP 地址的内部负载均衡器,您必须选择来自同一共享 VPC 网络的共享子网。

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

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

  10. 如果您要接受选定项目的连接,请选择接受选定项目的连接

    1. 对于您要接受其连接的每个项目,请执行以下操作:
      1. 点击添加接受的项目,然后输入以下内容:
        • 您要接受其连接的项目的 ID 或编号。
        • 连接限制,用于指定“指定项目”中可以连接的端点数上限。
    2. 可选:对于您要明确拒绝其连接的每个项目,请点击添加被拒绝的项目,然后输入项目 ID 或项目编号。
  11. 如果您要接受选定网络的连接,请选择接受选定网络的连接

    1. 对于您要接受其连接的每个网络,请执行以下操作:
      1. 点击添加接受的网络,然后输入以下内容:
        • 需要接受其连接的网络父项目的 ID 或编号。
        • 您要接受其连接的网络的名称。
        • 连接限制,用于指定“指定网络”中可以连接的端点数上限。
    2. 可选:对于要明确拒绝其连接的每个网络,请点击添加被拒绝的网络,然后输入网络父项目的 ID 或编号和网络名称。
  12. 如果您想停用连接协调,请清除启用连接协调复选框。

  13. 可选:点击高级配置,然后执行以下操作:

    1. 如果要配置域名,请输入域名(包括结尾句点)。

      建议的域名格式为 REGION.p.DOMAIN.

      您必须拥有域名。如需了解详情,请参阅 DNS 配置

    2. 输入 NCC 传播连接数限制。如果未指定,则默认值为 250

  14. 点击添加服务

gcloud

gcloud compute service-attachments create ATTACHMENT_NAME \
    --region=REGION \
    --producer-forwarding-rule=RULE_NAME \
    --connection-preference=ACCEPT_MANUAL \
    --consumer-accept-list=ACCEPTED_PROJECT_OR_NETWORK_1=LIMIT_1,ACCEPTED_PROJECT_OR_NETWORK_2=LIMIT_2 \
    --consumer-reject-list=REJECTED_PROJECT_OR_NETWORK_1,REJECTED_PROJECT_OR_NETWORK_2 \
    --nat-subnets=PSC_SUBNET_LIST \
    [ --propagated-connection-limit=PROPAGATED_CONNECTION_LIMIT ] \
    [ --enable-proxy-protocol ] \
    [ --domain-names=DOMAIN_NAME ] \
    [ --reconcile-connections ]

替换以下内容:

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

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

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

    Service Project Admin 可以指定具有来自共享 VPC 网络的 IP 地址的内部负载均衡器的转发规则。如需了解详情,请参阅共享 VPC

  • ACCEPTED_PROJECT_OR_NETWORK_1ACCEPTED_PROJECT_OR_NETWORK_2:要接受的项目 ID、项目名称或网络 URI。--consumer-accept-list 是可选项,可以包含一个或多个项目或网络,但不能同时包含这两种类型。

  • LIMIT_1LIMIT_2:项目或网络的连接限制。连接限制是指可以连接到服务的使用方端点或后端的数量。每个接受的项目或网络都必须配置有一个连接限制。

  • REJECTED_PROJECT_OR_NETWORK_1REJECTED_PROJECT_OR_NETWORK_2:要拒绝的项目 ID、项目名称或网络 URI。--consumer-reject-list 是可选项,可以包含一个或多个项目或网络,但不能同时包含这两种类型。

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

    如果您要使用具有来自共享 VPC 网络的 IP 地址的转发规则创建服务连接,请使用来自同一共享 VPC 网络的共享子网。对于每个共享子网,请指定完整的资源 URI,例如 --nat-subnets=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET

  • PROPAGATED_CONNECTION_LIMIT传播的连接限制。默认值为 250

  • DOMAIN_NAME:服务的 DNS 域名,包括结尾句点。建议的格式:REGION.p.DOMAIN.

    如需了解详情,请参阅 DNS 配置

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"
      ],
      "consumerRejectLists": [
        "REJECTED_PROJECT_1",
        "REJECTED_PROJECT_2"
      ],
      "consumerAcceptLists": [
        {
          "projectIdOrNum": "ACCEPTED_PROJECT_1",
          "connectionLimit": "LIMIT_1"
        },
        {
          "projectIdOrNum": "ACCEPTED_PROJECT_2",
          "connectionLimit": "LIMIT_2"
        }
      ],
      "propagatedConnectionLimit": "PROPAGATED_CONNECTION_LIMIT",
      "domainNames": [
        "DOMAIN_NAME"
      ]
    }
    

    替换以下内容:

    • PROJECT_ID:服务连接的项目。

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

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

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

      Service Project Admin 可以指定具有来自共享 VPC 网络的 IP 地址的内部负载均衡器的转发规则。如需了解详情,请参阅共享 VPC

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

      如果您要使用具有来自共享 VPC 网络的 IP 地址的转发规则创建服务连接,请使用来自同一共享 VPC 网络的共享子网。

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

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

    • LIMIT_1LIMIT_2:相应项目的连接限制。连接限制是指可以连接到服务的使用方端点或后端的数量。所接受的项目都必须配置有一个连接限制。

    • DOMAIN_NAME:服务的 DNS 域名,包括结尾句点。建议的格式:REGION.p.DOMAIN.。如需了解详情,请参阅 DNS 配置
  • 如需发布服务并根据 VPC 网络明确批准使用方,请发送以下请求:

    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"
      ],
      "consumerRejectLists": [
        "projects/REJECTED_PROJECT_ID_1/global/networks/REJECTED_NETWORK_1",
        "projects/REJECTED_PROJECT_ID_2/global/networks/REJECTED_NETWORK_2"
      ],
      "consumerAcceptLists": [
        {
          "networkUrl": "projects/ACCEPTED_PROJECT_ID_1/global/networks/ACCEPTED_NETWORK_1",
          "connectionLimit": "LIMIT_1"
        },
        {
          "networkUrl": "projects/ACCEPTED_PROJECT_ID_2/global/networks/ACCEPTED_NETWORK_2",
          "connectionLimit": "LIMIT_2"
        }
      ],
      "propagatedConnectionLimit": PROPAGATED_CONNECTION_LIMIT,
      "domainNames": [
        "DOMAIN_NAME"
      ]
    }
    

    替换以下内容:

    • REJECTED_PROJECT_ID_1REJECTED_PROJECT_ID_2:您要拒绝的网络的父级项目的 ID。 consumerRejectLists 是可选项,可以包含一个或多个网络。
    • REJECTED_NETWORK_1REJECTED_NETWORK_2:您要拒绝的网络的名称。
    • ACCEPTED_PROJECT_ID_1ACCEPTED_PROJECT_ID_2:您要接受的网络的父级项目的 ID。 consumerAcceptLists 是可选项,可以包含一个或多个网络。
    • ACCEPTED_NETWORK_1ACCEPTED_NETWORK_2:您要接受的网络的名称。
    • LIMIT_1LIMIT_2:网络的连接限制。连接限制是指可以连接到服务的使用方端点或后端的数量。所接受的项目都必须配置有一个连接限制。
    • DOMAIN_NAME:服务的 DNS 域名,包括结尾句点。建议采用的格式:REGION.p.DOMAIN. 如需了解详情,请参阅 DNS 配置
  • 如需发布启用了连接协调的服务,请发送与上述请求类似的请求,但需要添加以下字段:

    {
      ...
      "reconcileConnections": true
      ...
    }
    

查看使用方连接信息

如需了解如何使用 PROXY 协议查看使用方连接信息,请参阅查看使用方连接信息

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

如果您已通过明确批准发布服务,则可以接受或拒绝来自使用方项目或网络的连接请求。如需了解详情,请参阅管理对已发布服务的访问请求

对于已发布服务,您还可以在自动接受项目与显式接受项目之间切换。如需了解详情,请参阅更改已发布服务的连接偏好设置

为已发布的服务添加子网或从中移除子网

您可以向已发布的服务添加子网或从已发布的服务移除子网。如需了解详情,请参阅向已发布的服务添加子网或从已发布的服务移除子网

列出已发布的服务

您可以列出所有服务。

控制台

  1. 在 Google Cloud 控制台中,转到 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:服务连接的名称。

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

您可以查看已发布服务的配置详细信息。 您可以在 Google Cloud 控制台中查看一些配置详细信息,例如服务使用方连接到服务所需的服务连接 URI。如需查看包括服务连接使用方的 pscConnectionId 值在内的所有详细信息,请使用 Google Cloud CLI 或 API。

控制台

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

  1. 在 Google Cloud 控制台中,转到 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 控制台中,转到 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:服务连接的名称。

已知问题

升级适用于 Terraform 的 Google 提供程序后断开连接

如果您使用的是 4.76.0 版之前的适用于 Terraform 的 Google 提供程序来创建服务连接,请勿升级到 4.76.0 版至 4.81.x 版。升级到 4.76.0 版至 4.81.x 版后运行 terraform apply 时,Terraform 可能会无意中删除并重新创建服务连接,并关闭现有的 Private Service Connect 连接。重新创建的服务连接不会自动重新建立 Private Service Connect 连接。

如果您升级到 4.82.0 版,然后运行 terraform apply,则服务连接不会被删除,但协调连接设置设为 true。如果此设置之前设为 false,则某些 Private Service Connect 连接可能会关闭。

  • 升级到 Google 提供程序 4.76.0 版至 4.81.x 版。在这种情况下,terraform plan 的输出包含以下内容:

    -/+ resource "google_compute_service_attachment" "SERVICE_NAME" {
      ...
            ~ reconcile_connections = false -> true # forces replacement
      ...
    

    使用解决方法来防止此问题。

  • 升级到 Google 提供程序 4.82.0 版。在这种情况下,terraform plan 的输出包含以下内容:

    ~ reconcile_connections = false -> true
    

    如果您忽略此警告并应用更改,Terraform 会更新服务连接以启用连接协调。根据连接状态,从 false 更改为 true 可能会关闭某些现有连接。如需了解详情,请参阅连接协调

    使用解决方法来防止此问题。

临时解决方法

我们建议您将 Terraform 的 Google 提供方升级到 4.82.0 版或更高版本。此版本可防止意外删除并重新创建服务连接。

如果您无法立即升级,或者如果您可以升级,但还想要阻止 Terraform 更改连接协调设置,请更新您的 Terraform 配置以明确设定连接协调设置。

  1. 查看服务连接的详细配置,并注意 reconcileConnections 设置。

    $ gcloud compute service-attachments describe SERVICE_NAME --region=REGION
    

    输出包含 reconcileConnections 字段,该字段可以是 true 或 false。

    reconcileConnections: false
    
  2. 更新您的 Terraform 配置文件,以明确使用服务连接所使用的相同设置。

    resource "google_compute_service_attachment" "SERVICE_NAME" {
      ...
      reconcile_connections    = false
    }
    

    如需查看示例配置,请参阅 GitHub 上的服务连接的协调连接

服务连接的补丁更新

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

问题排查

更新服务连接时出错

如果您在更新服务连接时看到以下错误消息,则表示接受列表或拒绝列表可能包含已删除的项目:The resource PROJECT was not found

请从服务连接配置中移除已删除的项目以解决此问题。

  1. 使用 gcloud compute service-attachments describe 命令显示您要修改的服务连接的配置。

    • 如需以稍后可用于更新服务连接的格式输出接受列表,请执行以下操作:

      gcloud compute service-attachments describe ATTACHMENT_NAME \
        --region=REGION --flatten="consumerAcceptLists[]" \
        --format="csv[no-heading,separator='='](consumerAcceptLists.projectIdOrNum,consumerAcceptLists.connectionLimit)" \
        | xargs | sed -e 's/ /,/g'
      

      接受列表输出类似于以下内容:

      PROJECT_1=LIMIT_1,PROJECT_2=LIMIT_2,PROJECT_3=LIMIT_3
      
    • 如需以稍后可用于更新服务连接的格式输出拒绝列表,请执行以下操作:

      gcloud compute service-attachments describe ATTACHMENT_NAME \
        --region=REGION \
        --format="value[delimiter=','](consumerRejectLists[])"
      

      拒绝列表输出类似于以下内容:

      PROJECT_1,PROJECT_2,PROJECT_3
      
  2. 修改命令输出以从接受列表和拒绝列表中移除任何已删除的项目。

  3. 更新服务连接以移除已删除的项目。

    • 如需更新接受列表,请执行以下操作:

      gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --consumer-accept-list=UPDATED_ACCEPT_LIST
      
    • 如需更新拒绝列表,请执行以下操作:

      gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --consumer-reject-list=UPDATED_REJECT_LIST
      

未建立连接

如果使用方创建了引用您的服务连接的端点或后端,但未建立连接,请检查服务连接的连接状态。连接状态可能表示您可以解决该问题的步骤。

使用方连接超时

如果使用方连接超时,请检查您的服务是否需要长时间运行的连接。Private Service Connect NAT 的 TCP 既定连接空闲超时为 20 分钟。如果您的服务需要更长的超时时间,您可能需要进行一些配置更改,以帮助确保连接不会超时。如需了解详情,请参阅 NAT 规范

未建立传播的连接

如需了解如何对传播的连接进行问题排查,请参阅排查 Network Connectivity Center 问题