Hello Cloud Run
概览
Cloud Run 是一个托管式计算平台,供您运行可通过 HTTP 请求调用的无状态容器。Cloud Run 采用无服务器设计:您不用管理基础架构,因此可全力专注于最重要的工作,即构建出色的应用。
Cloud Run 基于 Knative 构建而成,可让您选择使用 Cloud Run 在全托管式环境中运行容器,或使用 Cloud Run on GKE 在您的 Google Kubernetes Engine 集群中运行容器。
本实验的目标是构建一个简单的容器化应用映像并将其部署到 Cloud Run。
目标
在本实验中,您将学习如何执行以下任务:
- 启用 Cloud Run API。
- 创建一个能够部署为无服务器的无状态容器的简单 Node.js 应用。
- 将您的应用容器化并上传到 Artifact Registry。
- 在 Cloud Run 上部署容器化应用。
- 删除不需要的映像,以免产生额外的存储费用。
设置和要求
对于每个实验,您都会免费获得一个新的 Google Cloud 项目及一组资源,它们都有固定的使用时限。
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:
- 打开 Google Cloud 控制台按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示登录页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。 -
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}} 您也可以在实验详细信息面板中找到用户名。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}} 您也可以在实验详细信息面板中找到密码。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。 -
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
激活 Google Cloud Shell
Google Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。
Google Cloud Shell 提供了可用于访问您的 Google Cloud 资源的命令行工具。
-
在 Cloud 控制台右上角的工具栏中,点击“打开 Cloud Shell”按钮。
-
点击继续。
预配并连接到环境需要一些时间。如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 PROJECT_ID。例如:
gcloud 是 Google Cloud 的命令行工具。它会预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- 您可以通过以下命令列出有效的账号名称:
输出:
输出示例:
- 您可以通过以下命令列出项目 ID:
输出:
输出示例:
参考文档
基本的 Linux 命令
下面是一些非常基本的 Linux 命令的参考列表,这些命令可能包含在本实验的说明或代码块中。
命令 --> | 操作 | . | 命令 --> | 操作 |
---|---|---|---|---|
mkdir(创建目录) | 新建文件夹 | . | cd(更改目录) | 转入另一文件夹 |
ls(列出) | 列出目录中的文件和文件夹 | . | cat(串联) | 在不使用编辑器的情况下读取文件的内容 |
apt-get update | 更新软件包管理器库 | . | ping | 用于测试主机可达性的信号 |
mv(移动) | 移动文件 | . | cp(复制) | 创建文件副本 |
pwd(当前工作目录) | 返回您当前所在的位置 | . | sudo(超级用户的操作) | 授予更高的管理员权限 |
任务 1. 启用 Cloud Run API 并配置 shell 环境
- 在 Cloud Shell 中,启用 Cloud Run API:
- 如果系统提示您授权使用凭据,请进行相应授权。之后,您应看到如下所示的消息提示授权成功:
- 设置计算区域:
- 创建一个 LOCATION 环境变量:
任务 2. 编写示例应用
在此任务中,您将构建一个基于 Express 的简单 NodeJS 应用来响应 HTTP 请求。
- 在 Cloud Shell 中,创建一个名为
helloworld
的新目录,然后切换到该目录:
-
接下来,您需要创建并编辑一些文件。如需修改文件,您可以使用
nano
;也可以在 Cloud Shell 中点击打开编辑器按钮来使用 Cloud Shell 的代码编辑器。 -
创建一个
package.json
文件,然后向该文件添加以下内容:
请务必注意,上面的文件包含一个 start 脚本命令和一个 Express Web 应用框架依赖项。
-
按下 CTRL+X 键,然后按 Y 键和 Enter 键以保存
package.json
文件。 -
接下来,在同一目录中,创建
index.js
文件,并将下面的代码复制到该文件中:
这段代码会创建一个基本 Web 服务器,监听由 PORT
环境变量定义的端口。您的应用现已编写完毕,可以将其容器化并上传到 Artifact Registry。
- 按下 CTRL+X 键,然后按 Y 键和 Enter 键以保存
index.js
文件
任务 3. 容器化该应用并将其上传到 Artifact Registry
- 如需将示例应用容器化,请在与源文件相同的目录中创建一个名为
Dockerfile
的新文件,并向该文件添加下面的内容:
-
按下 CTRL+X 键,然后按 Y 键和 Enter 键以保存
Dockerfile
文件。 -
接下来,在包含
Dockerfile
的目录中运行以下命令,使用 Cloud Build 构建容器映像。(请注意命令中的 $GOOGLE_CLOUD_PROJECT 环境变量,该变量包含您的实验的项目 ID):
Cloud Build 服务可助您在 Google Cloud 上执行构建。该服务会执行一系列构建步骤,每个步骤都在 Docker 容器中运行,以此生成您的应用容器(或其他工件)并将其推送到 Artifact Registry,全部操作只需一个命令即可完成。
推送到注册表后,您会看到一则包含映像名称 (gcr.io/[PROJECT-ID]/helloworld
) 的消息,指示推送成功。该映像存储在 Artifact Registry 中,并可根据需要重复使用。
- 使用下面的命令列出与您的当前项目关联的所有容器映像:
- 将
gcloud
注册为 Google 支持的所有 Docker 注册表的凭据帮助程序:
- 如需通过 Cloud Shell 在本地运行并测试应用,请使用下面的标准
docker
命令启动该应用:
- 在 Cloud Shell 窗口中,点击网页预览并选择在端口 8080 上预览。
这应该会打开一个显示“Hello World!”消息的浏览器窗口。您也可以直接使用 curl localhost:8080
。
任务 4. 部署到 Cloud Run
- 使用下面的命令,添加您的项目 ID,将容器化应用部署到 Cloud Run:
上面命令中的 allow-unauthenticated 标志让您的服务可公开访问。
- 出现提示时,按 Enter 键确认
service name
。
等待部署完成。
成功部署后,命令行中便会显示该服务的网址:
现在,您可以在任何浏览器窗口中打开该服务网址,访问您部署的容器。
恭喜!您刚刚将容器映像中封装的应用部署到了 Cloud Run。Cloud Run 可以对您的容器映像进行自动横向扩容以处理收到的请求,并在需求减少时缩容。在您自己的环境中,您只需为在处理请求期间消耗的 CPU、内存和网络资源付费。
在本实验中,您使用的是 gcloud
命令行;当然,您也可以通过 Cloud 控制台来使用 Cloud Run。
- 从导航菜单的“无服务器”部分中,点击 Cloud Run,系统应该会列出您的
helloworld
服务:
任务 5. 清理
虽然 Cloud Run 不会针对未使用的服务收费,但您可能仍然需要为您构建的容器映像支付存储费用。
- 为避免产生费用,您可以删除您的 Google Cloud 项目,让系统停止对该项目中使用的所有资源计费;您也可以使用下面的命令直接删除您的
helloworld
映像:
-
在系统提示您继续时,输入
Y
并按 Enter 键。 -
如需删除 Cloud Run 服务,请使用下面的命令:
- 在系统提示您继续时,输入
Y
并按 Enter 键。
结束实验
完成实验后,请点击结束实验。Google Cloud Skills Boost 会移除您使用过的资源并为您清理帐号。
系统会提示您为实验体验评分。请选择相应的星级数,输入评论,然后点击提交。
星级数的含义如下:
- 1 颗星 = 非常不满意
- 2 颗星 = 不满意
- 3 颗星 = 一般
- 4 颗星 = 满意
- 5 颗星 = 非常满意
如果您不想提供反馈,可以关闭该对话框。
如果要留言反馈、提出建议或做出更正,请使用支持标签页。
恭喜!
您已完成本实验!
后续步骤/了解详情
如需详细了解如何使用源代码构建适用于 Cloud Run 的无状态 HTTP 容器,以及如何将其推送到 Artifact Registry,请查看下面的内容:
版权所有 2020 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。