IBM Cloud Docs
使用 Code Engine 开发和部署应用程序

使用 Code Engine 开发和部署应用程序

在本教程中,您将学习如何使用 IBM Cloud® Continuous Delivery 创建开放式工具链,并在 Code Engine 上部署应用程序。 您还将学习如何在 Continuous Delivery 服务中实施工具链,以及如何使用工具链开发和部署一个简单的网络应用程序(应用程序)。

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

本教程中使用的工具链实现标准 DevOps 实践,例如代码扫描,验收测试,Git 存储库以及持续集成和持续交付功能。 创建集群并将其与 Continuous Delivery 集群组关联后,创建工具链以更改应用程序的代码并将更改推送到 Git Repos and Issue Tracking 存储库。 将更改推送到存储库时,基于 Tekton 的交付管道会自动构建和部署代码。

Tekton 是一个与供应商无关的开放式源代码 Kubernetes本机框架,可用于构建,测试和部署应用程序。 Tekton 提供了一组共享组件,用于构建持续集成和持续交付系统。 作为开放式源代码项目,Tekton 由 Continuous Delivery Foundation管理。 目标是通过为管道,工作流程和其他构建块提供行业规范,实现持续交付现代化。 通过 Tekton,您可以通过抽象底层实现详细信息,在云提供者或内部系统之间进行构建,测试和部署。 Tekton 管道内置到 Continuous Delivery中。

准备工作

在开始本教程之前,请确保您具有以下资源:

  • IBM Cloud 帐户。 根据您的 IBM Cloud 账户类型,访问某些资源可能会受到限制。 根据您的帐户计划限制,某些部署策略所需的某些功能可能不可用。 有关 IBM Cloud 帐户的更多信息,请参阅 设置 IBM Cloud 帐户升级帐户

  • Code Engine 项目 和 API 密钥。 您可以使用 UI 或 CLI 来创建这些资源。 有关 Code Engine 项目的更多信息,请参阅 Code Engine 项目

  • Continuous Delivery 服务的实例。

  • 可选。 存储在私钥管理保险库文件中并从单个位置集中管理的私钥。 有关从各种私钥管理和数据保护产品中进行选择的更多信息,请参阅 管理 IBM Cloud 私钥。 如果您还没有您选择的私钥管理保险库提供程序的实例,请创建一个。

  • 可选。 使用容器注册表命令行创建的名称空间。 要创建名称空间,请从命令行输入以下命令:

    ibmcloud cr namespace-add <my namespace>
    

    或者,您可以在 Container Registry 页面上创建名称空间。 有关在此位置创建命名空间的更多信息,请参阅 IBM Cloud Container Registry 服务。

创建工具链

在此步骤中,您将创建 开发 Code Engine 应用程序 工具链。 在工具链设置期间,将使用 IBM Cloud API 密钥和 Code Engine 项目名称来配置目标 Code Engine 项目。 稍后可以通过更新 Delivery Pipeline 配置来更改这些设置。 合并到目标 Git 存储库分支中的任何代码都将自动构建,验证并部署到 Code Engine 项目中。

要创建 开发 Code Engine 应用程序 工具链,请单击

创建工具链

或者,从IBM Cloud控制台,单击菜单图标汉堡包图标>平台自动化>工具链。 在“工具链”页面,单击“创建工具链”。 在创建工具链页面,单击开发Code Engine应用程序

配置工具链名称和区域

  1. 在“欢迎”屏幕上,查看工具链设置的缺省信息。 工具链的名称在 IBM Cloud 中起到标识符的作用。 确保工具链的名称在工具链中对于 IBM Cloud中的同一区域和资源组是唯一的。

    工具链区域可能与集群和注册表区域不同。

    Code Engine app toolchain name and region
    Code Engine secure app toolchain name and region

  2. 单击启动

配置应用程序源代码存储库

  1. 在“应用程序”步骤中,缺省情况下将显示应用程序源代码存储库的建议选项。 要查看底层 Git 集成的所有可用选项,请单击 高级选项。 缺省情况下,工具链使用缺省样本,该样本将样本应用程序克隆为 IBM托管的 Git Repos and Issue Tracking 存储库。

    Code Engine secure app repo
    Code Engine secure app repo

    您可以更改应用程序存储库的名称。 存储库的区域仍与工具链的区域相同。

  2. 可选。 工具链模板提供了 样本 Hello World 应用程序 应用程序。 如果您想为工具链链接现有的应用程序仓库,请选择 “自带应用程序”,并指定仓库的 URL。 该工具链仅支持链接到现有的 Git Repos and Issue Tracking 存储库。

  3. 单击继续

缺省情况下,会将应用程序存储库模板克隆到 Git Repos and Issue Tracking 组织。 要更改组织,请启用 高级选项 并指定存储库所有者。

安全地存储私钥

此工具链中的多个工具需要私钥,例如 IBM Cloud API 密钥。 必须将所有私钥安全地存储在私钥保险库中,并根据工具链的要求进行引用。

  1. 通过使用 IBM Cloud,您可以从各种私钥管理和数据保护产品中进行选择,以帮助您保护敏感数据并集中私钥。 在“私钥”步骤中,可以指定要在工具链中添加或除去的私钥保险库集成。 有关添加和除去保险库文件集成的更多信息 (包括先决条件和使用提示),请参阅 管理 IBM Cloud 私钥

    通过在模板中使用提示,工具链将自动填充预先配置的私钥; 您无需从附加到工具链的保险库文件集成中手动选择私钥。

    本教程使用 IBM Secrets Manager 作为私钥保险库。

    Code Engine secure app secrets options
    Code Engine secure app secrets options

    IBM Secrets Manager 可安全地存储和应用属于工具链的私钥,例如 API 密钥,图像签名或 HashiCorp 凭证。

    Code Engine Secrets Manager options
    Code Engine Secrets Manager options

  2. 单击继续

有关在 IBM Key Protect 或 HashiCorp, 中管理机密的更多信息,请参阅 机密

配置部署目标

配置要将应用程序部署到的目标 Code Engine 项目。 在应用程序通过构建,测试和扫描阶段之后,管道会将构建的应用程序映像部署到目标 Code Engine 项目。 现在,此部署已准备好进行验收测试或集成测试。

  1. 如果 API 密钥具有必需的访问权,那么将使用创建的 API 密钥,从保险库文件检索的 API 密钥或手动指定的 API 密钥自动装入以下字段。 如果 API 密钥有效,那么将自动填充容器注册表区域和名称空间集群区域,名称,名称空间和资源组的值。 您可以更新其中任何字段以与您的配置相匹配。

    • 应用程序名称: 应用程序的名称。 缺省应用程序名称与工具链名称相同。

    • IBM Cloud API 密钥: 用于在多个任务中与 ibmcloud CLI 工具进行交互的 API 密钥。 使用下列其中一种方法来指定要使用的 API 密钥:

      • 单击密钥图标以从您选择的私钥保险库导入现有 API 密钥。
      • 复制并粘贴现有 API 密钥。
      • 单击 新建 以创建 API 密钥。
      • 如果您没有现有 API 密钥,请生成新的 api-key

      您可以立即将生成的 API 密钥保存到您选择的现有密钥保险库。

    • 容器注册表区域: 容器名称空间所在的 Container Registry 区域。

    • 容器注册表名称空间: 从关联的 Container Registry 区域中的容器名称空间列表中进行选择。

    • Code Engine 区域: Code Engine 项目所在的区域。

    • Code Engine 资源组: 在其中创建 Code Engine 项目的资源组。

    • Code Engine 项目: 在 Code Engine中创建的项目的名称。 您的应用程序已部署到此项目。

    Code Engine secure app deployment target details for Rolling or Blue-Green
    Code Engine secure app rolling deployment target details

  2. 单击继续

添加可选工具集成

您可以将 IBM Cloud® DevOps Insights 工具集成添加到工具链,而无需任何其他配置。

DevOps Insights 包含在创建的工具链中。 您无需为 DevOps Insights提供任何配置步骤。 连续集成管道自动使用工具链中包含的 DevOps Insights 实例。DevOps Insights 聚集代码,测试,构建和部署数据,以提供对所有团队和发行版的速度和质量的可视性。

单击继续

完成工具链设置

在“摘要”页面上,单击 创建工具链。 此时将自动运行数个步骤,以设置工具链。

您可以在创建管道后配置各个工具链集成。

Code Engine secure app toolchain Summary
Code Engine secure app toolchain summary

探索新的工具链

创建工具链后,它会在图中显示属于工具链的每个工具集成。

浏览管道

您可以浏览管道以了解工具链流以及在每个管道中运行的不同操作。 您创建的工具链包含以下管道:

  • 拉取请求管道: 当开发者将其开发分支中的更改合并到主分支或存储库中的任何其他分支时运行。 拉取请求管道在应用程序源代码上运行单元测试和静态扫描。
  • 持续集成管道: 将更改合并到应用程序源代码存储库的主分支时运行。 持续集成管道在应用程序源代码,CIS 检查和材料清单 (BOM) 检查上运行“单元测试”,“代码覆盖”和“静态扫描”。 持续交付管道还会生成二进制构建工件,并将它们上载到工具链中配置的 IBM Cloud® Kubernetes Service。 持续集成管道生成构建工件的元数据并将其存储在“库存”存储库中。
  • Continuous Deployment 管道: 将 Code Engine 组件映像 (由 Continuous Integration 管道构建和部署) 部署到另一个要在另一个项目中托管的 Code Engine 组件。

运行拉取请求和持续集成管道

要启动拉取请求管道,请在应用程序存储库中创建合并请求:

  1. 在“工具链的概述”页面上的 存储库 卡上,单击 secure-app-toolchain-code-engine-demo 应用程序存储库。
  2. 从主存储库创建分支。
  3. 更新样本节点应用程序或自述文件中的一些代码并保存这些更改。
  4. 提交合并请求。
  5. 在“工具链的概述”页面上的 交付管道 卡上,单击 pr-pipeline 管道以打开拉取请求管道仪表板。 应用程序存储库中的相应合并请求将保持处于暂挂状态,直到拉取请求管道的所有阶段成功完成为止。
  6. 在拉取请求管道运行成功后,您可以选择该管道以浏览已完成的步骤。

拉取请求管道成功
拉取请求管道
*

要启动持续集成管道,请在应用程序存储库中合并持续集成合并请求:

  1. 转至合并请求。

  2. 合并请求,以便将更改复制到应用程序存储库的主分支。 将自动触发持续集成管道。

  3. 在“持续集成工具链概述”页面上的 交付管道 卡上,单击 ci-pipeline 管道以打开持续集成管道仪表板。

  4. 连续集成管道运行成功后,您可以单击管道运行以探索已完成的步骤。

    持续集成管道成功
    持续集成管道成功*持续集成管道

  5. 展开 deploy-component 任务,然后单击 execute 步骤。 选择 Logs 选项卡,然后滚动到日志末尾。 单击指向已部署的 Code Engine 应用程序的链接以查看正在运行的应用程序。

后续步骤

如果要将 Code Engine 组件 (即持续集成管道构建和部署的组件) 部署为另一个组件 (要在另一个代码引擎项目中托管),请执行以下步骤:

  1. 在“持续集成工具链概述”页面上的 交付管道 卡上,单击 cd-pipeline 管道以打开持续部署管道仪表板。

  2. 单击 运行管道 以启动 cd-manual-run 触发器。

  3. 连续部署管道运行成功后,您可以单击管道运行以浏览已完成的步骤。

    连续部署管道成功
    连续部署管道
    *

  4. 展开 deploy-component 任务,然后单击 执行 步骤。 单击 日志 选项卡,然后滚动到日志末尾。 单击指向已部署的 Code Engine 应用程序的链接以查看正在运行的应用程序。

如果要除去在 Code Engine上运行的样本应用程序,请执行以下步骤:

  1. 转至 Code Engine“项目”页面。

  2. 单击运行样本应用程序的项目。

  3. 选择 应用程序,然后选中样本应用程序的复选框。

  4. 单击删除

寻求帮助?

IBM Cloud 的AI助手,由 IBM 的 watsonx 提供支持,旨在帮助您了解如何在 IBM Cloud 中工作,以及如何使用可用产品和服务目录构建解决方案。 请参阅 “从人工智能助手获取帮助”。

有关更多支持选项,请参阅 获取 Continuous Delivery 的帮助和支持。