本教程适合在构建云应用方面初学乍练的新手,例如希望学习 Google Cloud 运用过程中所涉及的应用开发重要概念的工程师和 Web 开发者。
目标
- 了解基本的 Google Cloud 工具,例如 Google Cloud Console 和
gcloud
。 - 将应用部署到 Cloud Run。
- 使用 Firestore 保留数据。
- 在 Cloud Storage 中存储上传的文件。
- 使用 Google Cloud 的运维套件监控您的应用。
费用
在本文档中,您将使用 Google Cloud 的以下收费组件:
本文档中的说明旨在将您的资源使用量保持在 Google Cloud 的始终免费层级的限制范围内。
您可使用价格计算器根据您的预计使用情况来估算费用。
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
准备工作
- 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.
-
Make sure 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
要在原生模式下创建 Firestore 数据库,请完成以下步骤:
-
在 Cloud Console 中,转到 Firestore 查看器页面。
转到 Firestore 查看器 - 在选择 Cloud Firestore 模式屏幕中,点击选择原生模式。
- 选择 Firestore 数据库的位置。 此位置设置是您的 Cloud 项目的默认 Google Cloud 资源位置。此位置将用于您 Cloud 项目中需要设置位置的 Google Cloud 服务,特别是默认的 Cloud Storage 存储分区和 App Engine 应用。
- 点击创建数据库。
-
在 Cloud Console 中,转到 Firestore 查看器页面。
-
Enable the Cloud Run Admin, Cloud Storage, Cloud Logging, and Error Reporting APIs.
-
克隆示例代码库并在 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 替换为您使用 Cloud Console 创建的 Google Cloud 项目 ID。
Google Cloud CLI 是您从命令行与 Google Cloud 资源进行交互的主要方式。在本教程中,您将使用
gcloud
工具来部署和监控应用。
运行应用
- 如果您已使用 Cloud Shell 且将其配置为使用 Java 11,请将 shell 的 Java 替代组件和环境变量
JAVA_HOME
和PATH
更新为使用 Java 8。 -
切换到
bookshelf/1-cloud-run
目录并运行应用: 将GOOGLE_CLOUD_PROJECT=PROJECT_ID mvn -Plocal clean jetty:run-exploded
PROJECT_ID
替换为您创建的 Google Cloud 项目的 ID。 - 在 Cloud Shell 中,点击网页预览 ,然后选择通过 8080 端口预览。此时浏览器会打开一个新窗口,显示出您运行中的应用。
将应用部署到 Cloud Run
Google Cloud 为您提供了多种应用运行的方案。在此示例中,您要使用 Cloud Run 将可扩容应用部署到 Google Cloud。Cloud Run 不需要您管理服务器,并且会自动扩容以应对流量高峰。
- 使用 Jib 构建映像:
mvn package jib:build -Dimage=gcr.io/PROJECT_ID/bookshelf
将
PROJECT_ID
替换为您创建的 Google Cloud 项目的 ID。 - 部署映像:
将gcloud run deploy bookshelf --image gcr.io/
PROJECT_ID
/bookshelf \ --platform managed --region us-central1 --allow-unauthenticatedPROJECT_ID
替换为您创建的 Google Cloud 项目的 ID。
部署成功后,会按如下格式将端点输出到 Cloud Run 中运行的应用:
https://bookshelf-abcdefghij-uc.a.run.app
之后即可通过此网址(下称 YOUR_CODE_RUN_URL)查看您的应用。只要在网络浏览器中输入此网址,即可查看应用。
使用 Firestore 保留数据
您不能在 Cloud Run 实例中存储信息,因为实例重启时信息会丢失,当新实例创建时该信息已不再存在。所以,您需要一个所有实例都能在其中读写的数据库。
Google Cloud 提供了多种存储数据的方案。在此示例中,您将使用 Firestore 存储每本图书的数据。Firestore 是一种全代管式无服务器 NoSQL 文档数据库,可用于存储和查询数据。Firestore 能够根据您的应用需求自动扩缩,并在不使用时缩减到零个实例。现在添加第一本图书。
- 在网络浏览器中,转到 YOUR_CODE_RUN_URL。
-
要为部署的应用创建图书,请点击添加图书。
- 在书名字段中,输入
Moby Dick
。 - 在作者字段中,输入
Herman Melville
。 -
点击保存。现在您的 Bookshelf 应用有了一个条目。
- 在 Cloud Console 中,点击刷新 refresh 来刷新 Firestore 页面。现在数据显示在 Firestore 中。Bookshelf 应用将每本图书存储为具有唯一 ID 的 Firestore 文档,这些文档都存储在一个 Firestore 集合中。在本教程中,该集合称为 books。
Firestore 使用 Firestore 客户端库存储图书。下面是一个提取 Firestore 文档的示例:
如需详细了解如何使用 Firestore,请参阅向 Firestore 添加数据。
在 Cloud Storage 中存储上传的文件
现在您已经添加了一本图书,接下来该添加图书封面图片。您不能在实例中存储文件,数据库也不适合图片文件。这时,您就得用上 Cloud Storage 了。
Cloud Storage 是 Google Cloud 的主要 Blob 存储库。您可以使用 Cloud Storage 来托管要在 Google Cloud 中共享的应用资源。如需使用 Cloud Storage,您需要创建一个 Cloud Storage 存储分区,这是一个保存数据的基本容器。
- 在 Cloud Console 中,转到 Cloud Storage 浏览器页面。
- 点击创建存储分区。
- 在创建存储分区对话框中输入存储分区的名称:将 Google Cloud 项目 ID 附加到字符串
_bucket
前面,这样名称就显示为YOUR_PROJECT_ID_bucket
。此名称须遵守存储分区名称要求。其他所有字段可以保留默认值。 - 点击创建。
- 创建存储分区后,必须将对象设为可公开访问,以供用户查看。如需将对象设为可公开访问,请参阅公开数据。
-
点击修改图书,然后选择一张图片上传为图书的封面。例如,可以使用图中所示的这张属于公共领域的图片:
-
点击保存。您将被重定向至首页,其中有您 Bookshelf 应用的条目。
Bookshelf 应用会使用 Cloud Storage 客户端库将上传的文件发送到 Cloud Storage。
如需详细了解如何使用 Cloud Storage,请参阅方法指南列表。
使用 Google Cloud 的运维套件监控您的应用
您已经部署了应用,创建并修改了 books 集合。如需为用户监控这些事件,可以使用 Application Performance Management。
使用 Cloud Logging 监控日志
-
在 Google Cloud 中,转到日志浏览器
转到日志浏览器您可以在其中实时监控应用。如果您的应用出现问题,应该首先查看这里。
- 在资源下拉列表中,选择 Cloud Run Revision, bookshelf。
使用 Error Reporting 监控错误
-
在 Cloud Console 中,转到 Error Reporting 页面。
转到“Error Reporting”页面
Error Reporting 可突出显示应用中的错误和异常,您还可以设置相关的提醒。 -
在浏览器中,转到应用中的
/errors
网址。YOUR_CODE_RUN_URL/errors
这会生成一个新的测试异常,并将其发送至 Google Cloud 的运维套件。
-
在 Cloud Console 中,返回到 Error Reporting 页面,很快就可以看到这个新错误。点击自动重新加载,这样就无需手动刷新页面。
清理
为避免因本教程中使用的资源导致您的 Google Cloud 帐号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
删除项目
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.