访问 700 多个实验和课程

Hello Cloud Run [APPRUN] (AWS)

实验 1 小时 universal_currency_alt 5 个点数 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

您最近受聘于一家 IT 企业,担任云开发者。该企业使用 Google Cloud 作为其主要云服务提供商 (CSP)。您的任务是在云中构建无服务器、无状态的 Web 应用。为此,您需要采用 Google Cloud 提供的 Cloud Run 服务。 您关心的方面包括:

  • 启用 Cloud Run API
  • 容器映像存储
  • 部署无服务器容器化应用
  • 降低成本的最佳实践

您在上一家公司使用的是 AWS,因此,您知道 AWS Fargate 能够以无服务器方式配置容器化环境。通过用 AWS Fargate 处理容器启动、扩缩和监控任务,开发者能够更专注于应用代码,从而更轻松地部署、管理和扩缩容器化应用。此外,AWS Fargate 还支持为 Amazon Elastic Container Service (Amazon ECS) 或 Amazon Elastic Kubernetes Service (Amazon EKS) 部署容器。这意味着开发者可以选择最适合其需求的编排选项。

基于 AWS Fargate 的无服务器容器化应用如下图所示:

AWS 图示

现在,您将探索如何在 Google Cloud 上部署应用。

概览

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 应用。
  • 容器化该应用并将其上传到 Container Registry(即现在的“Artifact Registry”)。
  • 在 Cloud Run 上部署容器化应用。
  • 删除不需要的映像,以免产生额外的存储费用。

设置和要求

对于每个实验,您都会免费获得一个新的 Google Cloud 项目及一组资源,它们都有固定的使用时限。

  1. 请使用无痕式窗口登录 Qwiklabs。

  2. 留意实验的访问时限(例如 1:15:00)并确保能在相应时间段内完成实验。
    系统不提供暂停功能。如有需要,您可以重新开始实验,不过必须从头开始。

  3. 准备就绪时,点击开始实验

  4. 请记好您的实验凭据(用户名密码)。您需要使用这组凭据来登录 Google Cloud 控制台。

  5. 点击打开 Google 控制台

  6. 点击使用其他帐号,然后将实验的凭据复制并粘贴到相应提示框中。
    如果您使用其他凭据,将会收到错误消息或产生费用

  7. 接受条款并跳过恢复资源页面。

如何开始实验并登录控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧面板中包含您在进行该实验时必须使用的临时凭据。

    凭据面板

  2. 复制用户名,然后点击打开 Google 控制台。 该实验会启动资源并打开另一个标签页,显示选择账号页面。

    注意:请在单独的窗口打开标签页,让它们并排显示。
  3. 在“选择账号”页面中点击使用其他账号。“登录”页面即会打开。

    选择一个账号对话框,其中突出显示了“使用其他账号”选项

  4. 粘贴您从“连接详情”面板复制的用户名,然后复制并粘贴相应的密码。

注意:您必须使用“连接详情”面板中的凭据,请勿使用您的 Google Cloud Skills Boost 凭据。如果您拥有自己的 Google Cloud 账号,请不要在此实验中使用,以免产生费用。
  1. 继续在后续页面中点击以完成相应操作:
  • 接受条款及条件。
  • 由于该账号为临时账号,请勿添加账号恢复选项或双重验证。
  • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Cloud 控制台。

注意:您可以点击左上角的导航菜单来查看列有 Google Cloud 产品和服务的菜单。 Cloud 控制台菜单

激活 Google Cloud Shell

Google Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。

Google Cloud Shell 提供了可用于访问您的 Google Cloud 资源的命令行工具。

  1. 在 Cloud 控制台右上角的工具栏中,点击“打开 Cloud Shell”按钮。

    突出显示的 Cloud Shell 图标

  2. 点击继续

预配并连接到环境需要一些时间。如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 PROJECT_ID。例如:

在 Cloud Shell 终端中突出显示的项目 ID

gcloud 是 Google Cloud 的命令行工具。它会预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  • 您可以通过以下命令列出有效的账号名称:
gcloud auth list

输出:

Credentialed accounts: - @.com (active)

输出示例

Credentialed accounts: - google1623327_student@qwiklabs.net
  • 您可以通过以下命令列出项目 ID:
gcloud config list project

输出:

[core] project =

输出示例

[core] project = qwiklabs-gcp-44776a13dea667a6 注意:有关 gcloud 的完整文档,请参阅 gcloud CLI 概览指南

参考信息

基本的 Linux 命令

下面是一些非常基本的 Linux 命令的参考列表,这些命令可能包含在本实验的说明或代码块中。

命令 --> 操作 . 命令 --> 操作
mkdir(创建目录 新建文件夹 . cd(更改目录 转入另一文件夹
ls(列出 列出目录中的文件和文件夹 . cat(串联 在不使用编辑器的情况下读取文件的内容
apt-get update 更新软件包管理器库 . ping 用于测试主机可达性的信号
mv(移动 移动文件 . cp(复制 创建文件副本
pwd(当前工作目录) 返回您当前所在的位置 . sudo(超级用户的操作 授予更高的管理员权限

任务 1. 启用 Cloud Run API 并配置 shell 环境

  1. 在 Cloud Shell 中,启用 Cloud Run API
gcloud services enable run.googleapis.com
  1. 如果系统提示您授权使用凭据,请进行相应授权。之后,您应该会看到如下所示的消息,指出授权成功:
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully. 注意:您也可以使用控制台的 API 和服务部分来启用 API。
  1. 设置计算区域:
gcloud config set compute/region {{{ project_0.default_region| "Region" }}}
  1. 创建一个 LOCATION 环境变量:
LOCATION="{{{ project_0.default_region| "Region" }}}"

任务 2. 编写示例应用

在此任务中,您将构建一个基于 Express 的简单 NodeJS 应用来响应 HTTP 请求。

  1. 在 Cloud Shell 中,创建一个名为 helloworld 的新目录,然后切换到该目录:
mkdir helloworld && cd helloworld
  1. 接下来,您需要创建并编辑一些文件。如需编辑文件,您可以使用 viemacnano;也可以在 Cloud Shell 中点击打开编辑器按钮来使用 Cloud Shell 的代码编辑器。

  2. 创建一个 package.json 文件,然后向该文件添加以下内容:

nano package.json { "name": "helloworld", "description": "Simple hello world sample in Node", "version": "1.0.0", "main": "index.js", "scripts": { "start": "node index.js" }, "author": "Google LLC", "license": "Apache-2.0", "dependencies": { "express": "^4.17.1" } }

请务必注意,上面的文件包含一个 start 脚本命令和一个 Express Web 应用框架依赖项。

  1. 按下 CTRL+X 键,然后按 Y 键以保存 package.json 文件。

  2. 接下来,在同一目录中,创建一个 index.js 文件,并将下面的代码行复制到该文件中:

nano index.js const express = require('express'); const app = express(); const port = process.env.PORT || 8080; app.get('/', (req, res) => { const name = process.env.NAME || 'World'; res.send(`Hello ${name}!`); }); app.listen(port, () => { console.log(`helloworld: listening on port ${port}`); });

这段代码会创建一个基本 Web 服务器,监听由 PORT 环境变量定义的端口。您的应用现已编写完毕,可以进行容器化并上传到 Container Registry。

  1. 按下 CTRL+X 键,然后按 Y 键以保存 index.js 文件。
注意:您也可以使用诸多其他编程语言来探索如何开始使用 Cloud Run。您可以在快速入门指南中找到关于 Go、Python、Java、PHP、Ruby 和 Shell 脚本等的说明。

任务 3. 容器化该应用并将其上传到 Artifact Registry

  1. 如需将示例应用容器化,请在源文件所在的目录中创建一个名为 Dockerfile 的新文件,并向该文件添加以下内容:
nano Dockerfile # 使用官方轻量级 Node.js 12 映像。 # https://hub.docker.com/_/node FROM node:12-slim # 创建应用目录并切换到该目录。 WORKDIR /usr/src/app # 将应用依赖项清单复制到容器映像。 # 这里会用到一个通配符,确保 package.json 和 package-lock.json(如有)都会被复制。 # 首先进行这项复制,这样就不需要在后续每次更改代码时都重新运行 npm install。 COPY package*.json ./ # 安装生产环境依赖项。 # 如果您添加了 package-lock.json,则可以改用“npm ci”来加快构建速度。 # RUN npm ci --only=production RUN npm install --only=production # 将本地代码复制到容器映像。 COPY . ./ # 在容器启动时运行该 Web 服务。 CMD [ "npm", "start" ]
  1. 按下 CTRL+X 键,然后按 Y 键以保存 Dockerfile 文件。

  2. 接下来,在包含 Dockerfile 的目录中运行以下命令,使用 Cloud Build 构建容器映像。(请注意命令中的 $GOOGLE_CLOUD_PROJECT 环境变量,该变量包含您的实验的项目 ID):

gcloud builds submit --tag gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld

Cloud Build 是一项用来在 GCP 上执行构建的服务。该服务会执行一系列构建步骤,其中每个构建步骤都在 Docker 容器中运行,以此生成您的应用容器(或其他制品)并将其推送到 Cloud Registry,全部操作都在一个命令中完成。

推送到注册表后,您会看到一条包含映像名称 (gcr.io/[PROJECT-ID]/helloworld) 的消息,表明推送成功。该映像存储在 Artifact Registry 中,并可根据需要重复使用。

  1. 使用下面的命令列出与您的当前项目关联的所有容器映像:
gcloud container images list
  1. 如需通过 Cloud Shell 在本地运行并测试应用,请使用下面的标准 docker 命令启动该应用:
docker run -d -p 8080:8080 gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld
  1. 在 Cloud Shell 窗口中,点击网页预览并选择在端口 8080 上预览

这应该会打开一个显示“Hello World!”消息的浏览器窗口。您也可以直接使用 curl localhost:8080

注意:如果 docker 命令无法拉取远程容器映像,请尝试运行下面的命令:gcloud auth configure-docker

任务 4. 部署到 Cloud Run

  1. 使用下面的命令并指定您的项目 ID,将容器化应用部署到 Cloud Run:
gcloud run deploy --image gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld --allow-unauthenticated --region=$LOCATION

上面命令中的 allow-unauthenticated 标志让您的服务可公开访问。

  1. 出现提示时,按 Enter 键确认 service name

等待部署完成。

成功部署后,命令行中便会显示该服务的网址:

Service [helloworld] revision [helloworld-00001-xit] has been deployed and is serving 100 percent of traffic. Service URL: https://helloworld-h6cp412q3a-uc.a.run.app

现在,您可以在任何浏览器窗口中打开该服务网址,访问您部署的容器。

恭喜!您刚刚将容器映像中封装的应用部署到了 Cloud Run。Cloud Run 可以自动对您的容器映像进行横向扩容以处理收到的请求,并在需求减少时缩容。在您自己的环境中,您只需为在处理请求期间消耗的 CPU、内存和网络资源付费。

在本实验中,您使用的是 gcloud 命令行,您也可以通过 Cloud 控制台来使用 Cloud Run。

  • 导航菜单的“无服务器”部分中,点击 Cloud Run,系统应该会列出您的 helloworld 服务:

显示 helloworld 服务的 Cloud Run 标签页

任务 5. 清理

虽然 Cloud Run 不会针对未使用的服务收费,但您可能仍然需要为您构建的容器映像支付存储费用。

  1. 为避免产生费用,您可以删除您的 GCP 项目,让系统停止对该项目中使用的所有资源计费;您也可以使用下面的命令直接删除您的 helloworld 映像:
gcloud container images delete gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld
  1. 在系统提示您继续时,输入 Y 并按 Enter 键。

  2. 如需删除 Cloud Run 服务,请使用下面的命令:

gcloud run services delete helloworld --region={{{ project_0.default_region| "Region" }}}
  1. 在系统提示您继续时,输入 Y 并按 Enter 键。

恭喜!

您已完成本实验!

Google Cloud Run 和 AWS Fargate 都是无服务器计算服务,让开发者能够以可扩缩且具有成本效益的方式运行容器化应用。然而,这两种服务也有一些区别。

以下是这两种服务之间的一些主要异同:

相似之处:

  • Google Cloud Run 和 AWS Fargate 都是无服务器计算服务,这意味着开发者可以专注于编写代码,而不必担心底层基础设施。
  • 两种服务都使用容器化技术来封装和部署应用。
  • 两种服务都支持使用 Docker 容器作为部署形式。
  • 两种服务都能根据需求自动扩容或缩容。

不同之处:

  • 使用 AWS Fargate 时,用户需要配置和管理容器编排,如 Kubernetes;而使用 Google Cloud Run 时,容器编排由平台管理。
  • Google Cloud Run 是一项独立的服务,而 AWS Fargate 是为容器服务(Amazon ECS 或 Amazon EKS)提供辅助的资源配置服务。
  • 在 AWS 中,需要将 AWS Fargate 与容器编排服务(如 Amazon ECS 或 Amazon EKS)结合使用,才能部署无服务器的容器化环境。而在 Google Cloud 中,只需要使用 Cloud Run 即可部署。

结束实验

完成实验后,请点击结束实验。Google Cloud Skills Boost 会移除您使用过的资源并为您清理帐号。

系统会提示您为实验体验评分。请选择相应的星级数,输入评论,然后点击提交

星级数的含义如下:

  • 1 颗星 = 非常不满意
  • 2 颗星 = 不满意
  • 3 颗星 = 一般
  • 4 颗星 = 满意
  • 5 颗星 = 非常满意

如果您不想提供反馈,可以关闭该对话框。

如果要留言反馈、提出建议或做出更正,请使用支持标签页。

版权所有 2020 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。