本页介绍了如何设置专用网络访问并在 Google Cloud 网络中路由流量。
如需设置专用网络访问权限,您需要配置三个项目:
- 包含目标虚拟机实例 (VM) 或目标内部负载均衡器要使用的虚拟私有云 (VPC) 网络的项目。
- 充当 Service Directory 服务项目的项目。
- Google Cloud 产品的项目,其中包含调用专用网络访问权限的配置。 Google Cloud 可以使用专用网络访问通道调用端点的产品示例是 Dialogflow CX。
项目的制品可以位于同一项目中,也可以位于不同项目中。
准备工作
在配置专用网络访问权限之前,请完成以下步骤:
- 对于每个项目,在 Google Cloud 控制台的 API 和服务页面中,点击 启用 API 和服务以启用您要使用的 API,包括 Service Directory API。 
- 如需将 VPC 网络与本地主机相关联,请创建 Cloud VPN 隧道或 Cloud Interconnect 连接。 
- 确保 Google Cloud 项目位于网络项目和 Service Directory 项目的 VPC Service Controls 边界内(针对 - servicedirectory.googleapis.com)。- 详细了解 VPC Service Controls。 
为 VPC 网络配置项目
如需为 VPC 网络配置项目,请按以下步骤操作:
- 创建 VPC 网络或选择现有的 VPC 网络,该网络在您要使用的区域中具有仅 IPv4 或双栈子网。 传统网络不受支持。 
- 创建必要的入站流量允许防火墙规则。 - 如果目标是虚拟机或内部直通式网络负载平衡器,防火墙规则必须允许从 - 35.199.192.0/19范围到目标虚拟机实例上运行的软件所用端口的 TCP 流量。
- 如果目标是内部应用负载均衡器或内部代理网络负载均衡器,防火墙规则必须允许从 - 35.199.192.0/19范围到负载均衡器所用 IP 地址和端口的 TCP 流量。
 - 如需详细了解 - 35.199.192.0/19范围,请参阅 Cloud DNS 和 Service Directory 的路径。
- 向将调用端点的 Google Cloud 产品的服务代理授予 Identity and Access Management (IAM) Private Service Connect 授权服务角色 ( - roles/servicedirectory.pscAuthorizedService)。- 如需详细了解角色和权限,请参阅Service Directory 权限和角色。 
配置 Service Directory 项目
如需配置 Service Directory 项目,请按以下步骤操作:
- 向将调用端点的Google Cloud 产品的服务代理授予 IAM Service Directory Viewer 角色 ( - roles/servicedirectory.viewer)。
- 创建 Service Directory 命名空间和服务。 然后,按照下一部分中的步骤为此服务创建端点。 
创建具有专用网络访问权限的端点
如需创建配置了专用网络访问权限的端点,请按以下步骤操作:
控制台
- 在 Google Cloud 控制台中,前往 Service Directory 命名空间页面。 前往 Service Directory 命名空间
- 点击命名空间。
- 点击一项服务。
- 点击添加端点。
- 对于端点名称,请输入端点的名称。
- 在 IP 地址字段中,输入一个 IPv4 地址,例如 192.0.2.0。
- 在端口字段中,输入端口号,例如 443或80。
- 如需启用专用网络访问权限,请在关联的 VPC 网络中选择所需选项:
- 如需从可用网络列表中进行选择,请点击从列表中选择,然后选择相应网络。
- 如需指定项目和网络,请点击按项目和网络名称指定,然后输入项目编号和网络名称。
 
- 点击创建。
gcloud
使用 gcloud service-directory endpoints create 命令,并指定项目 ID 和网络路径。
gcloud service-directory endpoints create ENDPOINT_NAME \ --project=PROJECT_ID \ --location=REGION \ --namespace=NAMESPACE_NAME \ --service=SERVICE_ID \ --address=IP_ADDRESS \ --port=PORT_NUMBER \ --network=NETWORK_PATH
替换以下内容:
- ENDPOINT_NAME:您要在服务中创建的端点的名称,例如- my-endpoint
- PROJECT_ID:项目的 ID
- REGION:包含命名空间的 Google Cloud 区域
- NAMESPACE_NAME:您为命名空间指定的名称,例如- my-namespace
- SERVICE_ID:服务的 ID
- IP_ADDRESS:端点的 IP 地址,例如- 192.0.2.0
- PORT_NUMBER:端点运行的端口,通常为- 443或- 80
- NETWORK_PATH:网络的网址,例如- projects/PROJECT_NUMBER/locations/global/networks/NETWORK_NAME
配置 Google Cloud 产品项目
如需配置 Google Cloud 产品项目,请按以下步骤操作:
- 配置您的 Google Cloud 产品以调用您创建的 Service Directory 服务。所需步骤取决于具体的Google Cloud 产品。 
使用场景
本部分提供了用于配置专用网络访问权限的示例使用情形。
当 VPC 网络、虚拟机和 Service Directory 位于同一项目中时,调用 HTTP 端点
在此使用情形中,您设置了 Dialogflow CX(一种用于自然语言处理的 Google Cloud 产品),以调用虚拟机上的 HTTP 端点。在调用端点时,请确保流量不会通过公共互联网传输。
在此使用情形中,您将在同一项目中创建以下制品:
- VPC 网络
- 虚拟机
- Service Directory 服务
- Dialogflow CX
图 1 显示了如何允许项目的 Google 服务配置出站到虚拟机。虚拟机位于项目的 VPC 网络中。
设置网络和目标网络
- 创建项目,例如 myproject。
- 创建 VPC 网络,例如 - vpc-1。- 创建 VPC 网络时,在子网创建模式中选择自动。 
- 创建防火墙规则,例如 - firewall-1。- 创建防火墙规则时,输入或选择以下值: - 对于网络,请选择 vpc-1。
- 对于来源 IPv4 范围,输入 35.199.192.0/19。
- 对于协议和端口,选择 TCP 并输入 443或80。
 
- 对于网络,请选择 
- 在 - us-central1区域中,创建虚拟机,例如- vm-1。- 创建虚拟机时,请输入或选择以下值: - 对于网络 > 网络接口,选择 vpc-1。
- 对于防火墙,选择允许 HTTP 流量。
 - 如果您想使用 HTTPS,请选择允许 HTTPS 流量。另请确保您安装了公钥基础架构 (PKI) 传输层安全协议 (TLS) 证书。 
- 对于网络 > 网络接口,选择 
- 在 - us-central1区域中,创建一个命名空间,例如- namespace-1。
- 在该命名空间中注册一个 Service Directory 服务,例如 - sd-1。
- 在 - sd-1中创建端点。对于端点地址,请使用端口- 443上- vm-1的内部 IP 地址。如需了解详情,请参阅创建具有专用网络访问权限的端点。
- 向将调用端点的Google Cloud 产品的服务代理授予以下 IAM 角色: - Service Directory Viewer 角色 (roles/servicedirectory.viewer)
- Private Service Connect Authorized Service 角色 (roles/servicedirectory.pscAuthorizedService)
 
- Service Directory Viewer 角色 (
- 可选:如果您想添加更多虚拟机,可以设置另一个虚拟机(例如 - vm-2),并添加其端点(例如- endpoint-2)。
设置 Google Cloud 商品
- 配置 Google Cloud 产品配置,例如“Cloud Scheduler,每分钟给我打电话”。
- 设置 HTTP 请求。
- 指定请求应通过专用网络(例如通过 sd-1)发送。
- 可选:配置 Certificate Authority Service 设置。
现在, Google Cloud 产品可以使用 sd-1 调用 HTTP 请求。
当共享 VPC 网络、虚拟机和 Service Directory 位于不同项目中时,调用 HTTP 端点
在此使用情形中,您设置了 Dialogflow CX(一种自然语言处理服务),以调用虚拟机上的 HTTP 端点。 Google Cloud 在调用端点时,请确保流量不会通过公共互联网传输。
在此使用情形中,您将在不同项目中创建以下制品:
- 共享 VPC 网络
- 虚拟机
- Service Directory 服务
- Dialogflow CX
在创建项目之前,请注意以下事项:
- 确保 API 调用遵守 VPC Service Controls 边界。
- 确保 Google Cloud 服务项目的配置允许出站流量流向 VPC 网络项目中的虚拟机。
- 提供方项目可能与 Google Cloud 服务项目不同。
- 确保使用这两个项目的 VPC Service Controls 边界。
- Service Directory 项目和网络项目无需关联,但必须都属于同一 VPC Service Controls。
- 在网络和服务中,防火墙和 IAM 默认处于停用状态。
图 2 展示了如何在强制执行 VPC Service Controls 边界的情况下,通过专用网络访问通道发送流量。
配置网络项目
- 创建项目,例如 my-vpc-project。
- 创建 VPC 网络,例如 - vpc-1。- 创建 VPC 网络时,为子网创建模式选择自动。 
- 创建防火墙规则,例如 - firewall-1。- 创建规则时,请输入或选择以下值: - 对于网络,请选择 vpc-1。
- 对于来源 IPv4 范围,输入 35.199.192.0/19。
- 对于协议和端口,选择 TCP 并输入 443或80。
 
- 对于网络,请选择 
- 在 - us-central1区域中,创建虚拟机,例如- vm-1。- 创建虚拟机时,请输入或选择以下值: - 对于网络 > 网络接口,选择 vpc-1。
- 对于防火墙,选择允许 HTTP 流量。
 - 如果您想使用 HTTPS,请选择允许 HTTPS 流量。另请确保您安装了公钥基础架构 (PKI) 传输层安全协议 (TLS) 证书。 
- 对于网络 > 网络接口,选择 
如果您使用的是 VPC Service Controls,则 VPC Service Controls 边界可让 Service Directory 连接到 Google Cloud 服务项目和 Service Directory 项目。
配置 Service Directory 项目
- 创建项目,例如 - my-sd-project。
- 由于 VPC 网络项目和 Service Directory 项目是不同的项目,因此您需要额外的 IAM 权限。 - 在网络项目中,向创建 Service Directory 端点的 IAM 主账号授予 Service Directory Network Attacher 角色 ( - roles/servicedirectory.networkAttacher)。
- 创建指向 VPC 网络中虚拟机的 Service Directory 端点: - 在 us-central1区域中,创建一个命名空间,例如namespace-1。
- 在该命名空间中注册一个 Service Directory 服务,例如 sd-1。
- 在 sd-1中创建端点。对于端点地址,请使用端口443上vm-1的内部 IP 地址。如需了解详情,请参阅创建具有专用网络访问权限的端点。
 
- 在 
- 向将调用端点的Google Cloud 产品的服务代理授予以下 IAM 角色: - Service Directory 项目中的 Service Directory Viewer 角色 (roles/servicedirectory.viewer)
- 网络项目中的 Private Service Connect Authorized Service 角色 (roles/servicedirectory.pscAuthorizedService)
 
- Service Directory 项目中的 Service Directory Viewer 角色 (
如果您使用的是 VPC Service Controls,则 VPC Service Controls 边界可让 Service Directory 连接到 Google Cloud 服务项目和 Service Directory 项目。
配置 Google Cloud 服务项目
- 为您使用的 Google Cloud 服务启用 API。
- 如需配置 Google Cloud 服务 PUSH,请使用 Service Directory 项目中的 Service Directory 服务。
如果您使用 VPC Service Controls,VPC Service Controls 边界可让 Service Directory 同时连接到网络项目和 Service Directory 项目。
将 Service Directory 专用网络访问权限与 Dialogflow 搭配使用
如需了解如何将 Service Directory 专用网络访问与 Dialogflow 搭配使用,请参阅使用 Service Directory 进行专用网络访问。
后续步骤
- 如需简要了解 Service Directory,请参阅 Service Directory 概览。
- 如需详细了解 Private Service Connect,请参阅 Private Service Connect。
- 如需了解您在使用 Service Directory 时可能会遇到的常见问题的解决方案,请参阅问题排查。