实验设置说明和要求
保护您的账号和进度。请务必在无痕浏览器窗口中,使用实验凭证运行此实验。

將應用程式連線至 PostgreSQL 適用的 Cloud SQL 執行個體

实验 35 分钟 universal_currency_alt 1 积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP919

Google Cloud 自學實驗室標誌

總覽

Cloud SQL 是適用於 MySQL、PostgreSQL 和 Microsoft SQL Server 的全代管關聯式資料庫服務,提供許多服務來處理常見的管理工作,例如備份、複製和記錄。您可以輕鬆將應用程式連線至 Cloud SQL 執行個體,充分運用這些實用服務。

在本實驗室中,您會先建立 Kubernetes 叢集,然後將簡易應用程式部署至該叢集。接著,將應用程式連線至提供的 PostgreSQL 適用的 Cloud SQL 執行個體,並確認應用程式可以進行寫入及讀取。

學習內容

  • 建立 Kubernetes 叢集,並將簡易應用程式部署至該叢集。
  • 將應用程式連線至提供的 PostgreSQL 適用的 Cloud SQL 資料庫執行個體。
  • 確認應用程式可以寫入及讀取資料庫。

設定和需求

瞭解以下事項後,再點選「Start Lab」按鈕

請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。

為了順利完成這個實驗室,請先確認:

  • 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。

如何開始研究室及登入 Google Cloud 控制台

  1. 點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的臨時憑證
    • 完成這個實驗室所需的其他資訊 (如有)
  2. 點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」

    接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」
  3. 如有必要,請將下方的 Username 貼到「登入」對話方塊。

    {{{user_0.username | "Username"}}}

    您也可以在「Lab Details」窗格找到 Username。

  4. 點選「下一步」

  5. 複製下方的 Password,並貼到「歡迎使用」對話方塊。

    {{{user_0.password | "Password"}}}

    您也可以在「Lab Details」窗格找到 Password。

  6. 點選「下一步」

    重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
  7. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Google Cloud 控制台稍後會在這個分頁開啟。

注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。「導覽選單」圖示和搜尋欄位

啟動 Cloud Shell

Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。

  1. 點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示 「啟動 Cloud Shell」圖示

  2. 系統顯示視窗時,請按照下列步驟操作:

    • 繼續操作 Cloud Shell 視窗。
    • 授權 Cloud Shell 使用您的憑證發出 Google Cloud API 呼叫。

連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID。輸出內容中有一行文字,宣告本工作階段的 Project_ID

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。

  1. (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
  1. 點按「授權」

輸出內容:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project

輸出內容:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南

設定區域和可用區

某些 Compute Engine 資源位於區域和可用區。「區域」是您可以執行資源的特定地理位置,每個區域中會有一或多個「可用區」。

請在 Cloud Shell 執行下列 gcloud 指令,設定實驗室的預設區域和可用區:

gcloud config set compute/zone "{{{project_0.default_zone|ZONE}}}" export ZONE=$(gcloud config get compute/zone) gcloud config set compute/region "{{{project_0.default_region|REGION}}}" export REGION=$(gcloud config get compute/region)

工作 1:初始化 API 並建立 Cloud IAM 服務帳戶

為順利完成這項工作,您必須初始化 API,並建立 IAM 服務帳戶,允許應用程式連線至 Cloud SQL 資料庫。

啟用 API

請啟用本實驗室所需的 API。在後續工作,您將建構容器並推送至 Artifact Registry,因此必須先啟用 Artifact Registry API。

  1. 在 Cloud Shell 執行下列指令,啟用 Artifact Registry API:
gcloud services enable artifactregistry.googleapis.com

建立 Cloud SQL 服務帳戶

您需要為稍後部署的應用程式設定 IAM 服務帳戶憑證。服務帳戶必須繫結至可建立及存取 Cloud SQL 資料庫的角色。

  1. 在 Cloud Shell 中建立服務帳戶,並繫結至實驗室專案中的 Cloud SQL 管理員角色:
export PROJECT_ID=$(gcloud config list --format 'value(core.project)') export CLOUDSQL_SERVICE_ACCOUNT=cloudsql-service-account gcloud iam service-accounts create $CLOUDSQL_SERVICE_ACCOUNT --project=$PROJECT_ID gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$CLOUDSQL_SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudsql.admin"
  1. 在 Cloud Shell 中,建立金鑰並匯出至本機檔案:
gcloud iam service-accounts keys create $CLOUDSQL_SERVICE_ACCOUNT.json \ --iam-account=$CLOUDSQL_SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \ --project=$PROJECT_ID

檔案會儲存在 Cloud Shell 的主資料夾。

點選「Check my progress」,確認目標已達成。為 Cloud SQL 建立 IAM 服務帳戶。

工作 2:部署輕量型 GKE 應用程式

在這項工作中,您會建立 Kubernetes 叢集,並在叢集上部署輕量型 Google Kubernetes Engine (GKE) 應用程式。您將設定應用程式,以存取提供的 Cloud SQL 執行個體。

我們提供的 gMemegen 是一款簡易 Flask-SQLAlchemy 網頁應用程式。這個應用程式會用一組相片製作網路迷因,並擷取頁首和頁尾文字,然後將這些內容儲存在資料庫中,並將網路迷因算繪至本機資料夾。應用程式會在單一 Pod 上執行,並有兩個容器:一個用於應用程式,另一個用於以 side-car 模式部署的 Cloud SQL 驗證 Proxy。

負載平衡器會透過 side-car 在應用程式和資料庫之間封送要求。這個負載平衡器會公開外部 Ingress IP 位址,您將透過這個位址在瀏覽器中存取應用程式。

建立 Kubernetes 叢集

在這個步驟中,您將建立最基本的 Kubernetes 叢集。叢集會在幾分鐘內部署完畢。

  1. 在 Cloud Shell 中,建立最基本的 Kubernetes 叢集,如下所示:
ZONE={{{project_0.default_zone|ZONE}}} gcloud container clusters create postgres-cluster \ --zone=$ZONE --num-nodes=2

建立 Kubernetes Secret 存取資料庫

在這個步驟中,您會建立一對 Kubernetes Secret,內含連線至 Cloud SQL 執行個體和資料庫所需的憑證。

  1. 在 Cloud Shell 中執行下列指令,建立 Secret:
kubectl create secret generic cloudsql-instance-credentials \ --from-file=credentials.json=$CLOUDSQL_SERVICE_ACCOUNT.json kubectl create secret generic cloudsql-db-credentials \ --from-literal=username=postgres \ --from-literal=password=supersecret! \ --from-literal=dbname=gmemegen_db

下載並建構 GKE 應用程式容器

您必須先建構容器並推送到存放區,才能將 gMemegen 應用程式部署至 GKE 叢集。

  1. 在 Cloud Shell 下載提供的應用程式程式碼,然後切換至應用程式目錄:
gsutil -m cp -r gs://spls/gsp919/gmemegen . cd gmemegen
  1. 為區域、專案 ID 和 Artifact Registry 存放區建立環境變數:
export REGION={{{ project_0.default_region | "REGION" }}} export PROJECT_ID=$(gcloud config list --format 'value(core.project)') export REPO=gmemegen
  1. 為 Artifact Registry 設定 Docker 驗證:
gcloud auth configure-docker ${REGION}-docker.pkg.dev
  • 系統要求您確認時,請輸入 Y
  1. 建立 Artifact Registry 存放區:
gcloud artifacts repositories create $REPO \ --repository-format=docker --location=$REGION
  1. 建構本機 Docker 映像檔:
docker build -t ${REGION}-docker.pkg.dev/${PROJECT_ID}/gmemegen/gmemegen-app:v1 .

在本實驗室中,您可以忽略以「root」使用者身分執行「pip」的警告,但請注意,一般來說,特別是在本機上作業時,最佳做法是使用虛擬環境。

  1. 將 Docker 映像檔推送至 Artifact Registry:
docker push ${REGION}-docker.pkg.dev/${PROJECT_ID}/gmemegen/gmemegen-app:v1

設定及部署 GKE 應用程式

您必須修改 gMemegen 應用程式的 Kubernetes 部署資訊清單,指向正確的容器,並使用 Cloud SQL PostgreSQL 執行個體的連線字串,設定 Cloud SQL Auth Proxy side-car。

操作說明闡述如何使用 Cloud Shell 編輯器編輯檔案,但您也可以在 Cloud Shell 中透過其他編輯器 (例如 vinano) 執行這些步驟。

  1. 在 Cloud Shell 選單列中,按一下「開啟編輯器」,開啟 Cloud Shell 編輯器。

  2. 在左側的「Explorer」面板中,展開 gmemegen 資料夾,然後選取 gmemegen_deployment.yaml 以編輯檔案。

  3. 第 33 行image 屬性中,將 ${REGION} 換成 ,並將 ${PROJECT_ID} 換成 。這行程式碼現在應如下所示:

image: {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/{{{ project_0.project_id | "Project ID" }}}/gmemegen/gmemegen-app:v1
  1. 第 60 行,將 ${REGION} 換成 ,並將 ${PROJECT_ID} 換成 。這行程式碼現在應如下所示:
-instances={{{ project_0.project_id | "Project ID" }}}:{{{ project_0.default_region | "REGION" }}}:postgres-gmemegen=tcp:5432

如要確認連線名稱是否正確,請前往 Cloud 控制台,依序點選「資料庫」>「SQL」,然後選取 postgres-gmemegen 執行個體,並與「總覽」窗格中的「連線名稱」進行比較。有效連線名稱的格式為 PROJECT_ID:REGION:CLOUD_SQL_INSTANCE_ID

  1. 依序選取 Cloud Shell 編輯器選單中的「檔案」>「Save」,即可儲存變更。

  2. 在 Cloud 控制台中,點選「開啟終端機」,重新開啟 Cloud Shell。您可能需要向下拖曳選單列頂端中央的控點,調整終端機視窗大小,才能看到上方的 Cloud 控制台視窗。

  3. 在 Cloud Shell 執行下列指令,部署應用程式:

kubectl create -f gmemegen_deployment.yaml
  1. 在 Cloud Shell 執行下列指令,確認部署作業是否成功:
kubectl get pods

Pod 需要從存放區提取映像檔,因此可能需要一分鐘左右才會啟動。重複執行上述指令,直到看到狀態為 Running 的 Pod (含 2 個容器) 為止。

點選「Check my progress」,確認目標已達成。部署輕量型 GKE 應用程式。

工作 3:將 GKE 應用程式連線至外部負載平衡器

在這項工作中,您將建立負載平衡器,在 GKE Pod 中的容器之間調度要求,並使用瀏覽器透過外部 IP 位址存取應用程式。

建立負載平衡器,讓 GKE 應用程式可從網頁存取

在本步驟中,您將建立 Kubernetes 負載平衡器服務,為應用程式提供公開 IP 位址。

  1. 在 Cloud Shell 執行下列指令,為應用程式建立負載平衡器:
kubectl expose deployment gmemegen \ --type "LoadBalancer" \ --port 80 --target-port 8080

測試應用程式以產生一些資料

在這個步驟中,您將透過網路瀏覽器存取 gMemegen 應用程式。

這個應用程式的介面十分簡單。應用程式啟動後會前往首頁,顯示 6 張製作網路迷因的候選圖像,按一下所要圖像即可選取。

系統會顯示「Create Meme」頁面,您可以在這裡輸入兩段文字,分別顯示在圖像頂端和底部。按一下「Submit」,即可算繪並顯示網路迷因。介面不會在完成的網路迷因頁面提供任何導覽功能,您必須使用瀏覽器的返回按鈕,才能回到首頁。

另外還有「Recent」和「Random」這兩個頁面,分別顯示最近生成的網路迷因和隨機網路迷因。產生網路迷因和瀏覽 UI 時,會產生資料庫活動,您可以在記錄中查看,如下所述。

等待負載平衡器公開外部 IP,您可以按照下列方式擷取:

  1. 在 Cloud Shell 中,從下列指令的輸出內容複製 LoadBalancer Ingress 的外部 IP 位址屬性:
kubectl describe service gmemegen

輸出內容:

Name: gmemegen Namespace: default Labels: app=gmemegen Annotations: Selector: app=gmemegen Type: LoadBalancer IP Families: IP: 10.3.240.201 IPs: 10.3.240.201 LoadBalancer Ingress: 34.67.122.203 Port: 80/TCP TargetPort: 8080/TCP NodePort: 31837/TCP Endpoints: 10.0.0.7:8080 Session Affinity: None External Traffic Policy: Cluster Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal EnsuringLoadBalancer 85s service-controller Ensuring load balancer Normal EnsuredLoadBalancer 36s service-controller Ensured load balancer

LoadBalancer Ingress 屬性需要大約一分鐘才會顯示在輸出內容中 (如上所示),因此請重複執行指令,直到顯示屬性為止,再執行下一個步驟。

  1. 開啟瀏覽器,前往負載平衡器的 ingress IP 位址。

在 Cloud Shell 執行下列指令,便能建立可點選的連結,連往負載平衡器的外部 IP 位址:

export LOAD_BALANCER_IP=$(kubectl get svc gmemegen \ -o=jsonpath='{.status.loadBalancer.ingress[0].ip}' -n default) echo gMemegen Load Balancer Ingress IP: http://$LOAD_BALANCER_IP
  1. 在 Cloud Shell 點選連結後,gMemegen 應用程式就會在瀏覽器的新分頁中執行。

  2. 建立網路迷因的步驟如下:

    • 在「Home」頁面中,按一下其中一張顯示的圖像。
    • 在「Top」和「Bottom」文字方塊中輸入文字。
    • 點選「Submit」按鈕。

畫面上會顯示新製作的網路迷因。

連線至 Cloud SQL 的 GKE 應用程式網路迷因。

  1. 如要製作更多網路迷因,請使用瀏覽器的返回按鈕前往首頁。

  2. 如要查看現有網路迷因,請點選應用程式選單中的「Recent」或「Random」 (請注意,「Random」會開啟新瀏覽器分頁)。

  3. 在 Cloud Shell 中執行下列指令,查看應用程式的活動:

POD_NAME=$(kubectl get pods --output=json | jq -r ".items[0].metadata.name") kubectl logs $POD_NAME gmemegen | grep "INFO"

這會查詢 gmemegen 容器中的記錄,並顯示 Pod 上應用程式的活動,包括 SQL 陳述式 (執行時會記錄到 stderr)。

點選「Check my progress」,確認目標已達成。將 GKE 應用程式連線至外部負載平衡器。

工作 4:確認應用程式是否具備資料庫的完整讀取/寫入權限

在這項工作中,您會確認應用程式是否能寫入及讀取資料庫。

連線至資料庫並查詢應用程式資料表

在本步驟中,您將在 Cloud Shell 中執行 PL/SQL,以連線至 Cloud SQL 執行個體。

  1. 前往 Google Cloud 控制台,依序點選「資料庫」>「SQL」,然後選取 postgres-gmemegen 執行個體。

  2. 在「總覽」窗格中,向下捲動至「連線至這個執行個體」,然後點選「開啟 Cloud Shell」按鈕。

  3. 在 Cloud Shell 中執行自動填入的指令。

  4. 出現提示時,請輸入密碼:supersecret!

  5. postgres=> 提示詞輸入下列指令,選取 gmemegen_db 資料庫:

\c gmemegen_db
  1. 出現提示時,請輸入密碼:supersecret!

  2. gmemegen_db=> 提示詞輸入:

select * from meme;

系統會顯示您透過 gMemegen 應用程式生成的每個網路迷因。

點選「Check my progress」,確認目標已達成。確認應用程式是否具備資料庫的完整讀取/寫入功能。

恭喜!

在本實驗室中,您已設定應用程式來存取 PostgreSQL 適用的 Cloud SQL 資料庫。您建立了 Kubernetes 叢集,將簡單的網路迷因產生應用程式部署至該叢集,也將應用程式連線至提供的 PostgreSQL 適用的 Cloud SQL 資料庫執行個體,並確認應用程式可以進行寫入及讀取。

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2025 年 2 月 28 日

實驗室上次測試日期:2025 年 2 月 28 日

Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

使用无痕模式或无痕浏览器窗口是运行此实验的最佳方式。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。