IBM Cloud Code Engine 入门
IBM Cloud® Code Engine 是一个完全托管的无服务器平台,可运行您的容器化工作负载,包括网络应用程序、微服务、事件驱动功能或批处理作业。Code Engine 甚至可以根据您的源代码为您构建容器镜像。 所有这些工作负载都可以无缝协同工作,因为它们都托管在同一个 Kubernetes 基础设施中。 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。
应用程序、工作、功能和车队如何比较?
| 特性 | 应用程序 | 作业 | 功能 | 车队 |
|---|---|---|---|---|
| 执行时间(持续时间) | 长期运行(每次请求 10 分钟) | 长时间运行(长达 24 小时) | 短程运行(2 分钟或更短) | 长期运行(几分钟到几周) |
| 启动延迟 | 中 | 预定开始 | 低 | 低 |
| 终止 | 连续运行 | 运行至完成 | 运行至完成 | 运行至完成 |
| 调用 | 根据要求或永久运行 | 已安排 | 根据要求,即时 | 已安排 |
| 编程模型 | 基于容器的构建和执行 | 基于容器的构建和执行 | 特定语言的源代码文件和依赖元数据 | 基于容器的构建和执行 |
| 并行性 | 并行执行,灵活 | 中低并行执行 | 高度并行执行 | 高度并行执行和队列 |
| 横向扩展 | 根据申请数量 | 基于岗位工作量定义 | 基于事件或直接调用 | 基于任务和并发实例的数量 |
| 优化对象 | 长期运行、高度复杂的工作负载和按需扩展 | 具有高资源需求的预定或计划工作负载 | 启动时间和快速扩展 | 大型计算密集型工作负载 |
如需了解更多信息,请参阅 规划 Code Engine。
部署您的第一个 Code Engine 应用程序
使用 icr.io/codeengine/helloworld 图像创建您的第一个 Code Engine 应用程序。
- 打开 Code Engine 控制台。
- 选择开始创建。
- 从可用项目列表中选择一个项目。 您也可以 新建一个。 请注意,您必须有一个选定的项目才能部署应用程序。
- 选择应用程序。
- 输入应用程序的名称,例如
myapp。 为您的应用程序取一个在项目中独一无二的名称。 - 选择运行容器镜像,并为镜像参考指定
icr.io/codeengine/helloworld。 在本例中,无需修改默认值。 有关本示例所用代码的更多信息,请参阅helloworld. - 单击创建。
- 应用程序状态更改为就绪后,就可以测试应用程序了。 单击测试应用程序,然后单击测试应用程序窗格中的发送请求。 要在网页中打开应用程序,请单击应用程序 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 作业。
- 打开 Code Engine 控制台。
- 选择开始创建。
- 从可用项目列表中选择一个项目。 您也可以 新建一个。 请注意,必须有选定的项目才能创建作业。
- 选择工作。
- 输入任务名称,例如
myjob。 使用项目中独一无二的工作名称。 - 为图像参照指定
icr.io/codeengine/helloworld。 在本例中,无需修改默认值。 有关本示例所用代码的更多信息,请参阅helloworld. - 单击创建。
- 在作业页面,单击提交作业,根据当前配置提交作业。
- 在“提交作业”窗格中,接受所有默认值,然后再次单击“提交作业”运行作业。
启用日志记录后,日志中会显示以下示例。 要了解如何在启用日志记录的情况下运行作业,请参阅 查看日志。
日志实例输出示例
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 函数。
- 打开 Code Engine 控制台。
- 选择开始创建。
- 从可用项目列表中选择一个项目。 您也可以 新建一个。 请注意,您必须选择一个项目才能创建功能。
- 选择功能。
- 输入功能名称。 为您的功能取一个在项目中独一无二的名称。
- 选择 Node.js 20
- 单击创建。 您的函数是通过示例代码创建的。 您可以在功能 -> 配置页面编辑该代码。
- 单击测试功能,然后单击测试功能窗格中的发送请求。 要在网页中打开功能,请单击功能 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 并进行了测试。 转到“从本地源运行函数”或“使用 函数”,尝试函数的更多选项。
运营你的第一支舰队
使用 icr.io/codeengine/helloworld 镜像创建并运行你的第一个 Code Engine 船队。
- 确保您已完成运行车队 所需的准备步骤。
- 打开 Code Engine 控制台。
- 选择开始创建。
- 从可用项目列表中选择一个项目。 您也可以 新建一个。 请注意,您必须有一个选定的项目才能运行车队。
- 选择舰队。
- 输入车队名称。 在项目内的所有车队中使用唯一的名称。
- 为图像参照指定
icr.io/codeengine/helloworld。 在本例中,无需修改默认值。 有关本示例所用代码的更多信息,请参阅helloworld. - 单击"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 账户,请参阅 添加对私有容器注册表的访问。
- 打开 Code Engine 控制台。
- 选择开始创建。
- 从可用项目列表中选择一个项目。 您也可以 新建一个。 请注意,您必须有一个选定的项目才能部署应用程序。
- 选择应用程序。
- 输入应用程序的名称。 为您的应用程序取一个在项目中独一无二的名称。
- 选择运行容器镜像,并为镜像参考指定
icr.io/codeengine/helloworld。 在本例中,无需修改默认值。 有关本示例所用代码的更多信息,请参阅helloworld. - 选择源代码。
- 单击指定构建详细信息。
- 接受每个页面的默认设置,单击下一步,然后单击完成。
- 单击创建。
提交构建运行后,构建的容器映像会发送到 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。