通过端点访问区域性 Google API
本文档介绍如何使用 Private Service Connect 端点来连接到受支持的 Google API 的区域端点。
如需了解其他 Private Service Connect 配置,请参阅 Private Service Connect。
角色
如需获得创建区域 Private Service Connect 端点所需的权限,请让管理员在 VPC 网络上授予您以下 IAM 角色:
-
Compute Network Admin 角色 (
roles/compute.networkAdmin
) -
DNS Administrator 角色 (
roles/dns.admin
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
准备工作
Install the Google Cloud CLI, then initialize it by running the following command:
$ gcloud init
Enable the Compute Engine, Network Connectivity Center, Cloud DNS, and Service Directory APIs.
使用 Google Cloud 控制台中的 API 和服务页面,启用您想通过 Private Service Connect 端点访问的 Google API。Private Service Connect 不会自动启用任何 API。
确保出站流量防火墙规则允许流量流向该端点。VPC 网络的默认防火墙配置允许此流量,因为它包含隐含的允许出站流量规则。确认您未创建优先级更高的出站流量规则来阻止流量。
请阅读限制。
创建区域性 Private Service Connect 端点
您可以创建区域性 Private Service Connect 端点,以便向目标 Google API 的区域端点发送请求。
如需查看支持的区域端点列表,请参阅区域服务端点。
区域端点主机名有两种形式:
- 公共主机名:
SERVICE.REGION.rep.DOMAIN
专用主机名:
SERVICE.REGION.p.rep.DOMAIN
专用主机名在
REGION
和rep
之间添加一个p
子网域。
在配置目标 Google API 时,您需要指定专用形式的主机名,例如 spanner.me-central2.p.rep.googleapis.com
。创建端点后,使用相同的专用区域端点主机名为端点创建专用 DNS 记录。
虽然您可以使用任何名称配置 Private Service Connect 端点,但为了便于维护,我们建议使用目标 Google API 的服务名称,以使 DNS 名称与端点名称匹配。例如,如果端点的目标是 spanner.me-central2.p.rep.googleapis.com
,请使用 spanner
作为端点名称。
gcloud
使用 gcloud network-connectivity regional-endpoints create
命令。
gcloud network-connectivity regional-endpoints create ENDPOINT_NAME \ --region=REGION \ --network=NETWORK_URI \ --subnetwork=SUBNET_URI \ --target-google-api=REP_NAME
如果您想让其他区域的资源可以访问端点,请添加 --enable-global-access
标志。
替换以下内容:
ENDPOINT_NAME
:端点的名称。REGION
:要在其中创建端点的区域。NETWORK_URI
:端点的 VPC 网络的 URI:projects/PROJECT_ID/global/networks/NETWORK_NAME
。SUBNET_URI
:您要将端点连接到的子网的 URI:projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
。REP_NAME
:您要连接到的区域服务端点的名称。例如spanner.me-central2.p.rep.googleapis.com
。
列出端点
您可以列出所有已配置的端点。
控制台
在 Google Cloud 控制台中,转到 Private Service Connect 页面。
点击已连接的端点标签页。
系统会显示所有端点,包括具有区域端点目标的端点。
gcloud
使用 gcloud network-connectivity regional-endpoints list
命令。
gcloud network-connectivity regional-endpoints list \ --region=REGION
将 REGION
替换为您要列出的端点的区域。
验证端点是否正常运行
在配置了端点的 VPC 网络和区域中创建虚拟机 (VM) 实例。在虚拟机上运行以下命令,验证 Private Service Connect 端点是否正常工作。端点不会响应 ping (ICMP) 请求。
curl --connect-to SERVICE.REGION.p.rep.DOMAIN:443:ENDPOINT_IP:443 \ 'SERVICE.REGION.p.rep.DOMAIN/PATH'
替换以下内容:
SERVICE
:您的端点指向的服务。例如spanner
或logging
。REGION
:端点的区域。DOMAIN
:服务的网域。例如googleapis.com
。ENDPOINT_IP
:端点的 IP 地址。PATH
:此服务所提供的资源的路径。例如,许多服务提供路径为$discovery/rest?version=v1
的发现文档。
以下示例请求测试 IP 地址为 192.168.1.100
的端点是否可以从 me-central2
中的区域端点请求 Cloud Spanner API 发现文档。
curl --connect-to spanner.me-central2.p.rep.googleapis.com:443:192.168.1.100:443 \ 'https://spanner.me-central2.p.rep.googleapis.com/$discovery/rest?version=v1'
为端点创建专用 DNS 条目
您必须按照 SERVICE.REGION.p.rep.DOMAIN
格式为端点创建 DNS 条目。您可以使用 Cloud DNS 创建 DNS 条目。
创建专用 DNS 区域,其格式为:
REGION.p.rep.DOMAIN
。例如,如果要使用区域
me-central2
中googleapis.com
网域内的区域端点,请创建名为me-central2.p.rep.googleapis.com
的专用 DNS 区域。创建 DNS 记录,它指向分配给该端点的 IP 地址。主机名必须与服务名称
SERVICE
匹配。例如,spanner
或logging
是服务名称。
例如,如果端点配置了目标 spanner.me-central2.p.rep.googleapis.com
,您需要创建名为 me-central2.p.rep.googleapis.com
的专用 DNS 区域以及指向端点 IP 地址的名为 spanner
的记录。该端点的完全限定域名为 spanner.me-central2.p.rep.googleapis.com
。
将客户端配置为使用专用端点名称
您必须将客户端配置为使用专用 DNS 名称(而不是公共 DNS 名称)。如需了解如何将客户端配置为使用自定义端点,请参阅客户端或客户端库的文档。例如:
Python:您可以在客户端选项中配置
api_endpoint
。Go:您可以在 ClientOptions 中配置
WithEndpoint
。.NET:您可以在客户端的构建器类中配置
Endpoint
。gcloud:您可以在 gcloud CLI 中配置
api_endpoint_overrides
。
获取有关端点的详细信息
您可以查看端点的配置详细信息。
gcloud
使用 gcloud network-connectivity regional-endpoints describe
命令。
gcloud network-connectivity regional-endpoints describe \ ENDPOINT_NAME --region=REGION
替换以下内容:
ENDPOINT_NAME
:端点的名称。REGION
:端点的区域。
删除端点
您可以删除端点。
gcloud
使用 gcloud network-connectivity regional-endpoints delete
命令。
gcloud network-connectivity regional-endpoints delete \ ENDPOINT_NAME --region=REGION
替换以下内容:
ENDPOINT_NAME
:端点的名称。REGION
:端点的区域。
从混合网络访问端点
通过 Cloud Interconnect 的 VLAN 连接或 Cloud VPN 隧道与 Google Cloud 相连接的网络中的客户端可以访问 Private Service Connect 端点。VLAN 连接或 Cloud VPN 隧道必须在与端点相同的 VPC 网络(或共享 VPC 网络)中终结。对等互连的 VPC 网络中的客户端无法访问端点。
如果配置了全球访问权限,来自 VLAN 连接或 Cloud VPN 隧道的客户端流量可以到达另一个区域的端点。
对于 VLAN 连接,Dataplane v1 和 Dataplane v2 均受支持。如需详细了解 Dataplane 版本,请参阅 Dataplane v2。
您必须在其他网络中配置系统,以便它们可以对您的专用 DNS 区域进行查询。
如果使用 Cloud DNS 实现了专用 DNS 区域,请完成以下步骤:
在您的其他网络连接到的 VPC 网络中创建入站服务器政策。
在您的 VLAN 连接或 Cloud VPN 隧道所在的区域以及您的其他网络连接到的 VPC 网络中,确定入站转发器入口点。
在其他网络中配置系统和 DNS 域名服务器,将端点的 DNS 名称转发到与连接到 VPC 网络的 VLAN 连接或 Cloud VPN 隧道位于同一区域的入站转发器入口点。