從 Google Kubernetes Engine 連線至 MySQL 適用的 Cloud SQL
本頁說明如何使用 Google Cloud 控制台和用戶端應用程式,在 Google Kubernetes Engine (GKE) 上部署連結至 MySQL 執行個體的範例應用程式。假設您及時完成所有步驟 (包括清除作業),本快速入門導覽課程建立的資源通常不會超過一美元。
事前準備
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
啟用必要的 Google Cloud API,以便在 GKE 上執行 Cloud SQL 範例應用程式。
控制台
按一下「Enable APIs」(啟用 API),啟用本快速入門所需的 API。
這會啟用下列 API:
- Compute Engine API
- Cloud SQL Admin API
- Google Kubernetes Engine API
- Artifact Registry API
- Cloud Build API
gcloud
按一下下列按鈕開啟 Cloud Shell,直接在瀏覽器中使用指令列存取 Google Cloud 資源。您可以使用 Cloud Shell 執行本快速入門導覽課程中的
gcloud
指令。使用 Cloud Shell 執行下列
gcloud services enable
指令,啟用本快速入門導覽課程所需的 API:gcloud services enable compute.googleapis.com sqladmin.googleapis.com \ container.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com
這個指令會啟用下列 API:
- Compute Engine API
- Cloud SQL Admin API
- GKE API
- Artifact Registry API
- Cloud Build API
設定 Cloud SQL
建立 Cloud SQL 執行個體
建立資料庫
控制台
-
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
- 選取「
quickstart-instance
」。 - 在 SQL 導覽選單中,選取「資料庫」。
- 按一下 [Create database] (建立資料庫)。
- 在「Create a database」(建立資料庫) 對話方塊的「Database name」(資料庫名稱) 欄位中,輸入
quickstart-db
。保留字元集和定序的值。 - 點選「建立」。
gcloud
執行 gcloud
sql databases create
指令來建立資料庫。
gcloud sql databases create quickstart-db --instance=quickstart-instance
新增使用者
控制台
-
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
- 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
- 在 SQL 導覽選單中選取「使用者」。
- 按一下「新增使用者帳戶」。
- 在「Add a user account to instance instance_name」(在執行個體「instance_name」中新增使用者帳戶) 頁面中,
新增下列資訊:
- 使用者名稱:設為
quickstart-user
- 密碼:指定資料庫使用者的密碼。 請記下這個值,本快速入門導覽課程的後續步驟會用到。
- 在「主機名稱」部分,預設為「允許任何主機」,表示使用者可以從任何 IP 位址連線。
(選用) 選取「依 IP 位址或位址範圍限制主機」, 然後在「主機」區段中輸入 IP 位址或位址範圍。 使用者只能從指定的 IP 位址或位址連線。
- 使用者名稱:設為
- 按一下「新增」。
gcloud
執行下列指令前,請先將 DB_PASS 替換為資料庫使用者的密碼。請記下這個值,本快速入門導覽課程稍後會用到。
執行 gcloud sql users create
指令來建立使用者。
gcloud sql users create quickstart-user \ --instance=quickstart-instance \ --password=DB_PASS
Cloud SQL 的使用者名稱長度限制與地端 MySQL 相同:MySQL 8.0 以上版本為 32 個字元,舊版則為 16 個字元。
建立 GKE 叢集
控制台
-
在 Google Cloud 控制台中,前往「Google Kubernetes Engine」頁面。
- 點選「建立」。
- 按一下 GKE Autopilot 的「設定」。
- 在「Name」(名稱) 中,將叢集名稱指定為
gke-cloud-sql-quickstart
。 - 點選「建立」。
gcloud
執行 gcloud container clusters create-auto
指令來建立叢集。
gcloud container clusters create-auto gke-cloud-sql-quickstart \ --region us-central1
將 Cloud SQL 範例應用程式複製到 Cloud Shell 編輯器
有了 Cloud SQL 執行個體、資料庫和 GKE 叢集,您現在可以複製及設定範例應用程式,連線至 Cloud SQL 執行個體。本快速入門導覽課程的其餘步驟需要使用 gcloud
和 kubectl
指令列工具。Cloud Shell 中已預先安裝這兩項工具。
Go
-
在 Cloud Shell 編輯器中開啟範例應用程式的原始碼。
開啟 Cloud Shell 編輯器 -
在
Open in Cloud Shell
對話方塊中,按一下「確認」,下載範例應用程式程式碼,並在 Cloud Shell 編輯器中開啟範例應用程式目錄。
Java
-
在 Cloud Shell 編輯器中開啟範例應用程式的原始碼。
開啟 Cloud Shell 編輯器 -
在
Open in Cloud Shell
對話方塊中,按一下「確認」,下載範例應用程式程式碼,並在 Cloud Shell 編輯器中開啟範例應用程式目錄。
Node.js
-
在 Cloud Shell 編輯器中開啟範例應用程式的原始碼。
開啟 Cloud Shell 編輯器 -
在
Open in Cloud Shell
對話方塊中,按一下「確認」,下載範例應用程式程式碼,並在 Cloud Shell 編輯器中開啟範例應用程式目錄。
Python
-
在 Cloud Shell 編輯器中開啟範例應用程式的原始碼。
開啟 Cloud Shell 編輯器 -
在
Open in Cloud Shell
對話方塊中,按一下「確認」,下載範例應用程式程式碼,並在 Cloud Shell 編輯器中開啟範例應用程式目錄。
啟用 GKE 叢集
啟用您剛建立的 GKE 叢集,做為本快速入門導覽課程中其餘指令使用的預設叢集。
gcloud container clusters get-credentials
指令,啟用 GKE 叢集。
gcloud container clusters get-credentials gke-cloud-sql-quickstart \ --region us-central1
設定服務帳戶
-
執行下列
gcloud iam service-accounts create
指令,建立新的服務帳戶:gcloud iam service-accounts create gke-quickstart-service-account \ --display-name="GKE Quickstart Service Account"
- 執行下列
gcloud projects add-iam-policy-binding
指令,將「Cloud SQL Client」(Cloud SQL 用戶端) 角色新增至您剛建立的 Google Cloud 服務帳戶。將 YOUR_PROJECT_ID 替換為專案 ID。gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudsql.client"
- 範例應用程式會使用記錄功能,因此請執行下列
gcloud projects add-iam-policy-binding
指令,將「記錄寫入者」角色新增至您剛建立的 Google Cloud 服務帳戶。將 YOUR_PROJECT_ID 替換為專案 ID。gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/logging.logWriter"
- 服務帳戶必須能夠從 Artifactory 存放區提取映像檔,因此請執行
gcloud projects add-iam-policy-binding
指令,將「Artifact Registry Reader」角色新增至服務帳戶。將 YOUR_PROJECT_ID 替換為專案 ID。gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/artifactregistry.reader"
- 建立 Kubernetes 服務帳戶。
- 在 Cloud Shell 編輯器中更新
service-account.yaml
檔案。 將<YOUR-KSA-NAME>
替換為ksa-cloud-sql
。 - 在 Cloud Shell 中執行
kubectl apply
指令,如下所示:kubectl apply -f service-account.yaml
- 在 Cloud Shell 編輯器中更新
- 執行下列
gcloud iam service-accounts add-iam-policy-binding
指令,啟用 Google Cloud 服務帳戶和 Kubernetes 服務帳戶的 IAM 繫結。進行下列替換:- 將 YOUR_PROJECT_ID 替換為專案 ID。
- YOUR_K8S_NAMESPACE,
default
是在 GKE 中建立叢集的預設命名空間。 - YOUR_KSA_NAME 搭配
ksa-cloud-sql
。
gcloud iam service-accounts add-iam-policy-binding \ --role="roles/iam.workloadIdentityUser" \ --member="serviceAccount:YOUR_PROJECT_ID.svc.id.goog[YOUR_K8S_NAMESPACE/YOUR_KSA_NAME]" \ gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com
- 執行下列
kubectl annotate
指令,使用 IAM 繫結註解 Kubernetes 服務帳戶。進行下列替換:- YOUR_KSA_NAME 搭配
ksa-cloud-sql
。 - 將 YOUR_PROJECT_ID 替換為專案 ID。
kubectl annotate serviceaccount \ YOUR_KSA_NAME \ iam.gke.io/gcp-service-account=gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com
- YOUR_KSA_NAME 搭配
設定密鑰
執行下列 kubectl create secret generic
指令,為範例應用程式使用的資料庫、使用者和使用者密碼建立 Kubernetes 密鑰。每個密鑰的值都以本快速入門導覽先前步驟中指定的值為準。將 DB_PASS 替換為您在上一個「建立使用者」快速入門步驟中建立的 quickstart-user
密碼。
kubectl create secret generic gke-cloud-sql-secrets \ --from-literal=database=quickstart-db \ --from-literal=username=quickstart-user \ --from-literal=password=DB_PASS
建構範例應用程式
Go
-
在 Cloud Shell 中執行下列
gcloud artifacts repositories create
指令,在 Artifact Registry 中建立名為 gke-cloud-sql-repo 的存放區,並與叢集位於相同區域。將 YOUR_PROJECT_ID 替換為專案 ID。gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
在 Cloud Shell 中執行下列
gcloud builds submit
指令,建構 Docker 容器並發布至 Artifact Registry。 將 YOUR_PROJECT_ID 替換為專案 ID。gcloud builds submit \ --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
Java
-
在 Cloud Shell 中執行下列
gcloud artifacts repositories create
指令,在 Artifact Registry 中建立名為 gke-cloud-sql-repo 的存放區,並與叢集位於相同區域。將 YOUR_PROJECT_ID 替換為專案 ID。gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
在 Cloud Shell 中執行下列
mvn
指令,建構 Docker 容器並發布至 Artifact Registry。 將 YOUR_PROJECT_ID 替換為專案 ID。mvn clean package com.google.cloud.tools:jib-maven-plugin:2.8.0:build \ -Dimage=us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql \ -DskipTests -Djib.to.credHelper=gcloud
Node.js
-
在 Cloud Shell 中執行下列
gcloud artifacts repositories create
指令,在 Artifact Registry 中建立名為 gke-cloud-sql-repo 的存放區,並與叢集位於相同區域。將 YOUR_PROJECT_ID 替換為專案 ID。gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
在 Cloud Shell 中執行下列
gcloud builds submit
指令,建構 Docker 容器並發布至 Artifact Registry。 將 YOUR_PROJECT_ID 替換為專案 ID。gcloud builds submit \ --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
Python
-
在 Cloud Shell 中執行下列
gcloud artifacts repositories create
指令,在 Artifact Registry 中建立名為 gke-cloud-sql-repo 的存放區,並與叢集位於相同區域。將 YOUR_PROJECT_ID 替換為專案 ID。gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
在 Cloud Shell 中執行下列
gcloud builds submit
指令,建構 Docker 容器並發布至 Artifact Registry。 將 YOUR_PROJECT_ID 替換為專案 ID。gcloud builds submit \ --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
部署範例應用程式
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本頁所用資源的費用,請按照下列步驟操作。
-
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
- 選取
quickstart-instance
執行個體,開啟「Instance details」(執行個體詳細資料) 頁面。 - 在頁面頂端的圖示列中,按一下 [刪除]。
- 在「Delete instance」(刪除執行個體) 對話方塊中輸入
quickstart-instance
,然後按一下「Delete」(刪除) 以刪除執行個體。 -
在 Google Cloud 控制台中,前往「Google Kubernetes Engine」頁面。
- 按一下「
gke-cloud-sql-quickstart
」服務名稱旁邊的核取方塊。 - 按一下 Google Kubernetes Engine 頁面頂端的「刪除」按鈕。
選用清除步驟
如果您未使用為本快速入門指南建立的 Google Cloud 服務帳戶,可以將其移除。
-
前往 Google Cloud 控制台的「IAM」頁面。
- 選取名為「
gke-quickstart-service-account
」的 IAM 帳戶核取方塊。 - 按一下「移除」並確認移除。
如果您未使用本快速入門導覽課程啟用的 API,可以停用這些 API。
- 本快速入門導覽課程中啟用的 API:
- Compute Engine API
- Cloud SQL Admin API
- Google Kubernetes Engine API
- Artifact Registry API
- Cloud Build API
前往 Google Cloud 控制台的「API」頁面。
選取要停用的 API,然後按一下「停用 API」按鈕。
後續步驟
您可以根據需求,進一步瞭解如何建立 Cloud SQL 執行個體。您也可以瞭解如何建立 Cloud SQL 執行個體的 MySQL 使用者和資料庫。
另請參閱 Cloud SQL 定價資訊。
請點選下列連結瞭解更多資訊:
此外,您也可以瞭解如何從其他 Google Cloud 應用程式連線至 Cloud SQL 執行個體: