GSP234

總覽
在本實作實驗室,您將瞭解如何使用 Terraform 建立 Cloud SQL 執行個體,接著設定 Cloud SQL Proxy,並透過 MySQL 用戶端測試連線。
目標
在本實驗室,您將瞭解如何執行下列工作:
- 建立 Cloud SQL 執行個體。
- 安裝 Cloud SQL Proxy。
- 使用 Cloud Shell,透過 MySQL 用戶端測試連線。
設定和需求
瞭解以下事項後,再點選「Start Lab」按鈕
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
- 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
- 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。
如何開始研究室及登入 Google Cloud 控制台
-
點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 剩餘時間
- 必須在這個研究室中使用的臨時憑證
- 完成這個實驗室所需的其他資訊 (如有)
-
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」。
-
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}}
您也可以在「Lab Details」窗格找到 Username。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}}
您也可以在「Lab Details」窗格找到 Password。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。
注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
-
按過後續的所有頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Google Cloud 控制台稍後會在這個分頁開啟。
注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。
啟動 Cloud Shell
Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。
-
點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示
。
-
系統顯示視窗時,請按照下列步驟操作:
- 繼續操作 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 鍵自動完成功能。
- (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
- 點按「授權」。
輸出內容:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project
輸出內容:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南。
Cloud SQL
Cloud SQL 是一項全代管資料庫服務,能讓您輕鬆設定、維護、管理 Google Cloud 中的關聯式資料庫。您可以搭配 MySQL 或 PostgreSQL 使用 Cloud SQL。
工作 1:下載必要檔案
- 在 Cloud Shell 終端機使用下列指令,建立目錄並從 Cloud Storage bucket 擷取必要的 Terraform 指令碼:
mkdir sql-with-terraform
cd sql-with-terraform
gsutil cp -r gs://spls/gsp234/gsp234.zip .
- 執行下列指令,將下載內容解壓縮:
unzip gsp234.zip
在 Cloud Shell IDE 啟用 Gemini Code Assist
您可以在 Cloud Shell 等整合式開發環境 (IDE) 中使用 Gemini Code Assist,取得程式碼相關指引或解決程式碼問題。Gemini Code Assist 必須先啟用,才能開始使用。
- 在 Cloud Shell 執行下列指令,啟用 Gemini for Google Cloud API:
gcloud services enable cloudaicompanion.googleapis.com
- 點按 Cloud Shell 工具列中的「開啟編輯器」。
注意:如要開啟 Cloud Shell 編輯器,請點選 Cloud Shell 工具列中的「開啟編輯器」。如要在 Cloud Shell 與程式碼編輯器之間切換,請視需要點選「開啟編輯器」或「開啟終端機」。
-
在左側窗格中,點按「設定」圖示,然後在「設定」檢視畫面中搜尋「Gemini Code Assist」。
-
找到「Geminicodeassist: Enable」,確認已勾選核取方塊,然後關閉「設定」。
-
點選畫面底部狀態列中的「Cloud Code - No Project」。
-
依指示授權外掛程式。如果系統未自動選取專案,請點按「選取 Google Cloud 專案」,然後選擇 。
-
確認狀態列的 Cloud Code 狀態訊息中已顯示 Google Cloud 專案 ()。
工作 2:瞭解程式碼
- 使用
cat 指令查看 main.tf 檔案內容:
cat main.tf
輸出內容範例:
...
resource "google_sql_database_instance" "master" {
name = "example-mysql-${random_id.name.hex}"
project = var.project
region = var.region
database_version = var.database_version
master_instance_name = var.master_instance_name
settings {
tier = var.tier
activation_policy = var.activation_policy
authorized_gae_applications = var.authorized_gae_applications
disk_autoresize = var.disk_autoresize
dynamic "backup_configuration" {
for_each = [var.backup_configuration]
content {
binary_log_enabled = lookup(backup_configuration.value, "binary_log_enabled", null)
enabled = lookup(backup_configuration.value, "enabled", null)
start_time = lookup(backup_configuration.value, "start_time", null)
}
}
dynamic "ip_configuration" {
for_each = [var.ip_configuration]
content {
ipv4_enabled = lookup(ip_configuration.value, "ipv4_enabled", true)
private_network = lookup(ip_configuration.value, "private_network", null)
require_ssl = lookup(ip_configuration.value, "require_ssl", null)
dynamic "authorized_networks" {
for_each = lookup(ip_configuration.value, "authorized_networks", [])
content {
expiration_time = lookup(authorized_networks.value, "expiration_time", null)
name = lookup(authorized_networks.value, "name", null)
value = lookup(authorized_networks.value, "value", null)
}
}
}
}
...
您可以使用 Gemini Code Assist 的 AI 功能,變更 main.tf 設定檔中的程式碼說明。
-
在 Cloud Shell 點選「開啟編輯器」。
-
在檔案總管開啟 main.tf 檔案,並在 IDE 啟用 Gemini Code Assist 後,編輯器右上角會顯示
圖示。
-
點選「Gemini Code Assist: Smart Actions」
圖示,然後選取「Explain this」。
-
Gemini Code Assist 會開啟對話窗格,並預先填入提示詞 Explain this。在 Code Assist 對話的內嵌文字方塊中,將預先填入的提示詞改成下列內容,然後點選「Send」:
身為雲端基礎架構專家,請深入分析 main.tf 檔案,做為新進工程師的詳細入門說明文件。
* 找出程式碼的主要功能。
* 指出是哪些主要設計模式和最佳做法讓模組穩固且可重複使用。
* 說明程式碼如何使用 dynamic block 和 count 等進階 Terraform 功能來增加彈性。
* 最後,請概述整體設計理念。
如有建議的調整,也請勿更新此檔案。
main.tf 設定檔中的程式碼說明會顯示在 Gemini Code Assist 對話視窗。
接著,請更新 variables.tf 檔案,以便使用分配給本實驗室的專案 ID 和區域。
-
在 Cloud Shell 編輯器,前往同一目錄下的 variables.tf。如前所述,請注意編輯器右上角的
圖示。
-
點選工具列上的「Gemini Code Assist: Smart Actions」
圖示。
-
將下列提示詞貼到 Gemini Code Assist 內嵌文字欄位,更新 project 和 region 變數。
請使用下列變更來更新 variables.tf 設定檔:
* 將 project 變數的 default 引數設為 {{{project_0.project_id | PROJECT_ID}}}。
* 將 region 變數的 default 引數設為 {{{project_0.default_region | REGION}}}。
-
按下 Enter 鍵,提示 Gemini Code Assist 據此修改程式碼。
-
在「Gemini Diff」檢視畫面出現提示時,點選「接受」。
variables.tf 設定檔中 project 和 region 變數的 default 引數更新後,看起來會像這樣:
variable "project" {
description = "此專案是要部署的目標位置,如未設定,則使用預設的供應商專案。"
default = "{{{project_0.project_id | PROJECT_ID}}}"
}
variable "region" {
description = "雲端資源所在的區域"
default = "{{{project_0.default_region | REGION}}}"
}
完成後,請儲存變更。
工作 3:執行 Terraform
terraform init 指令是用來初始化包含 Terraform 設定檔的工作目錄。
此指令會執行多個不同的初始化步驟來完成事前準備,讓工作目錄能正常使用。建議您重複執行這個指令,將設定變更同步至工作目錄,保持最新狀態。
- 執行
terraform init:
terraform init
terraform plan 指令雖為選用,但仍建議執行,其用途是建立執行計畫。除非已明確停用,否則 Terraform 會執行重新整理作業,並確定需要執行哪些動作才能達到設定檔中指定的目標狀態。
您完全不需要變更實際資源或狀態,即可輕鬆透過這個指令,檢查一組異動的執行計畫是否與預期相符。舉例來說,您可以先執行 terraform plan 指令,確保計畫能正常運作,再將異動內容提交至版本管控系統。
- 執行
terraform plan:
terraform plan -out=tfplan
-out 為選用引數,可以將產生的計畫儲存於檔案,以便日後透過 terraform apply 執行。
terraform apply 指令是用來套用變更,以達到設定的目標狀態,或套用 terraform plan 執行計畫產生的一組預先定義動作。
- 套用您剛才建立的 Terraform 計畫:
terraform apply tfplan
這項作業需要一點時間才能完成。完成後您會看到輸出內容,如下所示。
輸出內容:
套用完成!資源:新增 5 個,變更 0 個,刪除 0 個。
您的基礎架構狀態已儲存至下方路徑。此狀態是修改及銷毀基礎架構的必要條件,請務必妥善保管。如要檢查完整狀態,
請使用 terraform show 指令。
狀態路徑:terraform.tfstate
輸出內容:
generated_user_password =
instance_address = 35.232.204.44
instance_address_time_to_retire =
instance_name = example-mysql-6808
self_link = https://www.googleapis.com/sql/v1beta4/projects/[PROJECT_ID]/instances/example-mysql-6808
測試完成的工作
點選「Check my progress」,確認工作已完成。
使用 Terraform 指令碼建立 Cloud SQL 執行個體
工作 4:瞭解 Cloud SQL Proxy
Proxy 提供的內容
您可以透過 Cloud SQL Proxy 安全地存取 Cloud SQL 第二代執行個體,不需要將 IP 位址加入許可清單或設定 SSL。
使用 Cloud SQL Proxy 存取您的 Cloud SQL 執行個體,可享有下列優點:
-
安全連線:Proxy 會透過 TLS 1.2 搭配 128 位元 AES 加密,自動加密進出資料庫的流量,並使用 SSL 憑證來驗證用戶端與伺服器身分。
-
更輕鬆的連線管理:Proxy 會處理 Cloud SQL 的驗證,無需提供靜態 IP 位址。
注意:您不需要使用 Proxy 或設定 SSL,即可從 App Engine 標準環境或彈性環境連至 Cloud SQL。系統會自動採用「內建」的 Proxy 來連線。
Cloud SQL Proxy 的運作方式
Cloud SQL Proxy 的運作方式是讓稱為 Proxy 的本機用戶端在本機環境中執行。您的應用程式會透過資料庫使用的標準通訊協定與 Proxy 通訊。Proxy 會使用安全通道,與在伺服器上執行的隨附程序通訊。
下圖顯示 Proxy 連結 Cloud SQL 的方式:

工作 5:安裝 Cloud SQL Proxy
- 執行下列指令來下載 Proxy:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
- 執行下列指令,讓 Proxy 可執行:
chmod +x cloud_sql_proxy
您可在環境中的任意位置安裝 Proxy。Proxy 二進位檔的位置並不會影響監聽應用程式資料的位置。
Proxy 啟動選項
啟動 Proxy 時會提供下列資訊:
- Proxy 應與哪些 Cloud SQL 執行個體建立連線
- Proxy 將在何處監聽應用程式傳送至 Cloud SQL 的資料
- Proxy 會在何處尋找用於向 Cloud SQL 驗證應用程式的憑證
您提供的 Proxy 啟動選項會決定 Proxy 是使用 TCP 通訊埠或 Unix 通訊端監聽。如果使用 Unix 通訊端,則會在您所選的位置上建立通訊端 (位置通常會是 /cloudsql/ 目錄)。若使用 TCP,則 Proxy 預設會在 localhost 上監聽。
工作 6:測試與資料庫的連線
- 首先,為 Cloud SQL 執行個體執行 Cloud SQL Proxy:
MYSQL_DB_NAME=$(terraform output -json | jq -r '.instance_name.value')
MYSQL_CONN_NAME="{{{project_0.project_id | PROJECT_ID}}}:{{{project_0.default_region|REGION}}}:${MYSQL_DB_NAME}"
- 執行下列指令:
./cloud_sql_proxy -instances=${MYSQL_CONN_NAME}=tcp:3306
現在點選加號 + 圖示,開啟另一個 Cloud Shell 分頁。您將使用這個殼層連至 Cloud SQL Proxy。
- 執行下列指令,前往
sql-with-terraform 目錄:
cd ~/sql-with-terraform
- 使用下列指令取得為 MySQL 生成的密碼:
echo MYSQL_PASSWORD=$(terraform output -json | jq -r '.generated_user_password.value')
- 執行下列指令來測試 MySQL 連線:
mysql -udefault -p --host 127.0.0.1 default
-
系統提示時,輸入上方輸出內容中的 MYSQL_PASSWORD 值,然後按下 Enter 鍵。
-
您應該會成功登入 MYSQL 指令列。按下 CTRL+D 鍵,結束 MySQL。
返回第一個 Cloud Shell 分頁,您會看到連至 Cloud SQL Proxy 的記錄。
工作 7:隨堂測驗
完成下列選擇題能加深您的印象,更清楚本實驗室介紹的概念,請盡力回答。
恭喜!
在本實驗室,您成功使用 Terraform 建立 Cloud SQL 執行個體並設定 Cloud SQL Proxy,接著使用 MySQL 用戶端測試兩者之間的連線。
後續步驟/瞭解詳情
瞭解如何使用 Terraform 管理 Google Cloud 專案
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2025 年 8 月 29 日
實驗室上次測試日期:2025 年 10 月 13 日
Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。