从 IBM Cloud Container Registry 中的映像部署应用程序工作负载
使用使用 IBM Cloud® Container Registry中的映像的 Code Engine 来部署应用程序。 您可以从控制台或使用 CLI 创建应用程序。
准备工作
-
您必须在 IBM Cloud® Container Registry中具有映像。 有关更多信息,请参阅 Container Registry 入门。 或者,可以从 存储库源 或 本地源 构建映像。
-
验证是否可以访问注册表。 请参阅 设置容器注册表的权限。
是否有兴趣配置项目,以便项目的所有用户都可以在 Container Registry 中存储和访问映像,而不必手动创建注册表私钥? 通过足够的许可权,您可以根据每个位置 (区域) 来配置此缺省注册表访问权。 如果您没有足够的许可权来执行这些操作,那么可以使用此页面来帮助您了解必需的许可权。 请参阅 配置项目范围的设置。
使用控制台在 Container Registry 中部署引用映像的应用程序
使用 Code Engine 控制台在 Container Registry 中部署使用映像的应用程序。
Code Engine 可以自动从帐户中的 Container Registry 名称空间拉取映像。 要从其他 Container Registry 帐户或专用 Docker Hub 帐户拉取映像,请参阅 从专用注册表中的映像部署应用程序工作负载。
- 打开 Code Engine 控制台。
- 选择 让我们开始。
- 选择应用程序。
- 输入应用程序的名称,例如 "
helloapp
。 为您的应用程序取一个在项目中独一无二的名称。 - 从可用项目列表中选择一个项目。 您还可以 创建新的。 您必须具有所选项目才能部署应用程序。
- 选择 容器映像,然后单击 配置映像。
- 选择容器注册表位置,例如
IBM Registry Dallas
。 - 针对 注册表私钥选择
Code Engine managed secret
。 由于此示例使用帐户中 Container Registry 名称空间中的映像,因此 Code Engine 可以自动为您创建和管理注册表私钥。 - 在注册表中选择要引用的 Code Engine 应用程序的现有名称空间和映像名称。 例如,选择
mynamespace
并选择该名称空间中的映像hello_repo
。 - 选择 标记的值; 例如,
latest
。 - 单击完成。
- 修改应用程序的任何运行时设置或环境变量。 有关这些选项的更多信息,请参阅 用于应用程序端点可视性的选项 和 用于部署应用程序的选项。
- 单击创建创建应用程序。
- 在应用程序状态更改为 Ready 后,可以测试应用程序。 单击 测试应用程序,然后在“测试应用程序”窗格中单击 发送请求。 要在 Web 页面中打开应用程序,请单击 应用程序 URL。
现在,您已部署应用程序,可以查看有关应用程序修订版和任何正在运行的实例的信息以及配置详细信息。
如果要向不在您帐户中的 Container Registry 实例添加注册表访问权,请参阅 添加对 Container Registry 的访问权。
使用 CLI 在 Container Registry 中部署具有映像的应用程序
使用 CLI 通过 ibmcloud ce app create
命令部署在 IBM Cloud® Container Registry 中使用映像的应用程序。 有关选项的完整列表,请参阅 ibmcloud ce app create
命令。
准备工作
- 设置 Code Engine CLI 环境。
- 创建和使用项目。
- 在可以使用引用 Container Registry中的映像的 Code Engine 应用程序之前,必须首先添加对注册表的访问权,以便 Code Engine 可以在部署应用程序时拉取该映像。 有关访问映像注册表所需的许可权的信息,请参阅 设置映像注册表的权限。
-
要添加对Container Registry 的访问,请 创建一个 IAM API 密钥。 要使用 CLI 创建“IBM CloudIAM API 密钥,请运行”
iam api-key-create
命令。 例如,要创建一个名为 "cliapikey
、描述名为 "My CLI API key
的 API 密钥,并将其保存到名为 "key_file
的文件中,请运行以下命令:ibmcloud iam api-key-create cliapikey -d "My CLI API key" --file key_file
如果选择不将密钥保存到文件中,那么必须记录创建密钥时显示的 API 密钥。 以后将无法检索。
-
创建 API 密钥后,将注册表访问权添加到 Code Engine。 要使用 CLI 添加对 Container Registry 的访问权,请使用
ibmcloud ce secret create --format registry
命令来创建注册表私钥。 例如,以下命令创建对名为myregistry
的 Container Registry 实例的注册表访问权。 请注意,尽管在示例命令中指定了--server
和--username
选项,但--server
选项的缺省值为us.icr.io
,当服务器为us.icr.io
时,--username
选项缺省为iamapikey
。ibmcloud ce secret create --format registry --name myregistry --server us.icr.io --username iamapikey --password APIKEY
示例输出
Creating registry secret 'myregistry'... OK
-
在 Container Registry中创建应用程序并引用
hello_repo
映像。 例如,使用ibmcloud ce app create
命令来创建myhelloapp
应用程序,以通过使用myregistry
访问信息来引用us.icr.io/mynamespace/hello_repo
。ibmcloud ce app create --name myhelloapp --image us.icr.io/mynamespace/hello_repo --registry-secret myregistry
此应用程序的映像名称的格式为
REGISTRY/NAMESPACE/REPOSITORY:TAG
,其中REGISTRY
和TAG
是可选的。 如果未指定“REGISTRY
,则默认为”docker.io
。 如果未指定“TAG
,则默认为”latest
。 -
部署应用程序后,您可以访问该应用程序。 要获取应用程序的 URL,请运行
ibmcloud ce app get --name myhelloapp --output url
。 当您对myhelloapp
应用程序执行 curl 操作时,将返回Hello World
。curl https://myhelloapp.abcdabcdhye.us-south.codeengine.appdomain.cloud
后续步骤
-
部署应用程序后,通过 URL 访问应用程序。
-
您可以创建 定制域映射 并将其分配给应用程序。 有关使用定制域名跨多个区域部署应用程序的更多信息,请参阅 配置高可用性应用程序。
-
现在,您的应用程序已部署,请考虑使应用程序成为事件驱动的应用程序。 通过使用事件预订,您可以通过 定期调度 来触发应用程序,或者设置应用程序以对事件 (例如 文件上载 或 Kafka 消息) 作出反应。
部署应用程序后,您可以使用以下 任何 方法 更新已部署的应用程序 及其引用的代码,而与创建或先前更新应用程序的方式无关:
-
如果您具有容器映像,那么根据 Open Container Initiative(OCI)标准,您只需要提供对该映像的引用,这将指向部署应用程序时容器注册表的位置。 您可以使用 公共注册表 或 专用注册表 中的映像来部署应用程序。
如果使用
app create
命令创建了应用程序,并且指定了--build-source
选项以从本地或存储库源构建容器映像,并且要将应用程序更改为指向其他容器映像,那么必须首先从应用程序中除去构建的关联。 例如,运行ibmcloud ce application update -n APP_NAME --build-clear
。 从应用程序中除去构建的关联后,可以更新应用程序以引用其他映像。 -
如果您是从位于 Git 存储库中的源代码开始,那么可以选择让 Code Engine 负责从源构建映像并使用 单个 操作部署应用程序。 在此场景中,Code Engine 将映像上载到 IBM Cloud® Container Registry。 要了解更多信息,请参阅 从存储库源代码部署应用程序。 如果要对映像的构建进行更多控制,那么可以选择在部署应用程序之前使用 Code Engine 构建映像。
-
如果是从本地工作站上的源代码开始,那么可以选择让 Code Engine 负责从源构建映像并使用 单个 CLI 命令部署应用程序。 在此场景中,Code Engine 将映像上载到 IBM Cloud® Container Registry。 要了解更多信息,请参阅 使用 CLI 从本地源代码部署应用程序。 如果要对映像的构建进行更多控制,那么可以选择在部署应用程序之前使用 Code Engine 构建映像。
例如,您可以选择让 Code Engine 在您为应用程序开发源时处理本地源的构建。 然后,在映像成熟后,您可以更新已部署的应用程序以引用所需的特定映像。 您可以根据需要重复此过程。
部署更新后的应用程序时,将下载并部署所引用容器映像的最新版本,除非为该映像指定了标记。 如果为映像指定了标记,那么标记的映像将用于部署。
要查找更多代码示例吗? 请查看 IBM Cloud Code Engine GitHub 存储库的样本。