Cloud Run 入门教程

1. 概览

Cloud Run 是一个全代管式无服务器平台,供您运行可通过 HTTP 请求调用的无状态容器。Cloud Run 采用无服务器设计:您不用管理基础架构,因此可全力专注于最重要的工作,即构建出色的应用。

它基于 Knative 构建而成,可让您选择使用 Cloud Run 在全代管式环境中运行容器,或使用 Cloud Run on GKE 在您的 Google Kubernetes Engine 集群中运行容器。

学习内容

在本实验中,您将学习如何完成以下操作:

  • 部署 Cloud Run 应用

前提条件

  • 本实验假定您熟悉 Cloud 控制台和 Cloud Shell 环境。

2. 设置和要求

Cloud 项目设置

  1. 登录 Google Cloud 控制台,然后创建一个新项目或重复使用现有项目。如果您还没有 Gmail 或 Google Workspace 账号,则必须创建一个

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • 项目名称是此项目参与者的显示名称。它是 Google API 尚未使用的字符串。您可以随时对其进行更新。
  • 项目 ID 在所有 Google Cloud 项目中是唯一的,并且是不可变的(一经设置便无法更改)。Cloud 控制台会自动生成一个唯一字符串;通常您不在乎这是什么在大多数 Codelab 中,您都需要引用项目 ID(它通常标识为 PROJECT_ID)。如果您不喜欢生成的 ID,可以再随机生成一个 ID。或者,您也可以尝试自己的项目 ID,看看是否可用。完成此步骤后便无法更改该 ID,并且该 ID 在项目期间会一直保留。
  • 此外,还有第三个值,即某些 API 使用的项目编号,供您参考。如需详细了解所有这三个值,请参阅文档
  1. 接下来,您需要在 Cloud 控制台中启用结算功能,以便使用 Cloud 资源/API。运行此 Codelab 应该不会产生太多的费用(如果有费用的话)。如需关停资源,以免产生超出本教程范围的结算费用,您可以删除自己创建的资源或删除整个项目。Google Cloud 的新用户符合参与 $300 USD 免费试用计划的条件。

环境设置

点击搜索栏右侧的图标,激活 Cloud Shell。

ecdc43ada29e91b.png

在 Cloud Shell 中,启用 Cloud Run API:

gcloud services enable run.googleapis.com

如果系统提示您授权,请点击“授权”以继续。

6356559df3eccdda

这将生成类似于以下内容的成功消息:

Operation "operations/acf.p2-327036483151-73d90d00-47ee-447a-b600-a6badf0eceae" finished successfully.

3. 准备应用

首先,您将准备一个基于 Express 的简单 Node.js 应用来响应 HTTP 请求。

在 Cloud Shell 中,创建一个名为 starter-nodejs 的新目录,然后切换到该目录:

mkdir starter-nodejs
cd starter-nodejs

通过运行以下命令创建 package.json 文件:

cat > ./package.json << EOF
{
  "name": "cloudrun-starter-app",
  "version": "1.0.0",
  "description": "Node.js Starter Application",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "author": "",
  "license": "Apache-2.0",
  "dependencies": {
    "express": "^4.18.2"
  }
}
EOF

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

接下来,在同一目录中,运行以下命令创建一个 index.js 文件:

cat > ./index.js << EOF
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  console.log('Received a request.');
  res.send("Hello Cloud Run!");
});

const port = process.env.PORT || 8080;

app.listen(port, () => {
  console.log('Listening on port', port);
});
EOF

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

4. 部署 Cloud Run 应用

运行以下命令以部署您的应用:

gcloud run deploy starter-app \
  --source . \
  --region us-central1 \
  --allow-unauthenticated \
  --max-instances=3

确认创建 Artifact Registry 代码库:

Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [us-central1] will be created.

Do you want to continue (Y/n)? y

执行上一个命令后,将执行以下步骤:

d661616f9b2fffcf.png

在 Cloud 控制台中探索以下步骤的输出:Cloud BuildCloud StorageArtifact RegistryCloud Run

f536961280192919.png

5. 恭喜!

恭喜!您刚刚向 Cloud Run 部署了一个应用。

所学内容:

  • 如何在 Cloud Run 上部署起始应用

后续步骤:

探索其他 Cymbal Eats Codelab:

清理

为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。

删除项目

若要避免产生费用,最简单的方法是删除您为本教程创建的项目。