本页介绍了如何设置专用网络访问并在 Google Cloud 网络中路由流量。
如需设置专用网络访问权限,您需要配置三个项目:
- 包含虚拟私有云 (VPC) 和目标虚拟机实例 (VM) 的项目。
- 用作 Service Directory 服务项目的项目。
- Google Cloud 产品的项目,其配置会调用专用网络访问权限。 Google Cloud 可以使用专用网络访问权限调用端点的产品示例是 Dialogflow CX。
项目的工件可以位于同一项目中,也可以位于不同项目中。
准备工作
在配置专用网络访问权限之前,请完成以下步骤:
对于每个项目,在 Google Cloud 控制台中,点击 API 和服务页面上的 启用 API 和服务,以启用您要使用的 API,包括 Service Directory API。
如需将 VPC 网络关联到本地主机,请创建 Cloud VPN 隧道或 Cloud Interconnect 连接。
确保 Google Cloud 项目位于
servicedirectory.googleapis.com
的网络项目和 Service Directory 项目的 VPC Service Controls 边界内。详细了解 VPC Service Controls。
为 VPC 网络配置项目
如需为 VPC 网络配置项目,请按以下步骤操作:
如果 VPC 网络的目标是 Compute Engine 虚拟机或内部负载平衡器后端,请配置 VPC 网络防火墙规则。创建防火墙规则,以允许从
35.199.192.0/19
在目标监听的端口上进行 TCP 入站流量。端口443
和80
是典型的端口,但您也可以使用任何端口。请注意,默认情况下,VPC 网络防火墙规则会阻止与 Compute Engine 虚拟机的入站连接。如需详细了解
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 命名空间
- 点击一个命名空间。
- 点击一项服务。
- 点击添加端点。
- 对于端点名称,请输入端点的名称。
- 在 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
:项目的 IDREGION
:包含命名空间的 Google Cloud 区域NAMESPACE_NAME
:您为命名空间指定的名称,例如my-namespace
SERVICE_ID
:服务的 IDIP_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
。创建虚拟机时,请输入或选择以下值:
- 对于 Networking > Network Interfaces,请选择
vpc-1
。 - 对于防火墙,选择允许 HTTP 流量。
如果您想使用 HTTPS,请选择允许 HTTPS 流量。此外,请确保您安装了公钥基础架构 (PKI) 传输层安全协议 (TLS) 证书。
- 对于 Networking > Network Interfaces,请选择
在
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
)进行。 - 可选:配置证书授权机构服务设置。
Google Cloud 产品现在可以使用 sd-1
调用 HTTP 请求。
当共享 VPC 网络、虚拟机和服务目录位于不同的项目中时,调用 HTTP 端点
在此用例中,您将设置 Dialogflow CX(一种自然语言处理 Google Cloud服务),以调用虚拟机上的 HTTP 端点。调用端点时,请确保流量不会通过公共互联网转移。
在此用例中,您将在不同的项目中创建以下工件:
- 共享 VPC 网络
- 虚拟机
- Service Directory 服务
- Dialogflow CX
在创建项目之前,请注意以下事项:
- 确保 API 调用遵循 VPC Service Controls 边界。
- 确保 Google Cloud 服务项目的配置允许出站到位于 VPC 网络项目中的虚拟机。
- 提供方项目可能与 Google Cloud 服务项目不同。
- 确保使用这两个项目的 VPC Service Controls 边界。
- 服务目录项目和网络项目无需关联,但必须属于同一 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
。创建虚拟机时,请输入或选择以下值:
- 对于 Networking > Network Interfaces,请选择
vpc-1
。 - 对于防火墙,选择允许 HTTP 流量。
如果您想使用 HTTPS,请选择允许 HTTPS 流量。此外,请确保您安装了公钥基础架构 (PKI) 传输层安全协议 (TLS) 证书。
- 对于 Networking > Network Interfaces,请选择
如果您使用的是 VPC Service Controls,则 VPC Service Controls 边界可让 Service Directory 同时连接到服务项目和 Service Directory 项目。 Google Cloud
配置 Service Directory 项目
创建项目,例如
my-sd-project
。您需要额外的 IAM 权限,因为 VPC 网络项目和服务目录项目是不同的项目。
在网络项目中,向创建 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 同时连接到服务项目和 Service Directory 项目。 Google Cloud
配置 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。
- 如需了解您在使用服务目录时可能会遇到的常见问题的解决方案,请参阅问题排查。