IBM Cloud Code Engine 入门
IBM Cloud® Code Engine 是一个完全受管的无服务器平台,用于运行容器化工作负载,包括 Web 应用程序,微服务,事件驱动的功能或批处理作业。Code Engine 甚至通过源代码为您构建容器映像。 所有这些工作负载都可以无缝地协同工作,因为它们都在相同的 Kubernetes 基础架构中托管。 Code Engine 体验的设计目的是让您专注于编写代码,而不是托管代码所需的基础设施。
首先,了解 Code Engine 的一些 关键术语,然后开始使用下列其中一个选项。
什么是 Code Engine 项目、应用程序、工作、功能和车队?
开始之前,请熟悉 Code Engine的一些关键术语。 之后,您可以测试自己的知识,并 进行测验!
| 术语 | 描述 |
|---|---|
| 项目 | 项目是 Code Engine 实体 (例如应用程序,作业和构建) 的分组。 项目用于管理资源并提供对其实体的访问权。 |
| 应用程序 | 应用程序或应用程序运行您的代码,为 HTTP 请求提供服务。 应用程序有一个用于接收请求的 URL。 根据传入工作负载,应用程序的运行实例数会自动向上扩展或向下扩展 (为零)。 |
| 构建 | 构建或映像构建是一种可用于从源代码创建容器映像的机制。Code Engine 支持从 Dockerfile 或 Cloud Native Buildpack 进行构建。 |
| 功能 | 函数是一个无状态代码片段,可根据 HTTP 请求执行任务。 |
| 作业 | 作业并行运行可执行代码的一个或多个实例。 与包含用于处理入局请求的 HTTP Server 的应用程序不同,作业设计为运行一次并退出。 |
| 车队 | 机群又称无服务器机群,运行一个或多个用户代码实例来完成一系列指定任务。 车队的设计目的是应对庞大、计算量大的工作负荷。 与作业不同,机群是单一租户,实施动态任务队列,并提供对机器配置文件配置的全面控制。 如需了解更多信息,请参阅 " 工作和车队有什么区别? |
有关术语的更多信息,请参阅 Code Engine 术语。
不确定要选择什么? 请参阅 规划 Code Engine。
应用程序、工作、功能和车队如何比较?
| 特性 | 应用程序 | 作业 | 功能 | 车队 |
|---|---|---|---|---|
| 执行时间(持续时间) | 长期运行(每次请求 10 分钟) | 长时间运行(长达 24 小时) | 短程运行(2 分钟或更短) | 长期运行(几分钟到几周) |
| 启动延迟 | 中 | 预定开始 | 低 | 低 |
| 终止 | 连续运行 | 运行至完成 | 运行至完成 | 运行至完成 |
| 调用 | 根据要求或永久运行 | 已安排 | 根据要求,即时 | 已安排 |
| 编程模型 | 基于容器的构建和执行 | 基于容器的构建和执行 | 特定语言的源代码文件和依赖元数据 | 基于容器的构建和执行 |
| 并行性 | 并行执行,灵活 | 中低并行执行 | 高度并行执行 | 高度并行执行和队列 |
| 横向扩展 | 根据申请数量 | 基于岗位工作量定义 | 基于事件或直接调用 | 基于任务和并发实例的数量 |
| 优化对象 | 长期运行、高度复杂的工作负载和按需扩展 | 资源需求量大的预定或计划工作负载 | 启动时间和快速扩展 | 大型计算密集型工作负载 |
如需了解更多信息,请参阅 规划 Code Engine。
部署第一个 Code Engine 应用程序
创建你的第一个Code Engine应用程序使用 icr.io/codeengine/helloworld 图像。
- 打开 Code Engine 控制台。
- 选择开始创建。
- 从可用项目列表中选择一个项目。 您还可以 创建新的。 请注意,您必须具有所选项目才能部署应用程序。
- 选择应用程序。
- 输入应用程序的名称,例如
myapp。 为您的应用程序取一个在项目中独一无二的名称。 - 选择以运行 容器映像 并为映像引用指定
icr.io/codeengine/helloworld。 对于此示例,您不需要修改缺省值。 有关用于此示例的代码的更多信息,请参阅helloworld。 - 单击创建。
- 在应用程序状态更改为 Ready 后,可以测试应用程序。 单击 测试应用程序,然后在“测试应用程序”窗格中单击 发送请求。 要在网页中打开应用程序,请单击应用程序 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,然后应用程序会为您拉取该映像并进行部署。 在应用程序状态更改为 Ready 后,您可以试用该应用程序。 单击 测试应用程序,然后在“测试应用程序”窗格中单击 发送请求。 要在网页中打开应用程序,请单击应用程序 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 存储库。