从 Cloud Run 连接到 Cloud SQL for SQL Server

了解如何使用 Google Cloud 控制台和客户端应用在连接到 SQL Server 实例的 Cloud Run 上部署示例应用。

假设您及时完成所有步骤,则本快速入门中所创建资源的费用通常不会超过 1 美元 (USD)。

准备工作

  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 Run 上运行 Cloud SQL 示例应用所需的 Cloud API。

    控制台

    点击启用 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 \
    containerregistry.googleapis.com cloudbuild.googleapis.com servicenetworking.googleapis.com

    此命令会启用以下 API:

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

所需的角色

如需获得在连接到 SQL Server 实例的 Cloud Run 上部署示例应用所需的权限,请让管理员向您授予您要使用的项目的以下 IAM 角色:

  • 创建或删除实例、数据库和用户: Cloud SQL 管理员角色 (roles/cloudsql.admin)。
  • 创建或删除 IAM 服务账号: Service Account Administrator 角色 (roles/iam.serviceAccountAdmin)。
  • 创建连接:
    • Service Networking Admin (roles/servicenetworking.networksAdmin))
    • Service Usage Admin (roles/serviceusage.serviceUsageAdmin)。
  • 查看对象及其元数据: Storage Object Viewer (roles/storage.objectViewer)
  • 提供管理项目政策的权限: Project IAM Admin (roles/resourcemanager.projectIamAdmin)。
  • 拥有对所有 Cloud Run 资源的读取和写入权限: Cloud Run 开发者 (roles/run.developer)。
  • 部署和管理 Cloud Run 源部署资源: Cloud Run Source Developer (roles/run.sourceDeveloper)。
  • 如需允许公开访问,您需要拥有以下权限: Cloud Run Admin (roles/run.admin)。
  • 如需以服务账号身份运行操作: Service Account User (roles/iam.serviceAccountUser)。

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

设置 Cloud SQL

创建 Cloud SQL 实例

创建数据库

请按以下步骤创建数据库:

控制台

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

    转到“Cloud SQL 实例”

  2. 选择 quickstart-instance
  3. 从 SQL 导航菜单中选择数据库
  4. 点击创建数据库
    1. 新建数据库对话框的数据库名称字段中,输入 quickstart-db
    2. 点击创建

gcloud

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

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

将示例应用部署到 Cloud Run

配置 Cloud Run 服务账号

配置 Cloud Run 使用的 Compute Engine 默认服务账号,使其具有 Cloud SQL ClientStorage Object Viewer 角色。

控制台

  1. 在 Google Cloud 控制台中,打开 IAM 服务账号页面。

    前往 IAM 服务账号

  2. 点击服务账号旁边的操作 菜单,然后点击管理访问权限
  3. 点击添加其他角色,然后在角色下拉菜单中找到并选择 Cloud SQL Client (roles/cloudsql.client)。
  4. 点击添加其他角色,然后在角色下拉菜单中找到并选择 Storage Object Viewer (roles/storage.ObjectViewer)。
  5. 点击保存

gcloud

  1. 运行以下 gcloud 命令以获取项目的服务账号列表:
    gcloud iam service-accounts list
  2. 复制 EMAIL Compute Engine 默认服务账号。
  3. 运行以下命令,将 Cloud SQL Client 角色添加到 Compute Engine 默认服务账号
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
      --role="roles/cloudsql.client"
  4. 运行以下命令,将 Storage Object Viewer 角色添加到 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 代理服务器提供安全连接,该服务器通过端口 3307 与 Cloud SQL 建立连接。

清理

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

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

    转到“Cloud SQL 实例”

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

    转到 Cloud Run

  6. 选中 quickstart-service 服务名称旁边的复选框。
  7. 点击 Cloud Run 页面顶部的删除

可选的清理步骤

如果您未使用分配给 Compute Engine 服务账号的 Cloud SQL client 角色,则可以将其移除。

  1. 在 Google Cloud 控制台中,打开服务账号页面。

    进入 IAM

  2. 点击名为 Compute Engine 默认服务账号的 IAM 账号对应的修改图标(铅笔图案)。
  3. 删除 Cloud SQL client 角色。
  4. 点击保存

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

  • 在本快速入门中启用的 API:
    • Compute Engine API
    • Cloud SQL Admin API
    • Cloud Run API
    • Container Registry API
    • Cloud Build API
  1. 在 Google Cloud 控制台中,前往 API 页面。

    转到“API”

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

后续步骤

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

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

如需详细了解价格,请参阅 Cloud SQL for SQL Server 价格

详细了解以下内容:

  • 使用公共 IP 地址配置 Cloud SQL 实例。
  • 使用专用 IP 地址配置 Cloud SQL 实例。

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