从 Google Kubernetes Engine 连接到 Cloud SQL for MySQL

本页面介绍如何使用 Google Cloud 控制台和客户端应用在 Google Kubernetes Engine (GKE) 上部署连接到 MySQL 实例的示例应用。如果您及时完成本快速入门中的步骤(包括清理),那么在此期间所创建资源的费用通常不会超过 1 美元。

准备工作

  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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. 启用在 GKE 上运行 Cloud SQL 示例应用所需的 Google Cloud API。

    点击启用 API 以启用本快速入门所需的 API。

    启用 API

    这将启用以下 API:

    • Compute Engine API
    • Cloud SQL Admin API
    • Google Kubernetes Engine API
    • Artifact Registry API
    • Cloud Build API

    点击以下按钮打开 Cloud Shell,以通过命令行直接在浏览器中访问 Google Cloud 资源。 Cloud Shell 可用于运行本快速入门中介绍的 gcloud 命令。

    打开 Cloud Shell

    按照以下方式使用 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 实例

公共 IP

创建具有公共 IP 地址的实例

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 点击创建实例
  3. 点击MySQL
  4. 实例 ID 部分输入 quickstart-instance
  5. 为根用户输入密码。保存此密码以供将来使用。
  6. 选择区域和地区可用性中点击单个区域选项。
  7. 点击并展开显示配置部分。
  8. 机器类型下拉菜单中,选择轻量级
  9. 点击创建实例,然后等待实例初始化并启动。

创建具有公共 IP 地址的实例

按照以下方式运行 gcloud sql instances create 命令之前,请将 DB_ROOT_PASSWORD 替换为数据库用户的密码。

(可选)修改以下参数的值:

  • --database_version:数据库引擎类型和版本。 如果未指定,则使用 API 默认值。 请参阅 gcloud 数据库版本文档,以查看当前可用版本。
  • --cpu:机器中所需的核心数。
  • --memory:表示机器所需内存数量的整数值。应该提供大小单位(例如 3072MB 或 9GB)。如果未指定单位,则假定为 GB。
  • --region:实例的区域位置(例如 asia-east1、us-east1)。如果未指定,则使用默认值 us-central。 请参阅区域的完整列表。

运行 gcloud sql instances create 命令以创建 Cloud SQL 实例。

gcloud sql instances create quickstart-instance \
--database-version=MYSQL_8_0 \
--cpu=1 \
--memory=4GB \
--region=us-central1 \
--root-password=DB_ROOT_PASSWORD

创建具有专用 IP 地址且启用了 SSL 的实例

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 点击创建实例
  3. 点击MySQL
  4. 实例 ID 部分输入 quickstart-instance
  5. 为根用户输入密码。保存此密码以供将来使用。
  6. 选择区域和地区可用性中点击单个区域选项。
  7. 点击并展开显示配置选项
  8. 对于机器类型,选择轻量级
  9. 连接中,选择专用 IP
  10. 网络下拉菜单中,选择默认
  11. 如果您看到显示需要专用服务访问通道连接的对话框,请点击设置连接按钮。
    • 启用 Service Networking API 对话框中,点击启用 API 按钮。
    • 分配 IP 范围对话框中,选择使用自动分配的 IP 范围,然后点击继续
    • 创建连接对话框中,点击创建连接
  12. 取消选中公共 IP 复选框以创建仅使用专用 IP 地址的实例。
  13. 点击创建实例,然后等待实例初始化并启动。
  14. 点击连接
  15. 安全性部分中,选择仅允许 SSL 连接以启用 SSL 连接。
  16. 启用 SSL 对话框中,点击启用并重启,然后等待实例重启。

创建具有专用 IP 地址且启用了 SSL 的实例

创建具有专用 IP 地址的实例只需要配置专用服务访问通道,即可启用来自其他 Google Cloud 服务(如 GKE)的连接。

  1. 运行 gcloud compute addresses create 命令为专用服务访问通道连接分配 IP 范围:
  2. gcloud compute addresses create google-managed-services-default \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=16 \
    --description="peering range for Google" \
    --network=default
  3. 运行 gcloud services vpc-peerings connect 命令以创建专用服务访问通道连接:
  4. gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=google-managed-services-default \
    --network=default
  5. 在按照以下方式运行 gcloud sql instances create 命令来创建实例之前,请将 DB_ROOT_PASSWORD 替换为数据库用户的密码。

  6. (可选)修改以下参数的值:

    • --database_version:数据库引擎类型和版本。 如果未指定,则使用 API 默认值。如需查看当前可用版本的列表,请参阅 gcloud 数据库版本
    • --cpu:机器中的核心数。
    • --memory:指示机器要包括多少内存的整数。可以提供大小单位(例如 3072MB 或 9GB)。如果未指定单位,则假定为 GB。
    • --region:实例的区域位置(例如 asia-east1、us-east1)。如果未指定,则使用默认值 us-central1。 请参阅区域的完整列表。

    运行 gcloud sql instances create 命令以创建具有专用 IP 地址的 Cloud SQL 实例。

     gcloud beta sql instances create quickstart-instance \
    --database-version=MYSQL_8_0 \
    --cpu=1 \
    --memory=4GB \
    --region=us-central1 \
    --root-password=DB_ROOT_PASSWORD \
    --no-assign-ip \
    --network=default
  7. 运行 gcloud sql instances patch 命令以仅允许此实例建立 SSL 连接。

  8. gcloud sql instances patch quickstart-instance --require-ssl

创建数据库

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 选择 quickstart-instance
  3. 从 SQL 导航菜单中选择数据库
  4. 点击创建数据库
    1. 创建数据库对话框的数据库名称字段中,输入 quickstart-db。保留字符集和排序规则的值。
    2. 点击创建

运行 gcloud sql databases create 命令以创建数据库。

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

创建用户

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 从 SQL 导航菜单中选择用户
  4. 点击添加用户账号
    • 将一个用户账号添加到实例 instance_name 页面中,添加以下信息:
      • 用户名:设为 quickstart-user
      • 密码:指定数据库用户的密码。记下此密码,以便在本快速入门的后续步骤中使用。
      • 主机名部分的默认值为允许任何主机,这意味着用户可以从任何 IP 地址连接。

        (可选)选择按 IP 地址或地址范围限制主机,然后在主机部分中输入 IP 地址或地址范围。然后,用户只能从指定的一个或多个 IP 地址进行连接。

  5. 点击添加

按照以下方式运行命令之前,请将 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 集群

  1. 在 Google Cloud 控制台中,转到 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 点击创建
  3. 点击 GKE Autopilot 的配置
  4. 对于名称,请将集群名称指定为 gke-cloud-sql-quickstart
  5. 点击创建

运行 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 实例。本快速入门中的其余步骤需要使用 gcloudkubectl 命令行工具。这两个工具都已预安装在 Cloud Shell 中。

  1. 在 Cloud Shell Editor 中,打开示例应用的源代码。

    打开 Cloud Shell Editor
  2. 在“Open in Cloud Shell”对话框中,点击确认下载示例应用代码,然后在 Cloud Shell Editor 中打开示例应用目录。
  1. 在 Cloud Shell Editor 中,打开示例应用的源代码。
    打开 Cloud Shell Editor
  2. 在“Open in Cloud Shell”对话框中,点击确认下载示例应用代码,然后在 Cloud Shell Editor 中打开示例应用目录。
  1. 在 Cloud Shell Editor 中,打开示例应用的源代码。
    打开 Cloud Shell Editor
  2. 在“Open in Cloud Shell”对话框中,点击确认下载示例应用代码,然后在 Cloud Shell Editor 中打开示例应用目录。
  1. 在 Cloud Shell Editor 中,打开示例应用的源代码。
    打开 Cloud Shell Editor
  2. 在“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

设置服务账号

创建并配置供 GKE 使用的 Google Cloud 服务账号,使其具有包含连接到 Cloud SQL 的权限的 Cloud SQL Client 角色。
  1. 按照以下方式运行 gcloud iam service-accounts create 命令来创建新的服务账号:
    gcloud iam service-accounts create gke-quickstart-service-account \
      --display-name="GKE Quickstart Service Account"
  2. 按照以下方式运行 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"
  3. 示例应用使用日志记录功能,因此请按如下所示运行 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"
  4. 服务账号必须能够从 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 服务账号,然后使用 Workload Identity Federation for GKE 将其绑定到 Google Cloud 服务账号,从而将其配置为有权访问 Cloud SQL。
  1. 创建 Kubernetes 服务账号:
    1. 在 Cloud Shell Editor 中更新 service-account.yaml 文件。将 <YOUR-KSA-NAME> 替换为 ksa-cloud-sql
    2. 按照以下方式在 Cloud Shell 中运行 kubectl apply 命令:
      kubectl apply -f service-account.yaml
  2. 按照以下方式运行 gcloud iam service-accounts add-iam-policy-binding 命令以启用服务账号和 Kubernetes 服务账号的 IAM 绑定。 Google Cloud 进行以下替换:
    • 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
  3. 按照以下方式运行 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

配置 Secret

按照以下方式运行 kubectl create secret generic 命令,为示例应用要使用的数据库、用户和用户密码创建 Kubernetes Secret。每个 Secret 的值均基于本快速入门前面的步骤中指定的值。 将 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

构建示例应用

  1. 在 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"
  2. 按照以下方式在 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 .
  1. 在 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"
  2. 按照以下方式在 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
  1. 在 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"
  2. 按照以下方式在 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 .
  1. 在 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"
  2. 按照以下方式在 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 .

部署示例应用

公共 IP

示例应用配置完成后,您现在可以部署示例应用。

部署的示例应用将使用以 Kubernetes Sidecar 模式运行的 Cloud SQL 代理连接到 Cloud SQL 实例。Sidecar 模式的实现方式是使用一个额外的容器来部署工作负载,该容器与示例应用的容器共享同一个 Kubernetes pod。

  1. 通过运行 gcloud sql instances describe 命令获取 Cloud SQL 实例连接名称:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. 在 Cloud Shell Editor 中更新 deployment.yaml 文件。进行以下替换:
    • <YOUR_KSA_NAME>ksa-cloud-sql
    • <LOCATION>us-central1
    • <YOUR_PROJECT_ID> 替换为项目 ID。
    • <YOUR-DB-SECRET>gke-cloud-sql-secrets
    • <INSTANCE_CONNECTION_NAME> 替换为从上一步的 gcloud 命令检索到的 Cloud SQL 实例连接名称。格式为 project_id:region:instance_name。您也可以在 Cloud SQL 实例概览页面中找到实例连接名称。
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            # This project uses environment variables to determine
            # how you would like to run your application
            # To use the Go Connector (recommended) - use INSTANCE_CONNECTION_NAME (proj:region:instance)
            # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1)
            # To use Unix, use INSTANCE_UNIX_SOCKET (e.g., /cloudsql/proj:region:instance)
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"
            # For Automatic IAM Authentication with the Go Connector
            # use DB_IAM_USER instead of DB_USER (recommended)
            # You may also remove the DB_PASS environment variable if
            # you use Automatic IAM Authentication
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          # If you are using the Go Connector (recommended), you can
          # remove cloud-sql-proxy (everything below this line)
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL Proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. 按照以下方式在 Cloud Shell 中运行 kubectl apply 命令以部署示例应用:
    kubectl apply -f deployment.yaml
  4. 按照以下方式运行 kubectl apply 命令在部署前端添加负载均衡器,以便您可以通过互联网访问它:
    kubectl apply -f service.yaml
  5. 按照以下方式运行 kubectl get 命令以获取服务详情:
    kubectl get services
  6. 外部 IP 地址在服务详细信息中变得可用之后,复制该地址,这可能需要几分钟的时间。
  7. 查看已部署的示例应用。打开一个浏览器窗口并访问 Service 的外部 IP 地址。

    查看已部署的示例应用

已部署的示例应用使用 Cloud SQL Java 连接器连接到您的 Cloud SQL 实例。

  1. 通过运行 gcloud sql instances describe 命令获取 Cloud SQL 实例连接名称:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. 在 Cloud Shell Editor 中更新 deployment.yaml 文件。进行以下替换:
    • <YOUR_KSA_NAME>ksa-cloud-sql
    • <LOCATION>us-central1
    • <YOUR_PROJECT_ID> 替换为项目 ID。
    • <YOUR-DB-SECRET>gke-cloud-sql-secrets
    • <INSTANCE_CONNECTION_NAME> 替换为从上一步的 gcloud 命令检索到的 Cloud SQL 实例连接名称。格式为 project_id:region:instance_name。您也可以在 Cloud SQL 实例概览页面中找到实例连接名称。
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          # For more information about using Kubernetes service accounts see: 
          # https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts
          serviceAccountName: <YOUR-KSA-NAME> # TODO(developer): replace this value.
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            - name: INSTANCE_CONNECTION_NAME
              value: <INSTANCE_CONNECTION_NAME>
            - name: DB_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"  
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
    
  3. 按照以下方式在 Cloud Shell 中运行 kubectl apply 命令以部署示例应用:
    kubectl apply -f deployment.yaml
  4. 按照以下方式运行 kubectl apply 命令在部署前端添加负载均衡器,以便您可以通过互联网访问它:
    kubectl apply -f service.yaml
  5. 按照以下方式运行 kubectl get 命令以获取服务详情:
    kubectl get services
  6. 外部 IP 地址在服务详细信息中变得可用之后,复制该地址,这可能需要几分钟的时间。
  7. 查看已部署的示例应用。打开一个浏览器窗口并访问 Service 的外部 IP 地址。

    查看已部署的示例应用

部署的示例应用将使用以 Kubernetes Sidecar 模式运行的 Cloud SQL 代理连接到 Cloud SQL 实例。Sidecar 模式的实现方式是使用一个额外的容器来部署工作负载,该容器与示例应用的容器共享同一个 Kubernetes pod。

  1. 通过运行 gcloud sql instances describe 命令获取 Cloud SQL 实例连接名称:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. 在 Cloud Shell Editor 中更新 deployment.yaml 文件。进行以下替换:
    • <YOUR_KSA_NAME>ksa-cloud-sql
    • <LOCATION>us-central1
    • <YOUR_PROJECT_ID> 替换为项目 ID。
    • <YOUR-DB-SECRET>gke-cloud-sql-secrets
    • <INSTANCE_CONNECTION_NAME> 替换为从上一步的 gcloud 命令检索到的 Cloud SQL 实例连接名称。格式为 project_id:region:instance_name。您也可以在 Cloud SQL 实例概览页面中找到实例连接名称。
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"  
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy 
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. 按照以下方式在 Cloud Shell 中运行 kubectl apply 命令以部署示例应用:
    kubectl apply -f deployment.yaml
  4. 按照以下方式运行 kubectl apply 命令在部署前端添加负载均衡器,以便您可以通过互联网访问它:
    kubectl apply -f service.yaml
  5. 按照以下方式运行 kubectl get 命令以获取服务详情:
    kubectl get services
  6. 外部 IP 地址在服务详细信息中变得可用之后,复制该地址,这可能需要几分钟的时间。
  7. 查看已部署的示例应用。打开一个浏览器窗口并访问 Service 的外部 IP 地址。

    查看已部署的示例应用

cloud-sql/mysql/mysql/deployment.yaml

部署的示例应用将使用以 Kubernetes Sidecar 模式运行的 Cloud SQL 代理连接到 Cloud SQL 实例。Sidecar 模式的实现方式是使用一个额外的容器来部署工作负载,该容器与示例应用的容器共享同一个 Kubernetes pod。

  1. 通过运行 gcloud sql instances describe 命令获取 Cloud SQL 实例连接名称:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. 在 Cloud Shell Editor 中更新 deployment.yaml 文件。进行以下替换:
    • <YOUR_KSA_NAME>ksa-cloud-sql
    • <LOCATION>us-central1
    • <YOUR_PROJECT_ID> 替换为项目 ID。
    • <YOUR-DB-SECRET>gke-cloud-sql-secrets
    • <INSTANCE_CONNECTION_NAME> 替换为从上一步的 gcloud 命令检索到的 Cloud SQL 实例连接名称。格式为 project_id:region:instance_name。您也可以在 Cloud SQL 实例概览页面中找到实例连接名称。
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            # This project uses environment variables to determine
            # how you would like to run your application
            # To use the Python Connector (recommended) - use INSTANCE_CONNECTION_NAME (proj:region:instance)
            # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1)
            # To use Unix, use INSTANCE_UNIX_SOCKET (e.g., /cloudsql/proj:region:instance)
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"
            # For Automatic IAM Authentication with the Python Connector
            # use DB_IAM_USER instead of DB_USER (recommended)
            # You may also remove the DB_PASS environment variable if
            # you use Automatic IAM Authentication
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          # If you are using the Python Connector (recommended), you can
          # remove cloud-sql-proxy (everything below this line)
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL Proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy 
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. 按照以下方式在 Cloud Shell 中运行 kubectl apply 命令以部署示例应用:
    kubectl apply -f deployment.yaml
  4. 按照以下方式运行 kubectl apply 命令在部署前端添加负载均衡器,以便您可以通过互联网访问它:
    kubectl apply -f service.yaml
  5. 按照以下方式运行 kubectl get 命令以获取服务详情:
    kubectl get services
  6. 外部 IP 地址在服务详细信息中变得可用之后,复制该地址,这可能需要几分钟的时间。
  7. 查看已部署的示例应用。打开一个浏览器窗口并访问 Service 的外部 IP 地址。

    查看已部署的示例应用

示例应用配置完成后,您现在可以部署示例应用。

部署的示例应用将使用以 Kubernetes Sidecar 模式运行的 Cloud SQL 代理连接到 Cloud SQL 实例。Sidecar 模式的实现方式是使用一个额外的容器来部署工作负载,该容器与示例应用的容器共享同一个 Kubernetes pod。

  1. 通过运行 gcloud sql instances describe 命令获取 Cloud SQL 实例连接名称:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. 在 Cloud Shell Editor 中更新 deployment.yaml 文件。 进行以下替换和修改:
    • <YOUR_KSA_NAME> 替换为 ksa-cloud-sql
    • <LOCATION> 替换为 us-central1
    • <YOUR_PROJECT_ID> 替换为项目 ID。
    • <YOUR-DB-SECRET> 替换为 gke-cloud-sql-secrets
    • <INSTANCE_CONNECTION_NAME> 替换为从上一步的 gcloud 命令检索到的 Cloud SQL 实例连接名称。格式为 project_id:region:instance_name。您也可以在 Cloud SQL 实例概览页面中找到实例连接名称。
    • 启用 Cloud SQL 身份验证代理以使用其专用 IP 地址连接到您的 Cloud SQL 实例。通过移除 # 注释符号及其尾随空格来取消注释 "-ip_address_types=PRIVATE" 标志。未注释的标志应如下所示:
      - "-ip_address_types=PRIVATE"
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            # This project uses environment variables to determine
            # how you would like to run your application
            # To use the Go Connector (recommended) - use INSTANCE_CONNECTION_NAME (proj:region:instance)
            # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1)
            # To use Unix, use INSTANCE_UNIX_SOCKET (e.g., /cloudsql/proj:region:instance)
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"
            # For Automatic IAM Authentication with the Go Connector
            # use DB_IAM_USER instead of DB_USER (recommended)
            # You may also remove the DB_PASS environment variable if
            # you use Automatic IAM Authentication
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          # If you are using the Go Connector (recommended), you can
          # remove cloud-sql-proxy (everything below this line)
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL Proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. 按照以下方式在 Cloud Shell 中运行 kubectl apply 命令以部署示例应用:
    kubectl apply -f deployment.yaml
  4. 按照以下方式运行 kubectl apply 命令在部署前端添加负载均衡器,以便您可以通过互联网访问它:
    kubectl apply -f service.yaml
  5. 按照以下方式运行 kubectl get 命令以获取服务详情:
    kubectl get services
  6. 外部 IP 地址在服务详细信息中变得可用之后,复制该地址,这可能需要几分钟的时间。
  7. 查看已部署的示例应用。打开一个浏览器窗口并访问 Service 的外部 IP 地址。

    查看已部署的示例应用

已部署的示例应用使用 Cloud SQL Java 连接器连接到您的 Cloud SQL 实例。

  1. 通过运行 gcloud sql instances describe 命令获取 Cloud SQL 实例连接名称:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. 在 Cloud Shell Editor 中更新 deployment.yaml 文件。进行以下替换:
    • <YOUR_KSA_NAME>ksa-cloud-sql
    • <LOCATION>us-central1
    • <YOUR_PROJECT_ID> 替换为项目 ID。
    • <YOUR-DB-SECRET>gke-cloud-sql-secrets
    • <INSTANCE_CONNECTION_NAME> 替换为从上一步的 gcloud 命令检索到的 Cloud SQL 实例连接名称。格式为 project_id:region:instance_name。您也可以在 Cloud SQL 实例概览页面中找到实例连接名称。
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          # For more information about using Kubernetes service accounts see: 
          # https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts
          serviceAccountName: <YOUR-KSA-NAME> # TODO(developer): replace this value.
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            - name: INSTANCE_CONNECTION_NAME
              value: <INSTANCE_CONNECTION_NAME>
            - name: DB_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"  
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
    
  3. 按照以下方式在 Cloud Shell 中运行 kubectl apply 命令以部署示例应用:
    kubectl apply -f deployment.yaml
  4. 按照以下方式运行 kubectl apply 命令在部署前端添加负载均衡器,以便您可以通过互联网访问它:
    kubectl apply -f service.yaml
  5. 按照以下方式运行 kubectl get 命令以获取服务详情:
    kubectl get services
  6. 外部 IP 地址在服务详细信息中变得可用之后,复制该地址,这可能需要几分钟的时间。
  7. 查看已部署的示例应用。打开一个浏览器窗口并访问 Service 的外部 IP 地址。

    查看已部署的示例应用

部署的示例应用将使用以 Kubernetes Sidecar 模式运行的 Cloud SQL 代理连接到 Cloud SQL 实例。Sidecar 模式的实现方式是使用一个额外的容器来部署工作负载,该容器与示例应用的容器共享同一个 Kubernetes pod。

  1. 通过运行 gcloud sql instances describe 命令获取 Cloud SQL 实例连接名称:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. 在 Cloud Shell Editor 中更新 deployment.yaml 文件。 进行以下替换和修改:
    • <YOUR_KSA_NAME> 替换为 ksa-cloud-sql
    • <LOCATION> 替换为 us-central1
    • <YOUR_PROJECT_ID> 替换为项目 ID。
    • <YOUR-DB-SECRET> 替换为 gke-cloud-sql-secrets
    • <INSTANCE_CONNECTION_NAME> 替换为从上一步的 gcloud 命令检索到的 Cloud SQL 实例连接名称。格式为 project_id:region:instance_name。您也可以在 Cloud SQL 实例概览页面中找到实例连接名称。
    • 启用 Cloud SQL 身份验证代理以使用其专用 IP 地址连接到您的 Cloud SQL 实例。通过移除 # 注释符号及其尾随空格来取消注释 "-ip_address_types=PRIVATE" 标志。未注释的标志应如下所示:
      - "-ip_address_types=PRIVATE"
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"  
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy 
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. 按照以下方式在 Cloud Shell 中运行 kubectl apply 命令以部署示例应用:
    kubectl apply -f deployment.yaml
  4. 按照以下方式运行 kubectl apply 命令在部署前端添加负载均衡器,以便您可以通过互联网访问它:
    kubectl apply -f service.yaml
  5. 按照以下方式运行 kubectl get 命令以获取服务详情:
    kubectl get services
  6. 外部 IP 地址在服务详细信息中变得可用之后,复制该地址,这可能需要几分钟的时间。
  7. 查看已部署的示例应用。打开一个浏览器窗口并访问 Service 的外部 IP 地址。

    查看已部署的示例应用

cloud-sql/mysql/mysql/deployment.yaml

部署的示例应用将使用以 Kubernetes Sidecar 模式运行的 Cloud SQL 代理连接到 Cloud SQL 实例。Sidecar 模式的实现方式是使用一个额外的容器来部署工作负载,该容器与示例应用的容器共享同一个 Kubernetes pod。

  1. 通过运行 gcloud sql instances describe 命令获取 Cloud SQL 实例连接名称:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. 在 Cloud Shell Editor 中更新 deployment.yaml 文件。 进行以下替换和修改:
    • <YOUR_KSA_NAME> 替换为 ksa-cloud-sql
    • <LOCATION> 替换为 us-central1
    • <YOUR_PROJECT_ID> 替换为项目 ID。
    • <YOUR-DB-SECRET> 替换为 gke-cloud-sql-secrets
    • <INSTANCE_CONNECTION_NAME> 替换为从上一步的 gcloud 命令检索到的 Cloud SQL 实例连接名称。格式为 project_id:region:instance_name。您也可以在 Cloud SQL 实例概览页面中找到实例连接名称。
    • 启用 Cloud SQL 身份验证代理以使用其专用 IP 地址连接到您的 Cloud SQL 实例。通过移除 # 注释符号及其尾随空格来取消注释 "-ip_address_types=PRIVATE" 标志。未注释的标志应如下所示:
      - "-ip_address_types=PRIVATE"
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            # This project uses environment variables to determine
            # how you would like to run your application
            # To use the Python Connector (recommended) - use INSTANCE_CONNECTION_NAME (proj:region:instance)
            # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1)
            # To use Unix, use INSTANCE_UNIX_SOCKET (e.g., /cloudsql/proj:region:instance)
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"
            # For Automatic IAM Authentication with the Python Connector
            # use DB_IAM_USER instead of DB_USER (recommended)
            # You may also remove the DB_PASS environment variable if
            # you use Automatic IAM Authentication
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          # If you are using the Python Connector (recommended), you can
          # remove cloud-sql-proxy (everything below this line)
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL Proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy 
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. 按照以下方式在 Cloud Shell 中运行 kubectl apply 命令以部署示例应用:
    kubectl apply -f deployment.yaml
  4. 按照以下方式运行 kubectl apply 命令在部署前端添加负载均衡器,以便您可以通过互联网访问它:
    kubectl apply -f service.yaml
  5. 按照以下方式运行 kubectl get 命令以获取服务详情:
    kubectl get services
  6. 外部 IP 地址在服务详细信息中变得可用之后,复制该地址,这可能需要几分钟的时间。
  7. 查看已部署的示例应用。打开一个浏览器窗口并访问 Service 的外部 IP 地址。

    查看已部署的示例应用

清理

为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 选择 quickstart-instance 实例以打开实例详情页面。
  3. 在页面顶部的图标栏中,点击删除
  4. 删除实例对话框中,输入 quickstart-instance,然后点击删除以删除该实例。
  5. 在 Google Cloud 控制台中,转到 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  6. 点击 gke-cloud-sql-quickstart 服务名称旁边的复选框。
  7. 点击 Google Kubernetes Engine 页面顶部的删除按钮。

可选的清理步骤

如果您没有使用为本快速入门创建的 Google Cloud 服务账号,则可以将其移除。

  1. 在 Google Cloud 控制台中,转到 IAM 页面。

    转到 IAM

  2. 选中名为 gke-quickstart-service-account 的 IAM 账号对应的复选框。
  3. 点击移除,然后确认移除。

如果您没有使用在本快速入门中启用的 API,则可以将其停用。

  • 在本快速入门中启用的 API:
    • Compute Engine API
    • Cloud SQL Admin API
    • Google Kubernetes Engine API
    • Artifact Registry API
    • Cloud Build API
  1. 在 Google Cloud 控制台中,转到 API 页面。

    转到“API”

  2. 选择您要停用的任何 API,然后点击停用 API 按钮。

后续步骤

您可以根据自己的需求详细了解如何创建 Cloud SQL 实例

您还可以了解如何为 Cloud SQL 实例创建 MySQL 用户数据库

另请参阅 Cloud SQL 价格信息

详细了解以下内容:

此外,您还可以了解如何从其他 Google Cloud 应用连接到 Cloud SQL 实例: