使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
从 Cloud Run 连接到 Cloud SQL for PostgreSQL
了解如何使用 Google Cloud 控制台和客户端应用在连接到 PostgreSQL 实例的 Cloud Run 上部署示例应用。
假设您及时完成所有步骤,则本快速入门中所创建资源的费用通常不会超过 1 美元 (USD)。
如需在 Google Cloud 控制台中直接遵循有关此任务的分步指导,请点击操作演示:
操作演示
准备工作
-
登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page,
select or create a Google Cloud project.
Go to project selector
-
确保您的 Google Cloud 项目已启用结算功能。
-
In the Google Cloud console, on the project selector page,
select or create a Google Cloud project.
Go to project selector
-
确保您的 Google Cloud 项目已启用结算功能。
-
启用在 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
设置 Cloud SQL
创建 Cloud SQL 实例
公共 IP
控制台
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
转到“Cloud SQL 实例”
- 点击创建实例。
- 点击选择 PostgreSQL。
- 在实例 ID 字段中,输入
quickstart-instance
。
- 在密码字段中,输入 postgres 用户的密码。保存此密码以供将来使用。
- 在选择区域和可用区的可用性部分中,选择单个可用区。
- 点击显示配置选项菜单。
- 在机器类型下拉列表中,选择轻量级。
- 点击创建实例,然后等待实例初始化并启动。
gcloud
按照以下方式运行命令之前,请将 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=POSTGRES_14 \
--cpu=1 \
--memory=4GB \
--region=us-central \
--root-password=DB_ROOT_PASSWORD
专用 IP
控制台
-
在 Google Cloud 控制台中,转到 VPC 网络页面。
转到 VPC 网络页面
- 选择
default
VPC 网络。
- 选择专用服务连接标签页。
- 选择为服务分配的 IP 范围标签页。
- 点击分配 IP 范围。
- 对于已分配的范围的名称,请指定
google-managed-services-default
。
- 选择 IP 地址范围的自动选项,并将前缀长度指定为
16
。
- 点击分配以创建分配的范围。
- 选择
default
VPC 网络的连到服务的专用连接标签页。
- 点击创建连接以在您的网络与服务提供方之间创建专用连接。
- 对于指定的分配范围,请选择
google-managed-services-default
。
- 点击连接以创建连接。
创建具有专用 IP 地址且启用了 SSL 的实例
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
转到“Cloud SQL 实例”
- 点击创建实例。
- 点击 PostgreSQL。
- 在实例 ID 部分输入
quickstart-instance
。
- 为 postgres 用户输入密码。保存此密码以供将来使用。
- 在选择区域和地区可用性中点击单个区域选项。
- 点击并展开显示配置选项。
- 对于机器类型,选择轻量级。
- 在连接中,选择专用 IP。
- 在网络下拉菜单中,选择默认。
- 取消选中公共 IP 复选框以创建仅使用专用 IP 地址的实例。
- 点击创建实例,然后等待实例初始化并启动。
- 点击连接。
- 在安全性部分中,选择仅允许 SSL 连接以启用 SSL 连接。
- 在仅允许 SSL 连接对话框中,点击保存,然后等待实例重启。
gcloud
-
运行 gcloud compute addresses create
命令以分配 IP 地址范围。
gcloud compute addresses create google-managed-services-default \
--global --purpose=VPC_PEERING --prefix-length=16 \
--description="peering range for Google" --network=default
-
运行 gcloud services vpc-peerings connect
命令以创建与分配的 IP 地址范围的专用连接。将 YOUR_PROJECT_ID 替换为您的项目 ID。
gcloud services vpc-peerings connect --service=servicenetworking.googleapis.com \
--ranges=google-managed-services-default --network=default \
--project=YOUR_PROJECT_ID
创建具有专用 IP 地址且启用了 SSL 的实例
-
按照以下方式运行命令之前,请将 DB_ROOT_PASSWORD 替换为数据库用户的密码。
(可选)修改以下参数的值:
- --database-version:数据库引擎类型和版本。如果未指定,则使用 API 默认值。请参阅 gcloud 数据库版本文档,以查看当前可用版本。
- --cpu:机器中的核心数。
- --memory:指示机器要包括多少内存的整数。可以提供大小单位(例如 3072MB 或 9GB)。如果未指定单位,则假定为 GB。
- --region:实例的区域位置(例如 asia-east1、us-east1)。如果未指定,则使用默认值
us-central1
。
请参阅区域的完整列表。
运行 gcloud
sql instances create
命令以创建具有专用 IP 地址的 Cloud SQL 实例。
gcloud sql instances create quickstart-instance \
--database-version=POSTGRES_14 \
--cpu=1 \
--memory=4GB \
--region=us-central \
--root-password=DB_ROOT_PASSWORD \
--no-assign-ip \
--network=default
运行 gcloud sql instances patch
命令来为实例启用仅允许 SSL 连接。
gcloud sql instances patch quickstart-instance --require-ssl
创建数据库
控制台
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
转到“Cloud SQL 实例”
- 选择
quickstart-instance
。
- 从 SQL 导航菜单中选择数据库。
- 点击创建数据库。
- 在新建数据库对话框的数据库名称字段中,输入
quickstart-db
。
- 点击创建。
创建用户
控制台
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
转到“Cloud SQL 实例”
-
如需打开实例的概览页面,请点击实例名称。
- 从 SQL 导航菜单中选择用户。
- 点击添加用户账号。
- 在将一个用户账号添加到实例 instance_name 页面上,添加以下信息:
- 在用户名字段中,输入
quickstart-user
。
- 在密码字段中,指定数据库用户的密码。记下此密码,以便在本快速入门的后续步骤中使用。
- 点击添加。
gcloud
在运行以下命令之前,请先进行以下替换:
-
将 PASSWORD 替换为您的数据库用户密码。记下此密码,以便在本快速入门的后续步骤中使用。
运行 gcloud sql users create
命令以创建用户。
gcloud sql users create quickstart-user \
--instance=quickstart-instance \
--password=PASSWORD
Cloud SQL 和本地 PostgreSQL 的用户名长度限制一样。
将示例应用部署到 Cloud Run
配置 Cloud Run 使用的服务账号,使其具有可连接到 Cloud SQL 的
Cloud SQL Client 角色。
利用具有客户端权限的 Cloud SQL 实例、数据库和服务账号,您现在可以配置一个示例应用以连接到您的 Cloud SQL 实例。
公共 IP
对于公共 IP 路径,Cloud Run 提供加密功能,并通过 Unix 套接字使用 Cloud SQL Auth 代理进行连接。
专用 IP
对于专用 IP 路径,您的应用会通过无服务器 VPC 访问通道直接连接到您的实例。此方法使用 TCP 套接字直接连接到 Cloud SQL 实例,而无需使用 Cloud SQL Auth 代理。
部署示例应用
将示例部署到 Cloud Run 的步骤取决于您分配给 Cloud SQL 实例的 IP 地址类型。
清理
为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
转到“Cloud SQL 实例”
- 选择
quickstart-instance
实例以打开实例详情页面。
- 在页面顶部的图标栏中,点击删除。
- 在删除实例对话框中,输入
quickstart-instance
,然后点击删除以删除该实例。
-
在 Google Cloud 控制台中,转到 Cloud Run 页面。
转到 Cloud Run
- 选中
quickstart-service
服务名称旁边的复选框。
- 点击 Cloud Run 页面顶部的删除。
可选的清理步骤
如果您未使用分配给 Compute Engine 服务账号的 Cloud SQL client 角色,则可以将其移除。
-
在 Google Cloud 控制台中,转到 IAM 页面。
进入 IAM
- 点击名为 Compute Engine 默认服务账号的 IAM 账号对应的修改图标(铅笔图案)。
- 删除 Cloud SQL client 角色。
- 点击保存。
如果您没有使用在本快速入门中启用的 API,则可以将其停用。
- 在本快速入门中启用的 API:
- Compute Engine API
- Cloud SQL Admin API
- Cloud Run API
- Container Registry API
- Cloud Build API
在 Google Cloud 控制台中,转到 API 页面。
转到“API”
选择您要停用的任何 API,然后点击停用 API 按钮。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-07-26。
[{
"type": "thumb-down",
"id": "hardToUnderstand",
"label":"Hard to understand"
},{
"type": "thumb-down",
"id": "incorrectInformationOrSampleCode",
"label":"Incorrect information or sample code"
},{
"type": "thumb-down",
"id": "missingTheInformationSamplesINeed",
"label":"Missing the information/samples I need"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻译问题"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"易于理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"解决了我的问题"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]