1. 简介
在此 Codelab 中,您将创建一个 L7 区域级内部应用负载平衡器和 Private Service Connect 后端,以获得对 Looker 的北向访问权限。对 Looker 的北向访问需要将使用方 VPC 列入 Looker PSC 实例的许可名单。
Private Service Connect 是 Google Cloud 网络的一项功能,允许使用方从其 VPC 网络内部以私密方式访问托管式服务。同样,它允许托管式服务提供方在其各自的 VPC 网络中托管这些服务,并为其使用方提供专用连接。例如,当您使用 Private Service Connect 访问 Looker 时,您是服务使用方,而 Google 是服务提供方,如图 1 中突出显示的那样。
图 1.

南向访问(也称为反向 PSC)使使用方能够创建发布的服务作为提供方,以允许 Looker 访问本地、VPC 中的端点、托管式服务和互联网。南向连接可以部署在任何区域,无论 Looker PSC 部署在何处,如图 2 中突出显示的那样。
图 2.

学习内容
- 网络要求
- 更新 Looker 北向访问许可名单
- 在使用方 VPC 中创建 Private Service Connect 后端
- Google 证书与自签名证书
所需条件
- 具有“所有者”权限的 Google Cloud 项目
- 已注册的网域
- 现有 Looker PSC 实例

2. 构建内容
您将建立一个已列入许可名单的使用方网络 looker-psc-demo,以部署需要 Google 或自行管理的证书的区域级内部 L7 应用负载平衡器和 PSC 后端 NEG。如需了解详情,请查看负载平衡器和证书摘要页面。
3. 网络要求
以下是网络要求细分:
组件 | 说明 |
VPC (looker-psc-demo) | 自定义模式 VPC |
PSC NEG 子网 | 用于为网络端点组分配 IP 地址 |
仅代理子网 | 负载平衡器的每个代理 都分配有一个内部 IP 地址。从代理发送到后端虚拟机或端点的数据包具有来自代理专用子网的来源 IP 地址。 |
后端服务 | 后端服务充当负载平衡器与后端资源之间的桥梁。在本教程中,后端服务与 PSC NEG 相关联。 |
4. Codelab 拓扑

5. 设置和要求
自定进度的环境设置
- 登录 Google Cloud 控制台,然后创建一个新项目或重复使用现有项目。如果您还没有 Gmail 或 Google Workspace 账号,则必须创建一个。



- 项目名称是此项目参与者的显示名称。它是 Google API 尚未使用的字符串。您可以随时对其进行更新。
- 项目 ID 在所有 Google Cloud 项目中是唯一的,并且是不可变的(一经设置便无法更改)。Cloud 控制台会自动生成一个唯一字符串;通常情况下,您无需关注该字符串。在大多数 Codelab 中,您都需要引用项目 ID(通常用
PROJECT_ID标识)。如果您不喜欢生成的 ID,可以再随机生成一个 ID。或者,您也可以尝试自己的项目 ID,看看是否可用。完成此步骤后便无法更改该 ID,并且此 ID 在项目期间会一直保留。 - 此外,还有第三个值,即部分 API 使用的项目编号,供您参考。如需详细了解所有这三个值,请参阅文档。
- 接下来,您需要在 Cloud 控制台中启用结算功能,以便使用 Cloud 资源/API。运行此 Codelab 应该不会产生太多的费用(如果有的话)。若要关闭资源以避免产生超出本教程范围的结算费用,您可以删除自己创建的资源或删除项目。Google Cloud 新用户符合参与 300 美元免费试用计划的条件。
启动 Cloud Shell
虽然可以通过笔记本电脑对 Google Cloud 进行远程操作,但在此 Codelab 中,您将使用 Google Cloud Shell,这是一个在云端运行的命令行环境。
在 Google Cloud 控制台 中,点击右上角工具栏中的 Cloud Shell 图标:

预配和连接到环境应该只需要片刻时间。完成后,您应该会看到如下内容:

这个虚拟机已加载了您需要的所有开发工具。它提供了一个持久的 5 GB 主目录,并且在 Google Cloud 中运行,大大增强了网络性能和身份验证功能。您在此 Codelab 中的所有工作都可以在浏览器中完成。您无需安装任何程序。
6. 准备工作
启用 API
在 Cloud Shell 中,确保项目 ID 已设置:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
echo $project
echo $region
启用所有必要的服务:
gcloud services enable compute.googleapis.com
7. 使用方网络
在下一部分中,您将创建将在 Looker PSC VPC 许可名单中更新的使用方网络。
VPC 网络
在 Cloud Shell 中,执行以下操作:
gcloud compute networks create looker-psc-demo --subnet-mode custom
创建子网
在 Cloud Shell 中,创建使用方网络端点组子网:
gcloud compute networks subnets create consumer-psc-neg-subnet --network looker-psc-demo --range 172.16.30.0/28 --region $region --enable-private-ip-google-access
在 Cloud Shell 中,创建内部应用负载平衡器子网:
gcloud compute networks subnets create consumer-ilb-subnet --network looker-psc-demo --range 172.16.40.0/28 --region $region --enable-private-ip-google-access
在 Cloud Shell 中,创建提供方区域代理专用子网:
gcloud compute networks subnets create $region-proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=looker-psc-demo \
--range=10.10.10.0/24
8. 创建自定义网域
如需设置自定义网域,您需要执行以下步骤:
在以下示例中,looker.cosmopup.com 是自定义网域

OAuth 示例
以下示例展示了授权来源的 OAuth 凭据和子网域 looker.cosmopup.com 的回调。

9. 证书
您可以创建 Compute Engine 证书或 Certificate Manager 证书。使用以下任一方法通过 Certificate Manager 创建证书:
- 自行管理的区域级证书。如需了解如何创建和使用自行管理的区域级证书,请参阅部署自行管理的区域级证书。不支持证书映射。
- Google 管理的区域级证书。不支持证书映射。Certificate Manager 支持以下类型的 Google 管理的区域级证书:
- 具有每个项目的 DNS 授权的 Google 管理的区域级证书。如需了解详情,请参阅部署 Google 管理的区域级证书。
- 使用 Certificate Authority Service 的 Google 管理的(专用)区域级证书。如需了解详情,请参阅使用 CA Service 部署 Google 管理的区域级证书。
10. Looker VPC 许可名单
查看允许的 VPC
在下一部分中,您将使用 Cloud 控制台界面查看 Looker 允许的 VPC 列表。
在 Cloud 控制台中,前往:
Looker → Looker 实例 → 详细信息
在以下示例中,“允许的 VPC”列表中没有任何条目:

更新允许的 VPC
通过添加 looker-psc-demo 作为允许的 VPC,更新 Looker 实例以支持北向访问。
在 Cloud 控制台中,前往:
Looker → Looker 实例 → 修改

连接 → 允许的 VPC
确保选择部署了 looker-psc-demo 的项目,然后选择 VPC looker-psc-demo,再点击“继续”。


验证允许的 VPC
查看更新后的“允许的 VPC”列表
在 Cloud 控制台中,前往:
Looker → Looker 实例 → 详细信息

11. 创建 PSC 后端
Looker PSC 作为服务提供方,会生成服务连接 URI,供服务使用方部署端点和后端,以获得对 Looker 的北向访问权限。在后续步骤中,您将确定 Looker PSC 服务连接 URI,然后在服务使用方 VPC 中创建 Private Service Connect 网络端点组 (NEG) 后端。
确定 Looker PSC 服务连接
在 Cloud 控制台中,找到并复制服务连接 URI:
Looker → Looker 实例 → 详细信息

创建 PSC 网络端点组
在 Cloud Shell 中,执行以下操作,确保更新 psc-target-service:
gcloud compute network-endpoint-groups create looker-northbound-neg \
--network-endpoint-type=private-service-connect \
--psc-target-service=[UPDATE WITH YOU LOOKER SERVICE ATTACHMENT URI] \
--region=$region \
--network=looker-psc-demo \
--subnet=consumer-psc-neg-subnet
示例:
gcloud compute network-endpoint-groups create looker-northbound-neg \
--network-endpoint-type=private-service-connect \
--psc-target-service=projects/t7ec792caf2a609d1-tp/regions/us-central1/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183 \
--region=$region \
--network=looker-psc-demo \
--subnet=consumer-psc-neg-subnet
验证 PSC 网络端点组创建
在 Cloud Shell 中,执行以下操作,确保 pscConnectionStatus 为“accepted”:
gcloud compute network-endpoint-groups describe looker-northbound-neg --region=$region | grep -i pscConnectionStatus:
示例:
user@cloudshell$ gcloud compute network-endpoint-groups describe looker-northbound-neg --region=$region | grep -i pscConnectionStatus:
pscConnectionStatus: ACCEPTED
创建区域级内部应用负载平衡器
在以下步骤中,您将使用 Cloud 控制台创建区域级内部应用负载平衡器,同时将生成的证书与前端配置相关联。
在 Cloud 控制台中,前往:
网络服务 → 负载均衡 → 创建负载平衡器

选择以下选项:

创建后端配置
选择以下选项,并根据您的部署自定义环境:
- 部署网络基础架构时使用的区域
- 网络:looker-psc-demo
- 系统会根据您的区域和网络自动填充代理专用子网




路由规则
无需任何配置

前端配置



确保负载平衡器已启用,并获取 IP 地址。
在 Cloud 控制台中,依次选择“网络服务”→“负载均衡”→“looker-ilb-alb”

12. DNS 解析
自定义网域的 DNS 解析可以是本地权威解析,也可以是 Cloud DNS 解析。在本教程中,我们将 Cloud DNS 定义为 Looker 自定义网域的权威服务器。如需启用从本地到 GCP 的 DNS 解析,您需要启用入站服务器政策。创建入站服务器政策时,Cloud DNS 会在应用该服务器政策的 VPC 网络中创建入站服务器政策入口点。入站服务器政策入口点是从适用 VPC 网络中每个子网的主要 IPv4 地址范围获取的内部 IPv4 地址,但仅代理子网除外。
在以下部分中,我们将为 Looker 自定义网域 looker.cosmopup.com 创建一个专用 DNS 区域,并创建一个包含负载平衡器 IP 地址的 A 记录。
13. 创建专用 DNS 区域
在 Cloud Shell 中,创建 Cloud DNS 专用可用区。
gcloud dns --project=$projectid managed-zones create looker-cosmopup-dns --description="" --dns-name="looker.cosmopup.com." --visibility="private" --networks="https://compute.googleapis.com/compute/v1/projects/$projectid/global/networks/looker-psc-demo"
在 Cloud Shell 中,创建包含在之前步骤中获得的负载平衡器 IP 地址的 A 记录。
gcloud dns --project=$projectid record-sets create looker.cosmopup.com. --zone="looker-cosmopup-dns" --type="A" --ttl="300" --rrdatas="<insert-your-ip>"
示例:
gcloud dns --project=$projectid record-sets create looker.cosmopup.com. --zone="looker-cosmopup-dns" --type="A" --ttl="300" --rrdatas="172.16.20.7"
接下来,必须在 looker-psc-demo VPC 和本地网络之间配置混合网络(例如互连、高可用性 VPN),以实现连接。
以下是在本地建立混合 NEG 连接所需的步骤:
- 选择网络连接产品 | Google Cloud
- 在采用 VPC 对等互连的 hub 和 spoke 架构中,混合 NEG 部署在 Cloud Router 所在的同一 VPC(中心)中
- 确保更新本地防火墙以适应代理专用子网范围,因为此子网充当与本地工作负载通信的源 IP 地址
- 使用入站转发 IP 地址更新本地 DNS,作为 looker.cosomopup.com 的 DNS 解析器
访问 Looker 界面
现在,负载平衡器已正常运行,您可以通过网络浏览器访问自定义 Looker 网域。请务必注意,您可能会遇到警告,具体取决于您使用的证书类型(例如不受信任的证书与受信任的证书)。
以下示例(不受信任的证书)展示了如何访问 Looker 自定义网域 looker.cosmopup.com,从而获得对 Looker 界面的北向访问权限:

14. 清理
在单个 Cloud Shell 终端中删除实验组件:
gcloud compute forwarding-rules delete regional-internal-alb-fr --region=$region -q
gcloud compute target-https-proxies delete regional-internal-alb-target-proxy --region=$region -q
gcloud compute url-maps delete regional-internal-alb --region=$region -q
gcloud compute backend-services delete looker-psc-neg-backend-svc --region=$region -q
gcloud compute addresses delete regional-alb-static-ip --region=$region -q
gcloud compute network-endpoint-groups delete looker-northbound-neg --region=$region -q
gcloud compute networks delete looker-psc-demo -q
15. 恭喜
恭喜!您已成功配置并验证了使用客户网域和区域级内部应用负载平衡器与 Looker 的北向连接。
您创建了消费者基础架构,了解了如何创建 PSC NEG、自定义网域,并了解了不同的证书选项。我们为您准备了许多精彩内容,助您轻松上手 Looker。
Cosmopup 认为 Codelab 非常棒!

后续操作
查看下列 Codelab…
- 使用 Private Service Connect 发布和使用服务
- 使用 Private Service Connect 和内部 TCP 代理负载平衡器,通过混合网络连接到本地服务
- 访问所有已发布的 Private Service Connect Codelab