IBM Cloud Code Engine 入门

IBM Cloud® Code Engine 是一个完全托管的无服务器平台,可运行您的容器化工作负载,包括网络应用程序、微服务、事件驱动功能或批处理作业。Code Engine 甚至可以根据您的源代码为您构建容器镜像。 所有这些工作负载都可以无缝协同工作,因为它们都托管在同一个 Kubernetes 基础设施中。 Code Engine 体验的设计目的是让您专注于编写代码,而不是托管代码所需的基础设施。

首先,了解 Code Engine 的一些 关键术语,然后开始使用以下选项之一。

什么是 Code Engine 项目、应用程序、工作、功能和车队?

在开始之前,请先熟悉 Code Engine 的一些关键术语。

Code Engine 条款
术语 描述
项目 项目是 Code Engine 实体(如应用程序、工作和构建)的组合。 项目用于管理资源并提供对其实体的访问。
应用程序 应用程序或应用程序运行您的代码,为 HTTP 请求提供服务。 应用程序有一个用于接收请求的 URL。 应用程序的运行实例数量会根据接收到的工作量自动增加或减少(直至为零)。
构建 Code Engine 支持从 Dockerfile 或 Cloud Native Buildpacks 构建。
功能 函数是一个无状态代码片段,可根据 HTTP 请求执行任务。
作业 一个作业并行运行一个或多个可执行代码实例。 与包含 HTTP Server 来处理传入请求的应用程序不同,作业的设计目的是运行一次并退出。
车队 机群也称为无服务器机群,运行一个或多个用户代码实例,以完成一系列指定任务。 车队的设计目的是应对庞大、计算量大的工作负荷。 与作业不同,机群是单租户的,可执行动态任务队列,并提供对机器配置文件配置的完全控制。 如需了解更多信息,请参阅 " 工作和车队有什么区别?

有关术语的更多信息,请参阅 Code Engine terminology

不知道该如何选择? 请参见 规划 Code Engine

应用程序、工作、功能和车队如何比较?

比较 Code Engine 应用程序、工作和功能
特性 应用程序 作业 功能 车队
执行时间(持续时间) 长期运行(每次请求 10 分钟) 长时间运行(长达 24 小时) 短程运行(2 分钟或更短) 长期运行(几分钟到几周)
启动延迟 预定开始
终止 连续运行 运行至完成 运行至完成 运行至完成
调用 根据要求或永久运行 已安排 根据要求,即时 已安排
编程模型 基于容器的构建和执行 基于容器的构建和执行 特定语言的源代码文件和依赖元数据 基于容器的构建和执行
并行性 并行执行,灵活 中低并行执行 高度并行执行 高度并行执行和队列
横向扩展 根据申请数量 基于岗位工作量定义 基于事件或直接调用 基于任务和并发实例的数量
优化对象 长期运行、高度复杂的工作负载和按需扩展 具有高资源需求的预定或计划工作负载 启动时间和快速扩展 大型计算密集型工作负载

如需了解更多信息,请参阅 规划 Code Engine

部署您的第一个 Code Engine 应用程序

使用 icr.io/codeengine/helloworld 图像创建您的第一个 Code Engine 应用程序。

  1. 打开 Code Engine 控制台。
  2. 选择开始创建
  3. 从可用项目列表中选择一个项目。 您也可以 新建一个。 请注意,您必须有一个选定的项目才能部署应用程序。
  4. 选择应用程序
  5. 输入应用程序的名称,例如 myapp。 为您的应用程序取一个在项目中独一无二的名称。
  6. 选择运行容器镜像,并为镜像参考指定 icr.io/codeengine/helloworld。 在本例中,无需修改默认值。 有关本示例所用代码的更多信息,请参阅 helloworld.
  7. 单击创建
  8. 应用程序状态更改为就绪后,就可以测试应用程序了。 单击测试应用程序,然后单击测试应用程序窗格中的发送请求。 要在网页中打开应用程序,请单击应用程序 URL

示例输出

Hello World from:
. ___  __  ____  ____
./ __)/  \(    \(  __)
( (__(  O )) D ( ) _)
.\___)\__/(____/(____)
.____  __ _   ___  __  __ _  ____
(  __)(  ( \ / __)(  )(  ( \(  __)
.) _) /    /( (_ \ )( /    / ) _)
(____)\_)__) \___/(__)\_)__)(____)

Some Env Vars:
--------------
CE_API_BASE_URL=https://api.private.us-south.codeengine.cloud.ibm.com
CE_APP=myapp
CE_DOMAIN=us-south.codeengine.appdomain.cloud
CE_PROJECT_ID=abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
CE_REGION=us-south
CE_SUBDOMAIN=abcdabcdab
HOME=/root
HOSTNAME=myapp-00001-deployment-5b5895fdf7-abcd
K_REVISION=myapp-00001
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PORT=8080
PWD=/
SHLVL=1
z=Set env var 'SHOW' to see all variables

您将第一个应用程序部署到 Code Engine 并进行了测试。 请访问 教程:部署应用程序在 Code Engine 中使用 应用程序,尝试更多应用程序选项。

运行第一个 Code Engine 作业

使用 icr.io/codeengine/helloworld 映像创建并运行第一个 Code Engine 作业。

  1. 打开 Code Engine 控制台。
  2. 选择开始创建
  3. 从可用项目列表中选择一个项目。 您也可以 新建一个。 请注意,必须有选定的项目才能创建作业。
  4. 选择工作
  5. 输入任务名称,例如 myjob。 使用项目中独一无二的工作名称。
  6. 为图像参照指定 icr.io/codeengine/helloworld。 在本例中,无需修改默认值。 有关本示例所用代码的更多信息,请参阅 helloworld.
  7. 单击创建
  8. 在作业页面,单击提交作业,根据当前配置提交作业。
  9. 在“提交作业”窗格中,接受所有默认值,然后再次单击“提交作业”运行作业。

启用日志记录后,日志中会显示以下示例。 要了解如何在启用日志记录的情况下运行作业,请参阅 查看日志

日志实例输出示例

Hello World from:
. ___  __  ____  ____
./ __)/  \(    \(  __)
( (__(  O )) D ( ) _)
.\___)\__/(____/(____)
.____  __ _   ___  __  __ _  ____
(  __)(  ( \ / __)(  )(  ( \(  __)
.) _) /    /( (_ \ )( /    / ) _)
(____)\_)__) \___/(__)\_)__)(____)

Some Env Vars:
--------------
CE_DOMAIN=us-east.codeengine.appdomain.cloud
CE_JOB=myjob
CE_JOBRUN=myjob-jobrun-xgpmz
CE_SUBDOMAIN=abcdabcdab
HOME=/root
HOSTNAME=myjob-jobrun-abcde-0-0
JOB_INDEX=0
...
z=Set env var 'SHOW' to see all variables

您在控制台创建并运行了任务。 请访问 教程:运行作业在 Code Engine 中运行作业,尝试更多作业选项。

运行第一个函数

利用示例函数代码创建并运行第一个 Code Engine 函数。

  1. 打开 Code Engine 控制台。
  2. 选择开始创建
  3. 从可用项目列表中选择一个项目。 您也可以 新建一个。 请注意,您必须选择一个项目才能创建功能。
  4. 选择功能
  5. 输入功能名称。 为您的功能取一个在项目中独一无二的名称。
  6. 选择 Node.js 20
  7. 单击创建。 您的函数是通过示例代码创建的。 您可以在功能 -> 配置页面编辑该代码。
  8. 单击测试功能,然后单击测试功能窗格中的发送请求。 要在网页中打开功能,请单击功能 URL

示例输出

{
  "args": {
    "__ce_headers": {
      "Accept-Encoding": "gzip, deflate, br",
      "User-Agent": "got (https://github.com/sindresorhus/got)",
      "X-Request-Id": "12340a7b-11c0-4de3-f16b-a6abc27f4146"
    },
    "__ce_method": "GET",
    "__ce_path": "/"
  },
  "env": {
    "HOME": "/root",
    "PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/lib/nodejs/bin",
    "PWD": "/nodejsAction",
    "SHLVL": "1",
    "_": "/usr/local/lib/nodejs/bin/node",
    "__OW_ALLOW_CONCURRENT": "true",
    "container": "oci"
  }
}

您将第一个函数部署到 Code Engine 并进行了测试。 转到“从本地源运行函数”或“使用 函数”,尝试函数的更多选项。

您可以 将 IBM Cloud Functions 迁移到 Code Engine

运营你的第一支舰队

使用 icr.io/codeengine/helloworld 镜像创建并运行你的第一个 Code Engine 船队。

  1. 确保您已完成运行车队 所需的准备步骤
  2. 打开 Code Engine 控制台。
  3. 选择开始创建
  4. 从可用项目列表中选择一个项目。 您也可以 新建一个。 请注意,您必须有一个选定的项目才能运行车队。
  5. 选择舰队
  6. 输入车队名称。 在项目内的所有车队中使用唯一的名称。
  7. 为图像参照指定 icr.io/codeengine/helloworld。 在本例中,无需修改默认值。 有关本示例所用代码的更多信息,请参阅 helloworld.
  8. 单击"Create",

启用日志记录后,日志中会显示以下示例。 要了解启用日志功能后如何运行车队,请参阅 查看车队日志

日志实例输出示例

Hello from helloworld! I'm a task of fleet: fleet-abcdef1234! Task Index: 4, Task ID: 2b2b2b2b-3c3c-4d4d-5e5e-6f6f6f6f6f6f

Hello World from:
. ___  __  ____  ____
./ __)/  \(    \(  __)
( (__(  O )) D ( ) _)
.\___)\__/(____/(____)
.____  __ _   ___  __  __ _  ____
(  __)(  ( \ / __)(  )(  ( \(  __)
.) _) /    /( (_ \ )( /    / ) _)
(____)\_)__) \___/(__)\_)__)(____)

Some Env Vars:
--------------
CE_API_BASE_URL=https://api.private.eu-de.codeengine.cloud.ibm.com
CE_CPU=1
CE_DOMAIN=eu-de.codeengine.appdomain.cloud
CE_FLEET_ID=1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e
CE_FLEET_NAME=fleet-abcdef1234
...
z=Set env var 'SHOW' to see all variables

您在控制台创建并运行了舰队。 前往“运行舰队”尝试更多舰队选项。

从源代码构建第一个容器映像

创建并运行首个 Code Engine 构建,然后在应用程序中部署容器映像。

Code Engine 可以自动将图片推送到账户中的 Container Registry 命名空间。 它甚至可以为你创建一个命名空间。 要将映像推送到不同的 Container Registry 账户或私有 Docker Hub 账户,请参阅 添加对私有容器注册表的访问

  1. 打开 Code Engine 控制台。
  2. 选择开始创建
  3. 从可用项目列表中选择一个项目。 您也可以 新建一个。 请注意,您必须有一个选定的项目才能部署应用程序。
  4. 选择应用程序
  5. 输入应用程序的名称。 为您的应用程序取一个在项目中独一无二的名称。
  6. 选择运行容器镜像,并为镜像参考指定 icr.io/codeengine/helloworld。 在本例中,无需修改默认值。 有关本示例所用代码的更多信息,请参阅 helloworld.
  7. 选择源代码
  8. 单击指定构建详细信息
  9. 接受每个页面的默认设置,单击下一步,然后单击完成
  10. 单击创建

提交构建运行后,构建的容器映像会发送到 Container Registry,然后您的应用程序会提取该映像并为您部署。 申请状态变为就绪后,您就可以试用了。 单击测试应用程序,然后单击测试应用程序窗格中的发送请求。 要在网页中打开应用程序,请单击应用程序 URL

示例输出

Hello World from:
     ___  __  ____  ____
    / __)/  \(    \(  __)
   ( (__(  O )) D ( ) _)
    \___)\__/(____/(____)
 ____  __ _   ___  __  __ _  ____
(  __)(  ( \ / __)(  )(  ( \(  __)
 ) _) /    /( (_ \ )( /    / ) _)
(____)\_)__) \___/(__)\_)__)(____)
Some Env Vars:
--------------
CE_API_BASE_URL=https://api.private.us-south.codeengine.cloud.ibm.com
CE_APP=myapp
CE_DOMAIN=us-south.codeengine.appdomain.cloud
CE_PROJECT_ID=abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
CE_REGION=us-south
CE_SUBDOMAIN=abcdabcdab
HOME=/root
HOSTNAME=myapp-00001-deployment-6db6d89dc7-k6qc7
K_REVISION=myapp-00001
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PORT=8080
PWD=/
SHLVL=1

您向 Code Engine 提交源代码并创建容器映像,然后将其部署到应用程序中,所有这一切都只需通过一个界面即可完成。

转到 构建容器镜像,探索并尝试更多构建选项。

下一步工作 Code Engine

了解从控制台或使用 Code Engine CLI 执行这些 Code Engine 任务的更多信息。

想了解更多代码示例? 查看 样本 IBM Cloud Code Engine GitHub repo