Looker PSC 南向访问 Cloud SQL PSC

1. 简介

在此 Codelab 中,您将以服务提供方的身份执行与使用 Private Service Connect 部署的 Cloud SQL 的南向连接。

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.png

a99b7ace416376c4.png

5e3ff691252acf41.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. 创建生产者 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.png

9fa909f826dec963.png

9. 将 Looker PSC 与 Cloud SQL PSC 集成

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

依次选择 ADMIN → DATABASE → CONNECTIONS → ADD CONNECTION

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

eb3ef74d3ae71f1a.png

连接现已配置完毕

29017202470ad81f.png

10. 验证 Looker 连接

在下一部分中,您将学习如何使用 Looker 的“test”操作验证 Looker 与 Cloud SQL PSC 实例的连接情况。

前往“数据连接”页面:管理 → 数据库 → 连接 → cloud-sql-psc-demo → 测试

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

d9729caf9a61bfc2.png

清理

在一个 Cloud Shell 终端中删除实验组件

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

11. 恭喜

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

您已创建 Cloud SQL PSC 实例作为生产者服务和 Looker PSC 端点,以允许与生产者服务建立连接。

Cosmopup 认为 Codelab 很棒!

c911c127bffdee57.jpeg

后续操作

查看下列 Codelab…

深入阅读和视频

参考文档