从 Google Kubernetes Engine 连接到 Cloud SQL for SQL Server
本页面介绍如何使用 Google Cloud 控制台和客户端应用在连接到 SQL Server 实例的 Google Kubernetes Engine (GKE) 上部署示例应用。如果您及时完成本快速入门中的步骤(包括清理),那么在此期间所创建资源的费用通常不会超过 1 美元。
准备工作
- 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. 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
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify 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. 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
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  启用在 GKE 上运行 Cloud SQL 示例应用所需的 Google Cloud API。控制台点击启用 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 实例页面。 
- 选择 quickstart-instance。
- 从 SQL 导航菜单中选择数据库。
- 点击创建数据库。
- 在新建数据库对话框的数据库名称字段中,输入 quickstart-db。
- 点击创建。
gcloud
运行 gcloud
  sql databases create 命令以创建数据库。
gcloud sql databases create quickstart-db --instance=quickstart-instance
创建 GKE 集群
控制台
- 
在 Google Cloud 控制台中,前往 Google Kubernetes Engine 页面。 
- 点击创建。
- 点击 GKE Autopilot 的配置。
- 对于名称,请将集群名称指定为 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 Editor
创建好 Cloud SQL 实例、数据库和 GKE 集群后,您现在可以克隆和配置示例应用,以连接到 Cloud SQL 实例。本快速入门中的其余步骤需要使用 gcloud 和 kubectl 命令行工具。这两个工具都已预安装在 Cloud Shell 中。
Go
- 
        在 Cloud Shell Editor 中,打开示例应用的源代码。
        
 打开 Cloud Shell Editor
- 
         在“Open in Cloud Shell”对话框中,点击确认下载示例应用代码,然后在 Cloud Shell Editor 中打开示例应用目录。
Java
- 
        在 Cloud Shell Editor 中,打开示例应用的源代码。
        
 打开 Cloud Shell Editor
- 
         在“Open in Cloud Shell”对话框中,点击确认下载示例应用代码,然后在 Cloud Shell Editor 中打开示例应用目录。
Node.js
- 
        在 Cloud Shell Editor 中,打开示例应用的源代码。
        
 打开 Cloud Shell Editor
- 
         在“Open in Cloud Shell”对话框中,点击确认下载示例应用代码,然后在 Cloud Shell Editor 中打开示例应用目录。
Python
- 
        在 Cloud Shell Editor 中,打开示例应用的源代码。
        
 打开 Cloud Shell Editor
- 
         在“Open in Cloud Shell”对话框中,点击确认下载示例应用代码,然后在 Cloud Shell Editor 中打开示例应用目录。
启用 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 角色添加到您刚刚创建的 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命令,以将 Log Writer 角色添加到您刚刚创建的 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 Editor 中更新 service-account.yaml文件。将<YOUR-KSA-NAME>替换为ksa-cloud-sql。
- 按照以下方式在 Cloud Shell 中运行 kubectl apply命令:kubectl apply -f service-account.yaml 
 
- 在 Cloud Shell Editor 中更新 
- 按如下所示运行 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 替换为 
配置 Secret
按照以下方式运行 kubectl create secret generic 命令,为示例应用要使用的数据库、用户和用户密码创建 Kubernetes Secret。每个 Secret 的值均基于本快速入门前面的步骤中指定的值。
  
    将 DB_PASS 替换为在创建 Cloud SQL 实例步骤中创建的 sqlserver 根用户的密码。
kubectl create secret generic gke-cloud-sql-secrets \ --from-literal=database=quickstart-db \ --from-literal=username=sqlserver \ --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 实例页面。 
- 选择 quickstart-instance实例以打开实例详情页面。
- 在页面顶部的图标栏中,点击删除。
- 在删除实例对话框中,输入 quickstart-instance,然后点击删除以删除该实例。
- 
在 Google Cloud 控制台中,前往 Google Kubernetes Engine 页面。 
- 点击 gke-cloud-sql-quickstart服务名称旁边的复选框。
- 点击 Google Kubernetes Engine 页面顶部的删除按钮。
可选的清理步骤
如果您没有使用为本快速入门创建的 Google Cloud 服务账号,则可以将其移除。
- 
在 Google Cloud 控制台中,打开服务账号页面。 
- 选中名为 gke-quickstart-service-account的 IAM 账号对应的复选框。
- 点击移除,然后确认移除。
如果您没有使用在本快速入门中启用的 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 实例创建 SQL Server 用户和数据库。
另请参阅 Cloud SQL 价格信息。
详细了解以下内容:
此外,您还可以了解如何从其他 Google Cloud 应用连接到 Cloud SQL 实例:
