本教程介绍如何以 服务使用方 身份创建 Private Service Connect 端点 来访问已发布的服务。当您向端点发送请求时,Private Service Connect 会将这些请求转发给已发布的服务。
本教程面向云架构师、网络架构师、网络管理员和 IT 管理员。
目标
- 为服务使用方资源配置网络
- 创建端点
- 测试访问端点
费用
在本文档中,您将使用的以下收费组件: Google Cloud
您可使用 价格计算器 根据您的预计使用情况来估算费用。
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
准备工作
- 完成本系列中的前两个教程:
- 创建负载均衡服务。
- 使 服务可从其他 VPC 网络访问。您需要 服务连接 ID 才能完成本教程。
- 创建或选择一个项目以用于服务使用方资源。
此项目称为
CONSUMER_PROJECT -
在 Google Cloud 控制台中,前往项目选择器页面。
-
选择或创建 Google Cloud 项目。
选择或创建项目所需角色
- 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
-
创建项目:如需创建项目,您需要 Project Creator 角色
(
roles/resourcemanager.projectCreator),该角色包含resourcemanager.projects.create权限。了解如何授予 角色。
启用 Compute Engine API。
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您 创建了项目,则可能已通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。 了解如何授予角色。-
确保您在项目中拥有以下一个或多个角色: Compute Engine > Compute Network Admin、Compute Engine > Compute Instance Admin
检查角色
-
在 Google Cloud 控制台中,前往 IAM 页面。
转到 IAM - 选择项目。
-
在主账号 列中,找到标识您或您所属群组的所有行。如需了解您属于哪些群组,请与您的 管理员联系。
- 对于指定或包含您的所有行,请检查角色 列,以查看角色列表是否包含所需角色。
授予角色
-
在 Google Cloud 控制台中,前往 IAM 页面。
转到 IAM - 选择项目。
- 点击 授予访问权限。
-
在新的主账号 字段中,输入您的用户标识符。 这通常是员工身份池中的用户的标识符。如需了解详情, 请参阅 在 IAM 政策中表示员工池用户,或与您的管理员联系。
- 点击选择角色,然后搜索相应角色。
- 如需授予其他角色,请点击 添加其他角色 ,然后添加其他各个角色。
- 点击 Save (保存)。
-
配置网络
以下部分介绍了如何创建网络和子网来托管端点,以及如何创建防火墙规则以允许通过 SSH 访问用于测试端点的客户端虚拟机。
创建网络和子网
如需创建服务使用方网络和子网,请按照以下步骤操作。
控制台
在 Google Cloud 控制台中,前往 VPC 网络页面。
点击创建 VPC 网络。
对于名称,输入
consumer-network。对于子网创建模式 ,选择自定义 。
在新建子网 部分,输入以下信息。
- 对于名称,输入
consumer-subnet。 - 对于区域,选择与您 创建的已发布服务相同的区域。
- 对于 IP 栈类型 ,选择 IPv4(单栈) 。
- 对于 IPv4 范围,输入
192.168.10.0/24。 - 点击完成 。
- 对于名称,输入
点击创建。
gcloud
创建一个自定义模式 VPC 网络:
gcloud compute networks create consumer-network --subnet-mode=custom
在
consumer-network网络中,创建一个子网。gcloud compute networks subnets create consumer-subnet \ --network=consumer-network \ --range=192.168.10.0/24 \ --region=REGION将
REGION替换为您创建的已发布服务所在的区域。
配置防火墙规则
创建一个名为 fw-allow-ssh 的防火墙规则,以允许来自
0.0.0.0/0 的 SSH 流量到达具有 allow-ssh 网络标记的虚拟机。
控制台
在 Google Cloud 控制台中,前往 防火墙政策 页面。
如需允许传入 SSH 连接,请点击创建防火墙规则 ,然后使用以下设置:
- 对于名称 ,输入
fw-allow-ssh。 - 对于网络,选择
consumer-network。 - 在优先级 字段中,输入
1000。 - 对于流量方向,选择入站。
- 对于对匹配项执行的操作 ,选择允许 。
- 对于目标 ,选择 Specified target tags 。
- 对于目标标记,输入
allow-ssh。 - 对于来源过滤条件,选择IPv4 范围。
- 对于来源 IPv4 范围,输入
0.0.0.0/0。 - 对于协议和端口,选择 Specified protocols and ports,
然后选中 TCP 复选框。对于端口,输入
22。
- 对于名称 ,输入
点击创建 。
gcloud
创建
fw-allow-ssh防火墙规则,以允许通过 SSH 连接到 网络标记为allow-ssh的虚拟机。gcloud compute firewall-rules create fw-allow-ssh \ --network=consumer-network \ --action=allow \ --direction=ingress \ --source-ranges=0.0.0.0/0 \ --target-tags=allow-ssh \ --rules=tcp:22
创建端点
创建一个指向您创建的已发布服务的端点。
控制台
在 Google Cloud 控制台中,前往 Private Service Connect 页面。
点击已连接的端点标签页。
点击连接端点。
对于目标 ,选择已发布的服务 。
对于目标服务,输入
projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/published-service。将
PRODUCER_PROJECT替换为已发布服务的项目 ID。将REGION替换为已发布服务的区域。对于端点名称,输入
ep-1。对于网络,选择
consumer-network。对于子网,选择
consumer-subnet。点击 IP 地址 下拉菜单,然后选择创建 IP 地址 。
- 对于名称,输入
ep-ip-1。 - 对于静态 IP 地址,选择让我选择。
- 对于自定义 IP 地址,输入
192.168.10.5。 - 点击预留 。
- 对于名称,输入
点击添加端点。
gcloud
预留要分配给该端点的内部 IP 地址。
gcloud compute addresses create ep-ip-1 \ --region=REGION \ --subnet=consumer-subnet \ --addresses=192.168.10.5将
REGION替换为您创建的已发布服务所在的区域。创建转发规则,以将该端点连接到服务提供方的服务连接。
gcloud compute forwarding-rules create ep-1 \ --region=REGION \ --network=consumer-network \ --address=ep-ip-1 \ --target-service-attachment=projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/published-service替换以下内容:
PRODUCER_PROJECT:服务提供方项目的项目 ID。REGION:服务连接的区域。
测试访问端点
如需测试端点和已发布的服务是否正常运行,请创建一个测试虚拟机,并从该虚拟机向端点发送请求。
创建客户端虚拟机以进行测试
在与端点相同的区域中创建客户端虚拟机。
控制台
在 Google Cloud 控制台中,前往虚拟机实例页面。
点击创建实例。
对于名称,输入
consumer-test。对于区域,选择与后端虚拟机相同的区域。
在地区 部分,选择该区域内的一个地区。
点击网络 并配置以下字段:
- 对于网络标记,请输入
allow-ssh。 - 对于网络接口,请选择以下内容:
- 对于网络,选择
consumer-network - 对于子网,选择
consumer-subnet
- 对于网络,选择
- 对于网络标记,请输入
点击创建 。
gcloud
gcloud compute instances create consumer-test \
--zone=ZONE \
--image-family=debian-12 \
--image-project=debian-cloud \
--tags=allow-ssh \
--subnet=consumer-subnet
将 ZONE 替换为与后端虚拟机位于同一区域的地区。
测试连接性
此测试会从客户端虚拟机联系端点。预期行为是流量分布在负载均衡器的后端虚拟机中。
- 连接到客户端虚拟机实例。
将gcloud compute ssh consumer-test --zone=ZONE
ZONE替换为客户端虚拟机的地区。 - 使用
curl连接端点的 IP 地址,通过这种方式向端点发送 Web 请求。重复该请求,您可以看到响应来自不同的后端虚拟机。根据每个后端虚拟机上/var/www/html/index.html的内容,生成响应的虚拟机的名称会显示在 HTML 响应的文本中。例如,预期 响应类似于Page served from: vm-1和Page served from: vm-2。curl -s http://192.168.10.5
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
删除项目
同时删除提供方项目 (PRODUCER_PROJECT) 和使用方项目 (CONSUMER_PROJECT)。
删除项目: Google Cloud
gcloud projects delete PROJECT_ID
后续步骤
- 详细了解 Private Service Connect 已发布的服务
- 详细了解如何通过端点访问已发布的服务
- 探索有关 Google Cloud 的参考架构、图表和最佳实践。 查看我们的 Cloud 架构中心。