1. 简介
在此 Codelab 中,您将创建第 7 层区域级内部应用负载平衡器和 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 已被接受:
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 解析可以是权威型本地 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 与本地连接所需的步骤:
- 选择 Network Connectivity 产品 | Google Cloud
- 在采用 VPC 对等互连的中心-辐射架构中,混合 NEG 部署在与 Cloud Router 位于同一 VPC(hub)
- 确保更新本地防火墙以适应代理专用子网范围,因为此子网用作与本地工作负载通信的来源 IP 地址
- 将入站转发 IP 地址作为 looker.cosomopup.com 的 DNS 解析器,更新本地 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