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 建立關聯,做為服務消費者。

下列動作會驗證 Producer 服務的存取權:

  • 在 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

  • 專案名稱是這個專案參與者的顯示名稱。這是 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

這部虛擬機器搭載各種您需要的開發工具,並提供永久的 5GB 主目錄,而且可在 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,然後使用 Looker PSC 專案 ID 更新 [INSTANCE_PROJECT]。

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 Console 中取得 Cloud SQL PSC 服務連結:

在 Cloud 控制台中,前往:

SQL → SQL 執行個體 → 連線

18940483f646ed15.png

8. 在 Looker 中建立 PSC 端點連線

在下一節中,您將透過 Cloud Shell 中的 -psc-service-attachment 旗標,將 Cloud SQL Producer 服務連結與 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「測試」動作,驗證 Looker 與 Cloud SQL PSC 執行個體的連線。

依序前往「ADMIN」→「DATABASE」→「CONNECTIONS」→「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

後續步驟

查看一些程式碼研究室…

延伸閱讀和影片

參考文件