1. 簡介
在本程式碼實驗室中,您會執行南向連線,連至以 Private Service Connect 部署的 Cloud SQL,做為服務供應端。
Private Service Connect 是 Google Cloud 網路功能,可讓消費者從虛擬私有雲網路內,以私密方式存取代管服務。同樣地,代管服務生產端也能在自己的獨立虛擬私有雲網路中代管這些服務,並為消費者提供私人連線。舉例來說,如果您使用 Private Service Connect 存取 Looker,您就是服務用戶,而 Google 則是服務供應商,如圖 1 所示。

南向存取 (又稱反向 PSC) 可讓消費者以生產者身分建立已發布的服務,允許 Looker 存取地端部署、虛擬私有雲、代管服務和網際網路上的端點。無論 Looker PSC 部署在哪個區域,您都可以在任何區域部署南向連線,如圖 2 所示。

課程內容
- 建立 Private Service Connect Cloud SQL 執行個體生產端服務
- 以服務用戶身分在 Looker 中建立 Private Service Connect 端點
軟硬體需求
- 具備「擁有者」權限的 Google Cloud 專案
- 現有的 Looker PSC 執行個體

2. 建構項目
您會建立部署為服務生產者的 Cloud SQL PSC 執行個體,並將其與 Looker PSC 建立關聯,做為服務消費者。
下列動作會驗證 Producer 服務的存取權:
- 在 Looker 中建立與生產者服務連結相關聯的 PSC 端點
- 使用 Looker 控制台建立與 Cloud SQL PSC 的資料庫連線
- 驗證並存取預先定義的結構,測試與 Cloud SQL PSC 的連線
3. 程式碼研究室拓撲

4. 設定和需求
自修實驗室環境設定
- 登入 Google Cloud 控制台,然後建立新專案或重複使用現有專案。如果沒有 Gmail 或 Google Workspace 帳戶,請先建立帳戶。



- 專案名稱是這個專案參與者的顯示名稱。這是 Google API 未使用的字元字串。你隨時可以更新。
- 專案 ID 在所有 Google Cloud 專案中都是不重複的,而且設定後即無法變更。Cloud 控制台會自動產生專屬字串,通常您不需要在意該字串為何。在大多數程式碼研究室中,您需要參照專案 ID (通常標示為
PROJECT_ID)。如果您不喜歡產生的 ID,可以產生另一個隨機 ID。你也可以嘗試使用自己的名稱,看看是否可用。完成這個步驟後就無法變更,且專案期間會維持不變。 - 請注意,有些 API 會使用第三個值,也就是「專案編號」。如要進一步瞭解這三種值,請參閱說明文件。
- 接著,您需要在 Cloud 控制台中啟用帳單,才能使用 Cloud 資源/API。完成這個程式碼研究室的費用不高,甚至可能完全免費。如要關閉資源,避免在本教學課程結束後繼續產生費用,請刪除您建立的資源或專案。Google Cloud 新使用者可參加價值$300 美元的免費試用計畫。
啟動 Cloud Shell
雖然可以透過筆電遠端操作 Google Cloud,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是可在雲端執行的指令列環境。
在 Google Cloud 控制台中,點選右上工具列的 Cloud Shell 圖示:

佈建並連線至環境的作業需要一些時間才能完成。完成後,您應該會看到如下的內容:

這部虛擬機器搭載各種您需要的開發工具,並提供永久的 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 執行個體

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 執行個體 → 連線

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 執行個體 → 詳細資料


9. 整合 Looker PSC 與 Cloud SQL PSC
在下一節中,您將使用 Looker 控制台建立資料庫連線,連至 Cloud SQL PSC 執行個體。
依序前往「ADMIN」(管理) →「DATABASE」(資料庫) →「CONNECTIONS」(連線),然後選取「ADD CONNECTION」(新增連線)
根據下方的螢幕截圖填寫連線詳細資料,然後選取「連線」

連線設定完成

10. 驗證 Looker 連線
在下一節中,您將瞭解如何使用 Looker「測試」動作,驗證 Looker 與 Cloud SQL PSC 執行個體的連線。
依序前往「ADMIN」→「DATABASE」→「CONNECTIONS」→「cloud-sql-psc-demo」→「Test」
選取「測試」後,Looker 會連線至 postgres 資料庫,如下所示:

清除所用資源
從單一 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 認為程式碼研究室很棒!

後續步驟
查看一些程式碼研究室…
- 使用 Private Service Connect 發布及使用服務
- 透過 Private Service Connect 和內部 TCP Proxy 負載平衡器,經由混合式網路連線至地端部署服務
- 存取所有已發布的 Private Service Connect 程式碼研究室