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