從 Cloud Run 連線至 PostgreSQL 適用的 Cloud SQL

瞭解如何使用 Google Cloud 控制台和用戶端應用程式,在 Cloud Run 上部署連結至 PostgreSQL 執行個體的範例應用程式。

假設您及時完成所有步驟,在這個快速入門導覽課程中建立的資源費用通常不到一美元。


如要直接在 Google Cloud 控制台中,按照這項工作的逐步指南操作,請按一下「Guide me」(逐步引導):

「Guide me」(逐步引導)


事前準備

  1. 登入 Google Cloud 帳戶。如果您未曾使用過 Google Cloud,歡迎 建立帳戶,親自體驗實際使用我們產品的成效。新客戶還能獲得價值 $300 美元的免費抵免額,用於執行、測試及部署工作負載。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. 確認您具備完成本快速入門導覽課程所需的權限。
  7. 啟用必要的 Cloud API,以便在 Cloud Run 執行 Cloud SQL 範例應用程式。

    控制台

    按一下「Enable APIs」(啟用 API),啟用本快速入門導覽課程所需的 API。

    啟用 API

    這會啟用下列 API:

    • Compute Engine API
    • Cloud SQL Admin API
    • Cloud Run API
    • Container Registry API
    • Cloud Build API
    • Service Networking API

    gcloud

    點選下方按鈕,即可開啟 Cloud Shell,直接透過瀏覽器使用指令列存取 Google Cloud 資源。您可以使用 Cloud Shell 執行本快速入門導覽課程中的 gcloud 指令。

    開啟 Cloud Shell

    使用 Cloud Shell 執行下列 gcloud 指令:

    gcloud services enable compute.googleapis.com sqladmin.googleapis.com run.googleapis.com \
    artifactregistry.googleapis.com cloudbuild.googleapis.com servicenetworking.googleapis.com

    這個指令會啟用下列 API:

    • Compute Engine API
    • Cloud SQL Admin API
    • Cloud Run API
    • Artifact Registry API
    • Cloud Build API
    • Service Networking API

必要的角色

如要取得所需權限,在 Cloud Run 部署連結至 PostgreSQL 執行個體的範例應用程式,請要求管理員在您要使用的專案中,授予您下列 IAM 角色:

  • 建立或刪除 Artifact Registry 存放區:Artifact Registry 寫入者 (roles/artifactregistry.writer)
  • 建立或刪除執行個體、資料庫和使用者:Cloud SQL 管理員角色 (roles/cloudsql.admin)。
  • 建立或刪除 IAM 服務帳戶:服務帳戶管理員角色 (roles/iam.serviceAccountAdmin)。
  • 建立連線:
  • 查看物件和中繼資料:Storage 物件檢視者 (roles/storage.objectViewer)
  • 提供管理專案政策的權限:專案 IAM 管理員 (roles/resourcemanager.projectIamAdmin)。
  • 具備所有 Cloud Run 資源的讀取和寫入權限:Cloud Run 開發人員 (roles/run.developer)。
  • 部署及管理 Cloud Run 原始碼部署的資源:Cloud Run 原始碼開發人員 (roles/run.sourceDeveloper)。
  • 如要允許公開存取:Cloud Run 管理員 (roles/run.admin)。
  • 如要以服務帳戶身分執行作業:服務帳戶使用者 (roles/iam.serviceAccountUser)。

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

設定 Cloud SQL

建立 Cloud SQL 執行個體

建立資料庫

請按照下列步驟建立資料庫:

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。

    前往「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面

  2. 選取「quickstart-instance」。
  3. 在 SQL 導覽選單中,選取「資料庫」。
  4. 按一下「 建立資料庫」。
    1. 在「New database」(新增資料庫) 對話方塊的「Database name」(資料庫名稱) 欄位中,輸入 quickstart-db。
    2. 點選「建立」。

gcloud

執行 gcloud sql databases create 指令建立資料庫。

gcloud sql databases create quickstart-db --instance=quickstart-instance

新增使用者

請按照下列步驟建立使用者:

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。

    前往「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面

  2. 點選執行個體名稱,開啟執行個體的「總覽」頁面。
  3. 在 SQL 導覽選單中,選取「使用者」。
  4. 按一下「新增使用者帳戶」。
  5. 在「Add a user account to instance instance_name」(在執行個體「instance_name」中新增使用者帳戶) 頁面中,新增下列資訊:
    • 在「Username」欄位中輸入 quickstart-user
    • 在「Password」(密碼) 欄位中,指定資料庫使用者的密碼。請記下這個值,以便在本快速入門導覽課程的後續步驟中使用。
  6. 按一下「新增」。

gcloud

執行下列指令前,請先完成下列替換作業:

  1. 將 PASSWORD 替換為資料庫使用者的密碼。 請記下這個值,以便在本快速入門導覽課程的後續步驟中使用。

執行 gcloud sql users create 指令來建立使用者。

gcloud sql users create quickstart-user \
--instance=quickstart-instance \
--password=PASSWORD

Cloud SQL 的使用者名稱長度限制與地端部署 PostgreSQL 相同。

將範例應用程式部署至 Cloud Run

設定 Cloud Run 服務帳戶

設定 Cloud Run 使用的 Compute Engine 預設服務帳戶,使其具備 Cloud SQL 用戶端和Storage 物件檢視者角色。

控制台

  1. 前往 Google Cloud 控制台的「IAM Service accounts」(IAM 服務帳戶) 頁面。

    前往「IAM Service accounts」(IAM 服務帳戶) 頁面

  2. 按一下服務帳戶旁的「Actions」(動作) 選單,然後點選「Manage access」(管理存取權)。
  3. 按一下「Add another role」(新增其他角色),然後在「Role」(角色) 下拉式選單中,找到並選取「Cloud SQL Client」(Cloud SQL 用戶端) (roles/cloudsql.client)。
  4. 按一下「Add another role」(新增其他角色),然後在「Role」(角色) 下拉式選單中,找到並選取「Storage Object Viewer」(Storage 物件檢視者) (roles/storage.objectViewer)。
  5. 按一下 [儲存]。

gcloud

  1. 執行下列 gcloud 指令,取得專案的服務帳戶清單:
    gcloud iam service-accounts list
  2. 複製 Compute Engine 預設服務帳戶的電子郵件地址。
  3. 執行下列指令,將 Cloud SQL 用戶端角色新增至 Compute Engine 預設服務帳戶:
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
      --role="roles/cloudsql.client"
  4. 執行下列指令,將 Storage 物件檢視者角色新增至 Compute Engine 預設服務帳戶:
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
      --role="roles/storage.objectViewer"

設定 Cloud SQL 範例應用程式

有了 Cloud SQL 執行個體、資料庫和具備用戶端權限的服務帳戶,您現在可以設定範例應用程式,連線至 Cloud SQL 執行個體。

部署範例應用程式

將範例部署至 Cloud Run 的步驟,取決於您指派給 Cloud SQL 執行個體的 IP 位址類型。

映像檔連線方法會因設定的環境變數而異。

  • 如要使用 TCP 連線,請設定 INSTANCE_HOST 環境變數的值。這個連線方法會採用設為環境變數的憑證和通訊埠。
  • 如要使用 Unix 通訊端連線,請設定 INSTANCE_UNIX_SOCKET 環境變數的值。

    請勿設定 INSTANCE_HOST 環境變數的值。

    Java 原生不支援 Unix 通訊端。如果應用程式是以 Java 編寫,則必須使用 Cloud SQL Java 連接器。

  • 如要使用其中一個 Cloud SQL 語言連接器連線,請設定 INSTANCE_CONNECTION_NAME 環境變數的值。

    請勿設定下列環境變數的值:

    • INSTANCE_HOST
    • INSTANCE_UNIX_SOCKET
    • DB_PORT
    • DB_ROOT_CERT
    • DB_CERT
    • DB_KEY
    Cloud SQL 語言連接器已使用 Cloud SQL Auth Proxy 伺服器提供安全連線,該伺服器會透過通訊埠 3307 建立與 Cloud SQL 的連線,因此不會使用這些值。

清除所用資源

為了避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請按照下列步驟操作。

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。

    前往「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面

  2. 選取 quickstart-instance 執行個體,開啟「Instance details」(執行個體詳細資料) 頁面。
  3. 在頁面頂端的圖示列中,按一下 [刪除]。
  4. 在「Delete instance」(刪除執行個體) 對話方塊中輸入 quickstart-instance,然後按一下「Delete」(刪除) 即可刪除執行個體。
  5. 前往 Google Cloud 控制台的「Cloud Run」頁面。

    前往 Cloud Run

  6. 選取「quickstart-service」服務名稱旁的核取方塊。
  7. 按一下 Cloud Run 頁面頂端的「Delete」(刪除)。

選用清理步驟

如果您不使用指派給 Compute Engine 服務帳戶的 Cloud SQL 用戶端角色,可以將其移除。

  1. 前往 Google Cloud 控制台的「Service accounts」(服務帳戶) 頁面。

    前往「IAM」頁面

  2. 按一下名為「Compute Engine default service account」(Compute Engine 預設服務帳戶) 的 IAM 帳戶編輯圖示 (看起來像鉛筆)。
  3. 刪除「Cloud SQL 用戶端」角色。
  4. 按一下 [儲存]。

如果您不打算使用在本快速入門導覽課程中啟用的 API,可以將其停用。

  • 本快速入門導覽課程中啟用的 API:
    • Compute Engine API
    • Cloud SQL Admin API
    • Cloud Run API
    • Container Registry API
    • Cloud Build API
  1. 前往 Google Cloud 控制台的「APIs」頁面。

    前往 API 頁面

  2. 選取要停用的 API,然後按一下「停用 API」按鈕。

後續步驟

您可以根據需求,進一步瞭解如何建立 Cloud SQL 執行個體。

您也可以瞭解如何為 Cloud SQL 執行個體建立 PostgreSQL 使用者和資料庫。

如要進一步瞭解定價,請參閱「PostgreSQL 適用的 Cloud SQL 定價」。

請點選下列連結瞭解更多資訊:

  • 使用公開 IP 位址設定 Cloud SQL 執行個體。
  • 使用私人 IP 位址設定 Cloud SQL 執行個體。

此外,您也可以瞭解如何從其他 Google Cloud 應用程式連線至 Cloud SQL 執行個體: