本頁面包含從在 Cloud Run 中執行的服務連線至 Cloud SQL 執行個體的資訊與範例。
如需逐步操作說明,瞭解如何執行連線至 Cloud SQL 的 Cloud Run 範例網頁應用程式,請參閱從 Cloud Run 連線的快速入門導覽課程。
Cloud SQL 是一項全代管資料庫服務,可協助您在雲端設定、維護及管理關聯資料庫。
Cloud Run 是代管運算平台,可讓您直接在 Trusted Cloud by S3NS 基礎架構上執行容器。
設定 Cloud SQL 執行個體
- 在您要連線的 Trusted Cloud 專案中啟用 Cloud SQL Admin API (如果尚未啟用):
- 建立 MySQL 適用的 Cloud SQL 執行個體。建議您選擇與 Cloud Run 服務位於相同區域的 Cloud SQL
執行個體位置,以縮短延遲時間、避免部分網路費用,並降低跨區域故障風險。
根據預設,Cloud SQL 會為新執行個體指派公開 IP 位址。 您也可以選擇指派私人 IP 位址。如要進一步瞭解這兩者的連線選項,請參閱「 連線總覽」頁面。
- 建立執行個體時,您可以選擇執行個體的
伺服器憑證 (CA) 階層,然後將該階層設定為執行個體的
serverCaMode
。如要從網頁應用程式連線至執行個體,您必須選取「每個執行個體」CA 選項 (GOOGLE_MANAGED_INTERNAL_CA
) 做為執行個體的伺服器 CA 模式。
設定 Cloud Run
設定 Cloud Run 的步驟取決於指派給 Cloud SQL 執行個體的 IP 位址類型。如果透過直接虛擬私有雲輸出或無伺服器虛擬私有雲存取連接器轉送所有輸出流量,請使用私人 IP 位址。比較這兩種網路輸出方法。公開 IP (預設)
- 確認執行個體有公開 IP 位址。您可以在 Trusted Cloud 控制台中,前往執行個體的「總覽」頁面驗證這項資訊。如需新增公開 IP,請參閱「設定公開 IP」頁面瞭解操作說明。
- 取得執行個體的 INSTANCE_CONNECTION_NAME。您可以在 Trusted Cloud console 中,前往執行個體的「Overview」(總覽) 頁面找到這個值,也可以執行下列
gcloud sql instances describe
指令: 將 INSTANCE_NAME 改成 Cloud SQL 執行個體的名稱。gcloud sql instances describe INSTANCE_NAME
- 取得 Cloud Run 服務的 CLOUD_RUN_SERVICE_ACCOUNT_NAME。您可以在Trusted Cloud 控制台中,找到代管 Cloud Run 服務的專案,然後前往「IAM」IAM頁面查看這個值。您也可以在代管 Cloud Run 服務的專案中執行下列
gcloud run services describe
指令: 替換下列變數:gcloud run services describe CLOUD_RUN_SERVICE_NAME --region CLOUD_RUN_SERVICE_REGION --format="value(spec.template.spec.serviceAccountName)"
- CLOUD_RUN_SERVICE_NAME:Cloud Run 服務的名稱
- CLOUD_RUN_SERVICE_REGION:Cloud Run 服務的區域
-
為 Cloud Run 服務設定服務帳戶。如要連線至 Cloud SQL,請確認服務帳戶具備
Cloud SQL Client
IAM 角色。 - 如要將 Cloud SQL 連線新增至新服務,您必須將服務容器化,並上傳至 Container Registry 或 Artifact Registry。如果尚未建立連線,請參閱這份操作說明,瞭解如何建構及部署容器映像檔。
如果您要連線至設定為共用憑證授權單位 (CA) (
GOOGLE_MANAGED_CAS_CA
) 選項或客戶管理 CA (CUSTOMER_MANAGED_CAS_CA
) 選項的執行個體做為伺服器 CA 模式,請在為服務選取執行環境時,選取第二代執行環境。無論選擇哪種伺服器 CA 模式,都必須使用 Cloud SQL Auth Proxy 第 2 版連線至執行個體。如果服務是在第一代執行環境中執行,則只能連線至以執行個體憑證授權單位 (CA) 選項 (
GOOGLE_MANAGED_INTERNAL_CA
) 做為伺服器 CA 模式設定的 Cloud SQL 執行個體。Cloud Run 的第一代執行環境會嵌入 Cloud SQL 驗證 Proxy 第 1 版。如要進一步瞭解 Cloud SQL Auth Proxy 的 Cloud SQL 連線需求,請參閱使用 Cloud SQL Auth Proxy 的需求。
就像變更任何設定一樣,設定 Cloud SQL 連線的新設定會建立新的 Cloud Run 修訂版本。除非您明確做出更新,變更這項設定,否則後續的修訂版本也會自動取得這個 Cloud SQL 連線。
控制台
-
開始設定服務。如要將 Cloud SQL 連線新增至現有服務,請按照下列步驟操作:
- 在「服務」清單中,按一下所需服務名稱。
- 按一下「編輯及部署新的修訂版本」。
- 啟用連線至 Cloud SQL 執行個體:
- 依序點選「容器」和「設定」。
- 捲動至「Cloud SQL connections」(Cloud SQL 連線)。
- 按一下「新增連線」。
- 如果尚未啟用 Cloud SQL Admin API,請按一下「啟用 Cloud SQL Admin」按鈕。
- 如果要將連線新增至專案中的 Cloud SQL 執行個體,請從選單中選取所需 Cloud SQL 執行個體。
- 如果您使用其他專案的 Cloud SQL 執行個體,請在選單中選取「自訂連線字串」,並以 PROJECT-ID:REGION:INSTANCE-ID 格式輸入完整的執行個體連線名稱。
- 如要刪除連線,請將游標懸停在連線右側,顯示「刪除」 圖示,然後按一下該圖示。
-
按一下 [Create] (建立) 或 [Deploy] (部署)。
指令列
使用下列任何指令之前,請先替換以下項目:
- IMAGE,您要部署的映像檔
- SERVICE_NAME 改為 Cloud Run 服務名稱
-
INSTANCE_CONNECTION_NAME 改成 Cloud SQL 執行個體的執行個體連線名稱或連線名稱清單 (以逗號分隔)。
如要部署新容器,請使用下列指令:
如要更新現有服務,請使用下列指令:gcloud run deploy \ --image=IMAGE \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME
gcloud run services update SERVICE_NAME \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME
Terraform
下列程式碼會建立基本 Cloud Run 容器,並連線至 Cloud SQL 執行個體。
-
輸入
terraform apply
來套用變更。 - 如要驗證變更,請檢查 Cloud Run 服務,依序點選「修訂版本」和「連線」分頁標籤。
私人 IP
如果授權服務帳戶與 Cloud SQL 執行個體所屬的專案不同,請按照下列步驟操作:
- 在兩個專案中啟用 Cloud SQL Admin API。
- 為 Cloud SQL 執行個體所在專案的服務帳戶新增 IAM 權限。
連線至 Cloud SQL
設定 Cloud Run 後,即可連線至 Cloud SQL 執行個體。
公開 IP (預設)
如果是公開 IP 路徑,Cloud Run 會提供加密功能,並透過 Cloud SQL Auth Proxy 以兩種方式連線:
- 透過 Unix 通訊端
- 使用 Cloud SQL 連接器
使用 Secret Manager
Google 建議您使用 Secret Manager 儲存機密資訊,例如 SQL 憑證。您可以使用 Cloud Run 以環境變數形式傳遞密鑰,或以磁碟區形式掛接密鑰。
在 Secret Manager 中建立密鑰後,請使用下列指令更新現有服務:
指令列
gcloud run services update SERVICE_NAME \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME --update-env-vars=INSTANCE_CONNECTION_NAME=INSTANCE_CONNECTION_NAME_SECRET \ --update-secrets=DB_USER=DB_USER_SECRET:latest \ --update-secrets=DB_PASS=DB_PASS_SECRET:latest \ --update-secrets=DB_NAME=DB_NAME_SECRET:latest
Terraform
下列指令會使用 google_secret_manager_secret
和 google_secret_manager_secret_version
建立密鑰資源,安全地保存資料庫使用者、密碼和名稱值。請注意,您必須更新專案運算服務帳戶,才能存取每個密鑰。
更新主要 Cloud Run 資源,加入新的密鑰。
輸入 terraform apply
來套用變更。
範例指令使用密鑰版本 latest,但 Google 建議將密鑰固定為特定版本 SECRET_NAME:v1。
私人 IP
如果是私人 IP 路徑,應用程式會透過虛擬私有雲網路直接連線至執行個體。這個方法會使用 TCP 直接連線至 Cloud SQL 執行個體,而不使用 Cloud SQL 驗證 Proxy。
透過 TCP 連線
使用 Cloud SQL 執行個體的私人 IP 位址做為主機和通訊埠 3306
進行連線。
Python
如要查看網頁應用程式中的程式碼片段,請參閱 GitHub 上的 README。
Java
如要查看網頁應用程式中的這個程式碼片段,請參閱 GitHub 上的 README。
注意:
- INSTANCE_CONNECTION_NAME 應表示為 <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME>
- 使用 ipTypes=PRIVATE 引數會強制 SocketFactory 連線至執行個體相關聯的私人 IP
- 請參閱 pom.xml 檔案的 JDBC 通訊端處理站版本規定。
Node.js
如要查看網頁應用程式中的程式碼片段,請參閱 GitHub 上的 README。
Go
如要查看網頁應用程式中的程式碼片段,請參閱 GitHub 上的 README。
C#
如要查看網頁應用程式中的程式碼片段,請參閱 GitHub 上的 README。
Ruby
如要查看網頁應用程式中的程式碼片段,請參閱 GitHub 上的 README。
PHP
如要查看網頁應用程式中的程式碼片段,請參閱 GitHub 上的 README。
最佳做法和其他資訊
在本機測試應用程式時,可以使用 Cloud SQL Auth Proxy。如需詳細操作說明,請參閱使用 Cloud SQL 驗證 Proxy 的快速入門導覽課程。
您也可以透過 Docker 容器使用 Cloud SQL Proxy 進行測試。
連線集區
資料庫伺服器本身或平台基礎架構可能會捨棄與基礎資料庫的連線。建議使用支援連線集區的用戶端程式庫,自動重新連線中斷的用戶端連線。 如需連線集區的使用範例,請參閱「 管理資料庫連線」頁面。連線限制
Cloud SQL 的 MySQL 和 PostgreSQL 版本都會對並行連線設下上限,這些上限可能會因所選資料庫引擎而異 (請參閱「Cloud SQL 配額和限制」頁面)。Cloud Run 容器執行個體會將 Cloud SQL 資料庫連線數限制在 100 個以內。Cloud Run 服務或工作的每個執行個體與資料庫之間的連線數不得超過 100 個。如果擴充服務或工作,每項部署作業的總連線數可隨之增加。
您可以使用連線集區,限制每個執行個體使用的連線數量上限。如需如何限制連線數量的詳細範例,請參閱「 管理資料庫連線」頁面。