Looker PSC 南向访问 Cloud SQL PSC

1. 简介

在此 Codelab 中,您将执行到 Cloud SQL 的南向连接,该 Cloud SQL 已部署为 Private Service Connect 服务提供方。

Private Service Connect 是 Google Cloud 网络的一项功能,允许使用方从其 VPC 网络内部以私密方式访问托管式服务。同样,它允许托管式服务提供方在其各自的 VPC 网络中托管这些服务,并为其使用方提供专用连接。例如,当您使用 Private Service Connect 访问 Looker 时,您是服务使用方,而 Google 是服务提供方,如图 1 中突出显示的那样。

145ea4672c3a3b14.png

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

259493afd914f68b.png

学习内容

  • 创建 Private Service Connect Cloud SQL 实例提供方服务
  • 在 Looker 中创建 Private Service Connect 端点(作为服务使用方)

所需条件

def88091b42bfe4d.png

2. 构建内容

您将建立一个 Cloud SQL PSC 实例,该实例部署为与 Looker PSC(作为服务使用方)关联的服务提供方。

以下操作可验证对提供方服务的访问权限:

  • 在 Looker 中创建与提供方服务连接关联的 PSC 端点
  • 使用 Looker 控制台创建与 Cloud SQL PSC 的数据库连接
  • 通过身份验证和访问预定义的方案来测试与 Cloud SQL PSC 的连接

3. Codelab 拓扑

1e7035ea608d7d23.png

4. 设置和要求

自定进度的环境设置

  1. 登录 Google Cloud 控制台,然后创建一个新项目或重复使用现有项目。如果您还没有 Gmail 或 Google Workspace 账号,则必须创建一个。

fbef9caa1602edd0.pnga99b7ace416376c4.png5e3ff691252acf41.png

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

启动 Cloud Shell

虽然可以通过笔记本电脑对 Google Cloud 进行远程操作,但在此 Codelab 中,您将使用 Google Cloud Shell,这是一个在云端运行的命令行环境。

在 Google Cloud 控制台 中,点击右上角工具栏中的 Cloud Shell 图标:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

这个虚拟机已加载了您需要的所有开发工具。它提供了一个持久的 5 GB 主目录,并且在 Google Cloud 中运行,大大增强了网络性能和身份验证功能。您在此 Codelab 中的所有工作都可以在浏览器中完成。您无需安装任何程序。

5. 准备工作

启用 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

6. 确定 Looker PSC 项目

创建 Cloud SQL PSC 实例需要确定允许的 PSC 项目,因此,在创建 Cloud SQL 实例时必须提供 Looker PSC 租户项目,如果使用现有实例,则必须更新该项目。

使用 gcloud 确定 Looker PSC 项目

在 Cloud Shell 中,将 [INSTANCE_NAME] 替换为您的 Looker PSC 实例名称,以获取 Looker PSC 项目 ID:

gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json | grep -i lookerServiceAttachmentUri

在示例输出中,t7ec792caf2a609d1-tp 是 Looker PSC 项目:

gcloud looker instances describe looker-psc-instance --region=us-central1 --format=json | grep -i lookerServiceAttachmentUri
    "lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/us-central1/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",

使用 Cloud 控制台确定 Looker PSC 项目

在 Cloud 控制台中,前往:

Looker → Looker PSC 实例

1367ec0136aa5ad6.png

7. 创建 Producer Cloud SQL 实例

在下一部分中,您将创建一个 Cloud SQL PSC 实例,该实例用于测试,部署时会使用预定义的密码,并在允许的 PSC 项目列表中指定 Looker PSC 项目。

创建 Cloud SQL PSC

在 Cloud Shell 中,创建一个实例并启用 Private Service Connect,将 [INSTANCE_PROJECT] 更新为您的 Looker PSC 项目 ID。

gcloud sql instances create cloud-sql-psc-demo \
--project=$project \
--region=$region \
--enable-private-service-connect \
--allowed-psc-projects=[INSTANCE_PROJECT] \
--availability-type=regional \
--no-assign-ip \
--cpu=2 --memory=4GB \
--database-version=MYSQL_8_0 \
--enable-bin-log \
--root-password=password123

示例:

gcloud sql instances create cloud-sql-psc-demo \
--project=$project \
--region=$region \
--enable-private-service-connect \
--allowed-psc-projects=t7ec792caf2a609d1-tp \
--availability-type=regional \
--no-assign-ip \
--cpu=2 --memory=4GB \
--database-version=MYSQL_8_0 \
--enable-bin-log \
--root-password=password123

获取 Cloud SQL 服务连接

创建启用了 Private Service Connect 的 Cloud SQL 实例后,获取服务连接 URI,以便在后续步骤中在 Looker 中创建 Private Service Connect 端点。

在 Cloud Shell 中,执行以下操作:

gcloud sql instances describe [INSTANCE_NAME] --project=$project | grep -i pscServiceAttachmentLink

示例输出会生成服务连接 URI:

projects/o6222fa10e2a50865p-tp/regions/us-central1/serviceAttachments/a-39d809aaecae-psc-service-attachment-127fc34733744155

gcloud sql instances describe cloud-sql-psc-demo --project=$project | grep -i pscServiceAttachmentLink:
pscServiceAttachmentLink: projects/o6222fa10e2a50865p-tp/regions/us-central1/serviceAttachments/a-39d809aaecae-psc-service-attachment-127fc34733744155

在 Cloud 控制台中,您可以获取 Cloud SQL PSC 服务连接:

在 Cloud 控制台中,前往:

SQL → SQL 实例 → 连接

18940483f646ed15.png

8. 在 Looker 中建立 PSC 端点连接

在下一部分中,您将通过在 Cloud Shell 中使用 -psc-service-attachment 标志(针对单个网域)将 Cloud SQL 生产者服务连接与 Looker Core PSC 相关联。

在 Cloud Shell 中,通过更新以下参数来创建 PSC 关联,以匹配您的环境:

  • INSTANCE_NAME:Looker (Google Cloud Core) 实例的名称。
  • DOMAIN_1: sql.database1.com
  • SERVICE_ATTACHMENT_1:描述 Cloud SQL PSC 实例时捕获的 URI
  • REGION:Looker (Google Cloud Core) 实例的托管区域

在 Cloud Shell 中,执行以下操作:

gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION

示例:

gcloud looker instances update looker-psc-instance \
--psc-service-attachment  domain=sql.database1.com,attachment=projects/o6222fa10e2a50865p-tp/regions/us-central1/serviceAttachments/a-39d809aaecae-psc-service-attachment-127fc34733744155 \
--region=us-central1

在 Cloud Shell 中,验证 serviceAttachments 的 connectionStatus 是否为“ACCEPTED”。请务必使用您的 Looker PSC INSTANCE_NAME 进行更新:

gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json

示例:

gcloud looker instances describe looker-psc-instance --region=$region --format=json

示例:

user@cloudshell$ gcloud looker instances describe looker-psc-instance --region=$region --format=json
{
  "adminSettings": {},
  "createTime": "2024-08-23T00:00:45.339063195Z",
  "customDomain": {
    "domain": "looker.cosmopup.com",
    "state": "AVAILABLE"
  },
  "encryptionConfig": {},
  "lookerVersion": "24.14.18",
  "name": "projects/project/locations/us-central1/instances/looker-psc-instance",
  "platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
  "pscConfig": {
    "allowedVpcs": [
      "projects/project/global/networks/looker-psc-demo",
      "projects/project/global/networks/looker-shared-vpc"
    ],
    "lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/us-central1/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "sql.database1.com",
        "targetServiceAttachmentUri": "projects/o6222fa10e2a50865p-tp/regions/us-central1/serviceAttachments/a-39d809aaecae-psc-service-attachment-127fc34733744155"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-09-04T14:40:05.613026012Z"
}

在 Cloud 控制台中验证 PSC 端点

您可以在 Cloud 控制台中验证 PSC 连接

在 Cloud 控制台中,前往:

Looker → Looker 实例 → 详细信息

2d4684d722d31e4b.png9fa909f826dec963.png

9. 将 Looker PSC 与 Cloud SQL PSC 集成

在下一部分中,您将使用 Looker 控制台创建与 Cloud SQL PSC 实例的数据库连接。

依次前往管理 → 数据库 → 连接 → 选择添加连接

根据以下屏幕截图填写连接详细信息,然后选择连接

eb3ef74d3ae71f1a.png

连接现已配置完毕

29017202470ad81f.png

10. 验证 Looker 连接

在下一部分中,您将了解如何使用 Looker“测试”操作验证 Looker 与 Cloud SQL PSC 实例的连接。

依次前往“数据连接”管理员 → 数据库 → 连接 → cloud-sql-psc-demo → 测试

选择“测试”后,Looker 将连接到 postgres 数据库,如下所示:

d9729caf9a61bfc2.png

清理

从单个 Cloud Shell 终端删除实验组件

gcloud sql instances delete cloud-sql-psc-demo -q

11. 恭喜

恭喜!您已成功配置并验证了使用 Looker 控制台(由 Private Service Connect 提供支持)与 Cloud SQL PSC 的连接。

您已创建 Cloud SQL PSC 实例作为 Producer 服务,并创建 Looker PSC 端点以允许连接到 Producer 服务。

Cosmopup 认为 Codelab 非常棒!

c911c127bffdee57.jpeg

后续操作

查看下列 Codelab…

拓展阅读和视频

参考文档