使用 IBM Cloud Satellite 开发和部署应用程序
在本教程中,您将学习如何使用 IBM Cloud® Continuous Delivery 创建开放式工具链,并在 Satellite 上部署应用程序。 您还将学习如何在 Continuous Delivery 服务中实施工具链,以及如何使用工具链开发和部署一个简单的网络应用程序(应用程序)。
IBM Cloud Satellite 将公共云服务引入任何环境,使具有严格法规要求的客户能够将这些服务的灵活性和敏捷性用于其安全的内部部署数据中心。Continuous Delivery 使用 Satellite 配置 在 IBM Cloud Satellite中的一组集群中部署应用程序。 使用 Satellite Config,创建配置以指定要部署到在 Satellite 位置或 IBM Cloud中运行的 Kubernetes 或 Red Hat® OpenShift® on IBM Cloud® 集群的集群组的 Kubernetes 资源。
本教程中使用的工具链实现标准 DevOps 实践,例如代码扫描,验收测试,Git 存储库以及持续集成和持续交付功能。 创建集群并将其与 Continuous Delivery 集群组关联后,创建工具链以更改应用程序的代码并将更改推送到 Git Repos and Issue Tracking 存储库。 将更改推送到存储库时,基于 Tekton 的交付管道会自动构建并部署代码。
Tekton 是一个与供应商无关的开放式源代码 Kubernetes本机框架,可用于构建,测试和部署应用程序。 Tekton 提供了一组共享组件,用于构建 持续集成 和 持续交付 系统。 作为开放式源代码项目,Tekton 由 Continuous Delivery Foundation管理。 目标是通过为管道,工作流程和其他构建块提供行业规范,实现持续交付现代化。 借助 Tekton,您可以通过抽象底层实现详细信息,在云提供者或本地系统之间进行构建,测试和部署。 Tekton 管道内置到 Continuous Delivery中。 有关 IBM Cloud® Kubernetes Service的更多信息,请参阅 IBM Cloud® Kubernetes Service。
本教程中使用的模板与 Kubernetes的标准套餐配合使用。
准备工作
在开始本教程之前,请确保您具有以下资源:
-
IBM Cloud 帐户。 根据您的 IBM Cloud 账户类型,访问某些资源可能会受到限制。 根据您的帐户计划限制,某些部署策略所需的某些功能可能不可用。 有关 IBM Cloud 帐户的更多信息,请参阅 设置 IBM Cloud 帐户 和 升级帐户。
-
Kubernetes 集群 和 API 密钥。 您可以使用 UI 或 CLI 来创建这些资源。 集群的配置可能需要一些时间。 在创建集群时,它将通过“部署”,“暂挂”和“就绪”阶段进行。 有关 Kubernetes 集群的更多信息,请参阅 Kubernetes 集群。
-
Satellite 集群组,其中包含工具链所需的集群。 本教程中的工具链支持仅包含一种集群类型的 Satellite 集群组: Kubernetes 集群或 Satellite 集群。
-
Continuous Delivery 服务的实例。
-
可选。 存储在私钥管理保险库文件中并从单个位置集中管理的私钥。 有关从各种私钥管理和数据保护产品中进行选择的更多信息,请参阅 管理 IBM Cloud 私钥。 如果您还没有所选私钥管理保险库提供程序的实例,请创建一个。
-
可选。 使用容器注册表命令行创建的名称空间。 要创建名称空间,请从命令行输入以下命令:
ibmcloud cr namespace-add <my namespace>
或者,您可以在 Container Registry 页面上创建名称空间。 有关在此位置创建命名空间的更多信息,请参阅 IBM Cloud Container Registry 服务。
创建工具链
在此步骤中,您将创建 使用部署策略将应用程序开发和部署到 Kubernetes 工具链。 在工具链设置期间,将使用 IBM Cloud API 密钥和 Kubernetes 集群名称来配置目标 Kubernetes 集群。 稍后可以通过更新 Delivery Pipeline 配置来更改这些设置。 合并到目标 Git 存储库分支中的任何代码都将自动构建,验证并部署到 Kubernetes 集群中。
要创建 使用部署策略将应用程序开发和部署到 Kubernetes 工具链,请单击
或者,从IBM Cloud控制台,单击菜单图标>平台自动化>工具链。 在“工具链”页面,单击“创建工具链”。 在“创建工具链”页面,单击“开发并使用部署策略将应用程序部署到Kubernetes”。
配置工具链名称和区域
复查工具链设置的缺省信息。 工具链的名称在 IBM Cloud 中起到标识符的作用。 确保工具链的名称在工具链中对于 IBM Cloud中的相同区域和资源组是唯一的。
工具链区域可能与集群和注册表区域不同。

选择部署策略
工具链将创建一个 Continuous Deployment Pipeline,以在 Satellite中定义的集群组上部署应用程序 Docker 映像。
-
单击 通过 Satellite的多个集群 以使用 Satellite来部署应用程序。
Deployment strategies -
单击继续。
配置应用程序源代码存储库
在“应用程序”步骤中,缺省情况下将显示应用程序源代码存储库的建议选项。 要查看底层 Git 集成的所有可用选项,请单击 高级选项。 缺省情况下,工具链使用缺省样本,该样本将样本应用程序克隆为 IBM托管的 Git Repos and Issue Tracking 存储库。

您可以更改应用程序存储库的名称。 存储库的区域仍与工具链的区域相同。
工具链模板提供 Hello Containers 应用程序 应用程序。 如果您想为工具链链接现有的应用程序仓库,请选择 “自带应用程序”,并指定仓库的 URL。 该工具链仅支持链接到现有的 Git Repos and Issue Tracking 存储库。
缺省情况下,会将应用程序存储库模板克隆到 Git Repos and Issue Tracking 组织。 要更改组织,请启用 高级选项 并指定存储库所有者。
配置库存存储库
库存存储库记录由持续集成工具链构建的工件的详细信息。 您可以创建作为 库存存储库模板 的克隆的新库存存储库,也可以使用您在工具链之间共享的现有库存存储库。

缺省情况下,会将库存存储库模板克隆到 Git Repos and Issue Tracking 组织。 要更改组织,请选择 高级选项 并指定存储库所有者。
安全地存储私钥
此工具链中的多个工具需要私钥,例如 IBM Cloud API 密钥。 必须将所有私钥安全地存储在私钥保险库中,并根据工具链的要求进行引用。
通过使用 IBM Cloud,您可以从各种私钥管理和数据保护产品中进行选择,以帮助您保护敏感数据并集中私钥。 在“私钥”步骤中,可以指定要在工具链中添加或除去的私钥保险库集成。 有关添加和除去保险库文件集成的更多信息 (包括先决条件和使用提示),请参阅 管理 IBM Cloud 私钥。
通过在模板中使用提示,将使用预先配置的私钥自动填充工具链; 您无需从附加到工具链的保险库文件集成中手动选择私钥。
本教程使用 IBM Secrets Manager 作为私钥保险库。

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

有关在 IBM Key Protect 或 HashiCorp, 中管理机密的更多信息,请参阅 机密。
配置部署目标
配置要将应用程序部署到的目标 Kubernetes 集群。 在应用程序通过构建,测试和扫描阶段后,管道会将构建的应用程序映像部署到目标 Kubernetes 集群。 现在,此部署已准备好进行验收测试或集成测试。
如果 API 密钥具有必需的访问权,那么将使用创建的 API 密钥,从保险库文件中检索的 API 密钥或手动指定的 API 密钥自动装入以下字段。 如果 API 密钥有效,那么将自动填充容器注册表区域和名称空间集群区域,名称,名称空间和资源组的值。 您可以更新其中任何字段以与您的配置相匹配。
-
应用程序名称: 应用程序的名称。 缺省应用程序名称为
hello-containers
。 -
IBM Cloud API 密钥: 用于在多个任务中与
ibmcloud
CLI 工具进行交互的 API 密钥。 使用下列其中一种方法来指定要使用的 API 密钥:- 单击密钥图标以从您选择的私钥保险库导入现有 API 密钥。
- 复制并粘贴现有 API 密钥。
- 单击 新建 以创建 API 密钥。
- 如果您没有现有 API 密钥,请生成新的
api-key
。
您可以立即将生成的 API 密钥保存到您选择的现有密钥保险库。
-
Satellite 集群组名: 在 Satellite中创建的集群组的名称。 应用程序已部署到此集群组。
-
集群名称空间: 如果集群名称空间在集群组中的集群中不存在,那么工具链将创建该集群名称空间。

添加可选工具集成
您可以将 IBM Cloud® DevOps Insights 工具集成添加到工具链,而无需任何其他配置。
DevOps Insights 包含在创建的工具链中。 您不需要为 DevOps Insights提供任何配置步骤。 连续集成管道自动使用工具链中包含的 DevOps Insights 实例。DevOps Insights 聚集代码,测试,构建和部署数据,以提供对所有团队和发行版的速度和质量的可视性。
单击继续。
完成工具链设置
在摘要页面,单击创建。 此时将自动运行数个步骤,以设置工具链。
您可以在创建管道后配置各个工具链集成。

探索新的工具链
创建工具链后,它将在图中显示属于工具链的每个工具集成。
浏览管道
您可以浏览管道以了解工具链流以及在每个管道中运行的不同操作。 您刚刚创建的工具链包含三个管道:
- 拉取请求管道: 当开发者将其开发分支中的更改合并到主分支或存储库中的任何其他分支时运行。 拉取请求管道在应用程序源代码上运行单元测试和静态扫描。
- 持续集成管道: 将更改合并到应用程序源代码存储库的主分支时运行。 持续集成管道在应用程序源代码,CIS 检查和材料清单 (BOM) 检查上运行“单元测试”,“代码覆盖”和“静态扫描”。 持续交付管道还会生成二进制构建工件,并将它们上载到工具链中配置的 IBM Cloud® Kubernetes Service。 持续集成管道生成构建工件的元数据并将其存储在“库存”存储库中。
- 持续部署管道: 将构建工件部署到部署环境。 管道通过运行运行状况检查来验证应用程序的成功部署。 在连续集成管道成功完成后,必须手动触发此管道。 根据您选择的部署策略,会向持续交付管道添加更多触发器。
运行拉取请求和持续集成管道
要启动拉取请求管道,请在应用程序存储库中创建合并请求:
- 在“工具链的概述”页面上的 存储库 卡上,单击
compliance-app-<timestamp>
应用程序存储库。 - 从主存储库中,创建分支。
- 更新样本节点应用程序或自述文件中的一些代码并保存这些更改。
- 提交合并请求。
- 在“工具链的概述”页面上的 存储库 卡上,单击
pr-pipeline
存储库以启动拉取请求管道。 应用程序存储库中的相应合并请求将保持处于暂挂状态,直到拉取请求管道的所有阶段成功完成为止。 - 在拉取请求管道运行成功后,您可以选择该管道以浏览已完成的步骤。

要启动持续集成管道,请在应用程序存储库中合并持续集成合并请求:
- 转至合并请求。
- 合并请求,以便将更改复制到应用程序存储库的主分支。 将自动触发持续集成管道。
- 在“持续集成工具链概述”页面上的 存储库 卡上,单击
ci-pipeline
存储库以启动持续集成管道。 - 连续集成管道运行成功后,您可以单击管道运行以探索已完成的步骤。

左移练习
在安全应用开发世界中,左移是一种防止和发现缺陷和安全漏洞等问题,并在软件交付过程早期运行合规性检查的做法。 左移包括以下实践:
- 尽早运行可对代码或存储库本身运行的检查,并且不需要构建的映像。 这些检查可防止不合规代码合并到存储库的主分支中。 由于未从拉取请求管道收集证据,因此其目标是将合规性检查尽可能向左移。
- 所有检查都在每次管道运行中运行。 如果先前检查失败,那么管道将前进到下一个检查。 要评估运行中是否有任何故障,请检查具有管道评估程序的管道的最后一步。
单元测试和漏洞扫描的结果将发布到工具链中的 DevOps Insights 实例。 要查看这些结果,请单击工具链中的 DevOps Insights 磁贴,然后转至“质量仪表板”页面。
要评估管道运行中是否有任何故障,请检查管道的最后一个步骤,该步骤具有管道评估程序。
探索持续交付管道
拉取请求和持续集成管道在所有部署策略中通用。 持续交付管道设计和实现更改基于您先前在本教程中选择的部署策略。
您可以通过以下任一方式启动持续交付管道:
- 手动触发持续交付管道。
- 在库存存储库中的每个
Merge
操作后自动触发持续交付管道。 合并后,必须手动触发持续交付管道运行。
Git Repos and Issue Tracking 触发器设置为触发自动持续交付管道,但缺省情况下已禁用。 您可以在首次提升更改后启用此触发器。

后续步骤
如果要除去正在 Kubernetes上运行的样本应用程序,那么必须清除 Kubernetes 集群:
-
转至 Kubernetes 集群 主页。
-
选择运行样本应用程序的集群。
-
单击 Kubernetes 仪表板。
-
从运行样本应用程序的位置,选择 名称空间。
Kubernetes namespace -
删除所选名称空间中列出的相关部署,服务和入口。
寻求帮助?
IBM Cloud 的AI助手,由 IBM 的 watsonx 提供支持,旨在帮助您了解如何在 IBM Cloud 中工作,以及如何使用可用产品和服务目录构建解决方案。 请参阅 “从人工智能助手获得帮助”。
有关更多支持选项,请参阅 获取 Continuous Delivery 的帮助和支持。