本教程面向刚开始在云端构建应用(例如 工程师和 Web 开发者)的新手,他们希望了解适用于 的关键应用开发概念 Google Cloud。
目标
- 了解基本 Google Cloud 工具,例如Google Cloud 控制台和
gcloud。 - 将应用部署到 Cloud Run。
- 使用 Firestore 保留数据。
- 在 Cloud Storage 中存储上传的文件。
- 使用 Google Cloud Observability 监控应用。
费用
在本文档中,您将使用 的以下可计费组件: Google Cloud
本文档中的说明旨在将您的资源使用量控制在
的 Google Cloud's “永久免费”
层级限制范围内。
您可使用 价格计算器 根据您的预计使用情况来估算费用。
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud的新用户, 请创建一个账号,以评估我们的产品在 实际场景中的表现。新客户还可以获得 300 美元的免费抵用金,用于 运行、测试和部署工作负载。
-
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 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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
如需在原生模式下创建 Firestore 数据库,请完成以下步骤:
-
在 Google Cloud 控制台中,前往 Firestore 创建数据库 页面。
- 在选择一种 Cloud Firestore 模式 屏幕中,点击选择原生模式 。
- 选择 Firestore 数据库的 位置。此位置设置是您的 默认 Google Cloud 资源位置,用于您的 Google Cloud 项目 。 此位置将用于您的项目中需要设置位置的服务,特别是默认的 Cloud Storage 存储桶和您的 Cloud Run 应用。
- 点击创建数据库 。
-
在 Google Cloud 控制台中,前往 Firestore 创建数据库 页面。
-
启用 Cloud Run API、Cloud Storage JSON API、Cloud Logging API 和 Error Reporting API。
启用 API 所需的角色
如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (
roles/serviceusage.serviceUsageAdmin),该角色包含serviceusage.services.enable权限。了解如何授予 角色。 -
克隆示例代码库并在 Cloud Shell 中打开示例应用:
前往 Cloud Shell利用 Cloud Shell,您可以直接在浏览器中通过命令行访问 Google Cloud 资源。
- 如需将示例代码和更改下载到应用目录,请点击继续 。
-
在 Cloud Shell 中,配置
gcloud工具以使用 您的新 Google Cloud 项目:# Configure gcloud for your project gcloud config set project PROJECT_ID
将 PROJECT_ID 替换为您使用 Google Cloud 控制台创建的 Google Cloud 项目 ID。
Google Cloud CLI 是您从命令行与 Google Cloud 资源进行交互的主要方式。在本教程中,您将使用
gcloud工具来部署和监控 应用。
运行应用
-
运行应用:
将GOOGLE_CLOUD_PROJECT=PROJECT_ID dotnet run
PROJECT_ID替换为您 Google Cloud 创建的项目 ID。 - 在 Cloud Shell 中,点击网页预览 , 然后选择通过 8080 端口预览。此时浏览器会打开一个新窗口,显示出您运行中的应用。
将应用部署到 Cloud Run
Google Cloud 提供了 多种运行代码的选项。在此 示例中,您要使用 Cloud Run 将可伸缩 应用部署到 Google Cloud。通过零服务器管理,Cloud Run 让您专注于编写代码。此外,Cloud Run 会自动扩缩以应对突发的流量高峰。
Dockerfile 告诉 Cloud Run 如何运行您的应用:Dockerfiles 可以 更丰富,但是此配置适用于许多应用。
Cloud Run 通过设置 PORT 环境变量来告诉您的应用要监听哪个端口。Bookshelf 的 Program.cs
包含用于
观察 PORT 变量并监听该端口的代码:
在终端窗口中,使用 gcloud CLI 将应用部署到 Cloud Run:
-
在本地构建应用。
dotnet publish -c Release
-
使用 Cloud Build 来构建 Docker 容器并发布到 Container Registry。
gcloud builds submit --tag gcr.io/PROJECT_ID/bookshelf \ bin/Release/netcoreapp2.1/publish
-
使用 Cloud Run 运行容器。
现在,您可以在gcloud run deploy bookshelf --region us-central1 --platform managed \ --image gcr.io/PROJECT_ID/bookshelf --allow-unauthenticated
gcloud run输出中显示的网址处查看您的应用:Service [bookshelf] revision [bookshelf-00001] has been deployed and is serving traffic at https://bookshelf-lwuhslogjlnpofsxugoc.a.run.app
-
将网址复制到您的网络浏览器以查看该应用。
如需详细了解如何部署到 Cloud Run,请参阅 Cloud Run 文档。
使用 Firestore 保留数据
您不能在 Cloud Run 实例中存储信息,因为实例重启时信息会丢失,当新实例创建时该信息已不再存在。所以,您需要一个所有实例都能在其中读写的数据库。
Google Cloud 提供了 多种存储数据的选项。在此示例中,您将使用 Firestore 存储每本图书的数据。Firestore 是一种全代管式无服务器 NoSQL 文档数据库,可用于存储和查询数据。Firestore 能够根据您的应用需求自动扩缩,并在不使用时缩减到零个实例。现在添加第一本图书。
-
如需为部署的应用创建图书,请点击添加图书。
- 在书名字段中,输入
Moby Dick。 - 在作者字段中,输入
Herman Melville。 -
点击保存。现在您的 Bookshelf 应用有了一个条目。
-
在 Google Cloud 控制台中,前往 Cloud Firestore。 前往 Cloud Firestore
现在数据出现在 Firestore 中。Bookshelf 应用将每本图书存储为具有唯一 ID 的 Firestore 文档,这些文档都存储在一个 Firestore 集合中。在本教程中,该集合称为 books。
Firestore 使用 Firestore 客户端库存储图书。下面是一个提取 Firestore 文档的示例:
如需详细了解如何使用 Firestore,请参阅 向 Firestore 添加数据。
在 Cloud Storage 中存储上传的文件
现在您已经添加了一本图书,接下来该添加图书封面图片。您不能在实例中存储文件,数据库也不适合图片文件。这时,您就得用上 Cloud Storage 了。
Cloud Storage 是主要的 Blob 存储库 Google Cloud。您可以使用 Cloud Storage 来 托管要在中共享的应用资源 Google Cloud。如需使用 Cloud Storage,您需要创建一个 Cloud Storage 存储桶, 这是一个保存数据的基本容器。
- 在 Google Cloud 控制台中,前往 Cloud Storage 浏览器 页面。
- 点击创建存储桶 。
- 在创建存储桶对话框中,通过将
Google Cloud 项目 ID 附加到字符串
_bucket来输入存储桶的名称,使名称看起来像YOUR_PROJECT_ID_bucket。此名称须遵守 存储桶名称要求。其他所有字段可以保留默认值。 - 点击创建。
- 创建存储分区后,必须将对象设为可公开访问,以供用户查看。如需将对象设为可公开访问,请参阅公开数据。
-
点击修改图书,然后选择一张图片上传为图书的封面。例如,可以使用图中所示的这张属于公共领域的图片:
-
点击保存。您将被重定向至首页,其中有您 Bookshelf 应用的条目。
Bookshelf 应用会使用 Cloud Storage 客户端库将上传的文件发送到 Cloud Storage。
如需详细了解如何使用 Cloud Storage,请参阅 Cloud Storage 简介。
使用 Google Cloud Observability 监控应用
您已经部署了应用,创建并修改了 books 集合。如需为用户监控这些事件,可以使用 Application Performance Management。
使用 Cloud Logging 监控日志
-
在 Google Cloud中,前往 Logs Explorer
前往 Logs Explorer您可以在其中实时监控应用。如果您的应用出现问题,应该首先查看这里。
- 在资源下拉列表中,选择 Cloud Run Revision, bookshelf。
使用 Error Reporting 监控错误
-
在 Google Cloud 控制台中,前往 Error Reporting 页面。
前往 Error Reporting 页面
Error Reporting 可突出显示应用中的错误和异常, 您还可以设置相关的提醒。 -
在浏览器中,转到应用中的
/Home/Throw网址。
例如,如果您的应用托管在 https://bookshelf-lwuhslogjlnpofsxugoc.a.run.app 中, 则转到 https://bookshelf-lwuhslogjlnpofsxugoc.a.run.app/Home/Throw。此操作会生成一个新的测试异常并将其发送至 Google Cloud Observability。
-
在 Google Cloud 控制台中,返回到 Error Reporting 页面,片刻之后, 新错误就会显示出来。点击自动重新加载 ,这样就无需手动刷新页面。
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
删除项目
- 在 Google Cloud 控制台中,前往 管理资源 页面。
- 在项目列表中,选择要删除的项目,然后点击删除。
- 在对话框中输入项目 ID,然后点击 关闭以删除项目。