在 Code Engine中部署 Cloud Foundry 应用程序: 入门
欢迎 Cloud Foundry 用户访问 IBM Cloud® Code Engine。
Code Engine 是一个完全受管的无服务器平台,用于运行容器化工作负载。Code Engine 甚至通过源代码为您构建容器映像。 设计了 Code Engine 体验,以便您可以专注于 编写代码,而不是托管代码所需的基础架构。
Code Engine 设计时考虑了以下关键目标。
- 关注代码。Code Engine 提供简化的开发者体验。 无需了解或管理底层基础架构。
- 支持现代运行时特征,例如自动缩放,空闲时缩放为零,以及与受管服务和安全性的无缝集成。
- 支持所有基于云的本机应用程序,无论它们是 12 因子应用程序,事件驱动的函数还是运行到完成的批处理作业。 如果它可以容器化,那么 Code Engine 可以运行它。
- 仅为实际使用的资源付费。
如果您来自 Cloud Foundry 背景,那么这些功能部件中的许多功能部件听起来很熟悉。 但是,Code Engine 还包含一些新功能,这些功能允许您超越 Cloud Foundry 提供的功能,包括可扩展为零且免费的应用程序。 因此,在您经历了用户体验的语法差异之后,您和您的应用程序将在 Code Engine中的主场感受。
让我们部署一个简单的 hello world
应用程序,以了解 Code Engine 的工作方式。 请遵循以下步骤来创建项目,构建代码以及部署应用程序。
在开始本教程之前,请查看 Cloud Foundry 和 Code Engine 术语。
目标
- 了解 Code Engine 与 Cloud Foundry之间的相似性。
- 了解在 Code Engine中部署应用程序的常规过程。
- 使用 Code Engine在本地系统上从代码部署应用程序。
先决条件
在开始使用 Code Engine之前,需要设置帐户并安装 CLI。
-
所有 Code Engine 用户都需要具有现收现付帐户。
-
当您可以通过控制台使用 Code Engine 时,本文档中的示例将重点放在命令行上。 因此,必须安装 Code Engine CLI。
ibmcloud plugin install code-engine
有关更多信息,请参阅设置 Code Engine CLI。 有关 CLI 的更多信息,请参阅 Code Engine CLI 参考。
登录到 IBM Cloud。
执行以下步骤以登录到 IBM Cloud 帐户并以资源组为目标。
-
登录到 IBM Cloud CLI。
ibmcloud login
-
通过运行以下命令将资源组设定为目标。 要获取资源组的列表,请运行
ibmcloud resource groups
。ibmcloud target -g <resource_group>
示例输出
Targeted resource group default
创建项目
Code Engine“项目”类似于 Cloud Foundry“空间”,因为它将相关工作负载分组到对开发者有意义的逻辑集合中。 您可以根据对您有意义的任何条件 (例如,公司组织结构,工作负载之间的依赖关系或开发与测试与生产环境) 将工作负载分组到不同的项目中。 请记住,单个项目中的工作负载共享专用网络,并在项目的安全边界内隔离。 项目中的所有工作负载都可以自由地相互交谈,而无需担心被集群外部的工作负载看到。 如果不同项目中的工作负载想要相互通信,那么通信必须使用因特网或内部 IBM 专用网络。 有关更多信息,请参阅 Code Engine 应用程序的可视性选项。
在 Code Engine 中创建名为 sample
的项目。
ibmcloud ce project create --name sample
示例输出
Creating project 'sample'...
ID for project 'sample' is 'abcdabcd-abcd-abcd-abcd-abcd12e3456f7'.
Waiting for project 'sample' to be active...
Now selecting project 'sample'.
OK
请注意,您的项目也已选择用于上下文,因此所有后续与应用程序相关的命令都在此新 sample
项目的范围内。
创建目录和源代码
-
在本地工作站上创建名为
myapp
的目录并浏览到该目录。 在此目录中,保存构建映像和运行应用程序所需的所有文件。mkdir myapp && cd myapp
-
创建名为
server.js
的文件,并将以下源代码复制到其中。const http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end( "Hello world\n" ); }).listen(8080);
此示例使用 Node.js。您可以从任何 受支持的运行时 替换代码。
部署应用程序
使用 application create
命令将代码推送到 Code Engine。 您必须提供应用程序的名称和源代码的位置。 以下示例创建名为 myapp
的应用程序,该应用程序使用 buildpack
策略并提供当前目录 (.
) 中源代码的位置。
ibmcloud ce app create --name myapp --build-source . --strategy buildpacks
示例输出
Creating application 'myapp'...
Packaging files to upload from source path '.'...
Submitting build run 'myapp-run-220999-210706331'...
Creating image 'private.us.icr.io/ce--6ef04-khxrbwa0lci/app-myapp:220418-0207-askql'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n myapp-run-220000-210706331' to check the build run status.
Waiting for application 'myapp' to become ready.
Configuration 'myapp' is waiting for a Revision to become ready.
Ingress has not yet been reconciled.
Waiting for load balancer to be ready.
Run 'ibmcloud ce application get -n myapp' to check the application status.
OK
https://myapp.abcdbwa0lci.us-south.codeengine.appdomain.cloud
就这样 您现在具有面向因特网的应用程序。 应用程序本身中的代码与用于 Cloud Foundry 应用程序的代码相同,只是 Code Engine 命令略有不同。
让我们更深入地了解先前的 app create
命令。 请注意,app create
命令的输出提供了有关在创建和部署应用程序之前构建运行的进度的信息。
- Code Engine 接收到从源代码创建应用程序的请求 (而不是直接从映像中拉取)。
- Code Engine 检查与所选项目关联的 IAM 服务标识和 API 密钥。 此服务标识必须有权读写 IBM Cloud Container Registry。 如果不存在服务标识,那么 Code Engine 将为您创建一个服务标识。 请注意,此服务标识用于从同一项目运行的后续 Code Engine 构建请求。
- 此示例从本地源 (
--build-source .
) 构建代码。 源代码将打包到归档文件中,并上载到帐户中 IBM Cloud Container Registry 实例内的受管名称空间。 请注意,只能将 IBM Cloud Container Registry 作为本地构建的目标。 有关 IBM Container Registry的更多信息,包括有关配额限制和访问权的信息,请参阅 IBM Cloud Container Registry。 - Code Engine 将源代码构建到映像中。 将在与源归档文件相同的名称空间中创建源映像。
- 构建完成后,将部署应用程序。 您可以从提供的 URL访问应用程序。
通过 Code Engine,您将自动获得许多与 Cloud Foundry相同的功能,例如自动缩放和蓝绿色推出更新,但您还将享受较新的功能 (例如,将应用程序缩减为零) 的优点,确保在应用程序未处于活动状态时不收取费用。
想要了解有关构建源代码的选项的更多信息? 请参阅 application create
和 job create
命令。
想要了解有关应用程序和作业的更多信息? 请参阅 在 Code Engine 和 使用作业和作业运行。
清除
完成本教程后,可以清除使用以下命令创建的资源。
删除应用程序
ibmcloud ce app delete --name myapp
删除应用程序时,还会删除关联的构建文件。
最后,删除构建从 IBM Cloud Container Registry创建的映像。
- 在 IBM Cloud 控制台中浏览至 注册表。
- 通过搜索应用程序名称来查找与应用程序关联的归档和映像。
- 选择归档和映像并删除。
后续步骤
- 刚开始迁移? 请查看 入门。
- 将 Cloud Foundry 术语与 Code Engine 进行比较。
- 在 Code Engine中部署 Cloud Foundry 应用程序: 入门 (当前页面)
- 应用程序是否使用服务绑定? 请查看 迁移服务绑定。
- 了解 缩放和流量管理。
- 查找 Code Engine 等效于 Cloud Foundry 命令。
- 从控制台添加 定制域映射。
- 仍然有疑问? 尝试 将 Cloud Foundry 应用程序迁移到 Code Engine 常见问题解答。
其他信息
- 了解有关 Code Engine 定价 的信息。
- 尝试其他 Code Engine 教程。
- 浏览其他 Code Engine 主题。