Looker PSC 向 Cloud SQL PSC 的南向存取權

1. 簡介

在這個程式碼實驗室中,您將執行南向連線,連線至以 Private Service Connect 部署的 Cloud SQL,並做為服務供應者。

Private Service Connect 是 Google Cloud 網路的功能,可讓消費者在虛擬私有雲網路內,以私人方式存取代管服務。同樣地,這項功能也允許代管服務供應商在各自的獨立虛擬私有雲網路中代管這些服務,並為用戶提供私人連線。舉例來說,如果您使用 Private Service Connect 存取 Looker,您就是服務使用者,而 Google 則是服務供應商,如圖 1 所示。

145ea4672c3a3b14.png

南向存取權 (也稱為反向 PSC) 可讓消費者以供應商的身分建立已發布服務,讓 Looker 存取內部部署的端點、虛擬私有雲中的代管服務和網際網路。南向連線可部署在任何區域,不受 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. 程式碼研究室拓樸圖

1e7035ea608d7d23.png

4. 設定和需求

自助式環境設定

  1. 登入 Google Cloud 控制台,然後建立新專案或重複使用現有專案。如果您還沒有 Gmail 或 Google Workspace 帳戶,請務必建立帳戶

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 「Project name」是這個專案參與者的顯示名稱。這是 Google API 不會使用的字元字串。您隨時可以更新。
  • 專案 ID 在所有 Google Cloud 專案中都是不重複的值,且無法變更 (設定後即無法變更)。Cloud 控制台會自動產生專屬字串,您通常不需要特別在意。在大多數程式碼研究室中,您都需要參照專案 ID (通常會以 PROJECT_ID 表示)。如果您不喜歡系統產生的 ID,可以隨機產生另一個 ID。或者,您也可以自行嘗試,看看是否可用。這項設定在這個步驟後就無法變更,並會在整個專案期間維持不變。
  • 提醒您,有些 API 會使用第三個值「專案編號」。如要進一步瞭解這三個值,請參閱說明文件
  1. 接下來,您需要在 Cloud 控制台中啟用帳單功能,才能使用 Cloud 資源/API。執行這個程式碼研究室不會產生太多費用,甚至可能完全不會產生費用。如要關閉資源,避免在本教學課程結束後繼續產生費用,您可以刪除建立的資源或專案。Google Cloud 新使用者可享有價值 $300 美元的免費試用期

啟動 Cloud Shell

雖然 Google Cloud 可透過筆記型電腦遠端操作,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是在雲端運作的指令列環境。

Google Cloud 控制台中,按一下右上方工具列的 Cloud Shell 圖示:

55efc1aaa7a4d3ad.png

佈建並連線至環境的作業需要一些時間才能完成。完成後,畫面應如下所示:

7ffe5cbb04455448.png

這個虛擬機器會載入您需要的所有開發工具。提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作,可大幅提升網路效能和驗證功能。您可以在瀏覽器中完成本程式碼研究室的所有工作。您不需要安裝任何東西。

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 Console 判斷 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.png

9fa909f826dec963.png

9. 將 Looker PSC 與 Cloud SQL PSC 整合

在下一節中,您將使用 Looker 主控台建立與 Cloud SQL PSC 執行個體的資料庫連線。

依序前往「管理」→「資料庫」→「連線設定」→「新增連線」

按照下方螢幕截圖填寫連線詳細資料,然後選取「連結」

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. 恭喜

恭喜!您已成功設定並驗證 Cloud SQL PSC 連線,使用的是 Private Service Connect 提供的 Looker 控制台。

您已建立 Cloud SQL PSC 執行個體,做為可連線至 Producer 服務的 Producer 服務和 Looker PSC 端點。

Cosmopup 認為程式碼研究室很棒!

c911c127bffdee57.jpeg

後續步驟

查看一些程式碼研究室…

其他參考資料和影片

參考文件