IBM Cloud Docs
使用 DevSecOps 设置 Tekton 持续部署管道

使用 DevSecOps 设置 Tekton 持续部署管道

通过本教程,您可以建立符合合规性最佳实践的持续部署 (CD) 管道和工具链。

准备工作

启动 CD 工具链设置

Continuous Delivery服务提供的模板可引导您完成工具链设置,并按逻辑顺序创建流程。 进度指示器显示完成配置的步骤。 按照以下步骤访问 CI 工具链模板。

  1. 访问 IBM Cloud 控制台
  2. 单击 Menu Menu 图标,然后选择 DevOps
  3. 在工具链页面,单击 创建工具链
  4. 单击 CD-Develop with DevSecOps practices 磁贴。

设置 CI 工具链设置

欢迎页面概述了工具链的目的,以及指向文档和相关材料的指针。

  1. 单击启动

  2. 在 IBM Cloud 中为同一区域和资源组输入工具链中的 工具链名称。 确保工具链名称在 IBM Cloud 中同一区域和资源组的工具链中是唯一的。

  3. 从下拉列表中选择一个地区

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

  4. 从下拉列表中选择一个资源组

  5. 单击继续

    只有当当前步骤的配置完成且有效时,才能进入下一步。 您可以随时单击 Back 查看引导安装程序中的前几步。 工具链安装程序会保留后续步骤中的所有配置设置。

    某些步骤包括 切换到高级配置切换按钮。 默认情况下,这些步骤将为您提供最低配置。 不过,需要更精细控制的高级用户可以单击 切换到高级配置切换按钮,显示底层集成的选项。

设置 CD 工具集成

CD 工具集成包括 CD 工具链使用的各种工具和服务集成的设置。 如果您使用 CI 管道工具链模板 来设置您的 CI 流程,请参考您的 CI 工具链并复制该工具链中使用的版本库名称。

应用程序相关存储库

如果要从头开始设置 CI 工具链,请在创建 CI 工具链时配置这些存储库。

清单
部署信息通过该资源库进行跟踪。 每成功运行一次 CI 管道,CD 管道就会创建一个新的分支,以创建的 CR 编号命名,并在部署结束后合并到主分支。 例如,https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-inventory
问题
存储在构建和部署过程中发生的有关事件的问题。 例如,https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-issues
证据
收集属于应用程序的所有原始合规证据。 例如,https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-evidence
工具链
tekton 管道定义,如管道、触发器和监听器,都存储在此资源库中。 例如,https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-toolchain

从 CI 工具链中获取软件源名称后,使用 Guided Setup 开始创建 CD 工具链。 在设置过程中,您可以为每个版本库提供现有 IBM 托管 Git Repos and Issue Tracking 版本库的 URL。 目前,该工具链仅支持创建 Git Repos and Issue Tracking 仓库。 未来的版本将支持使用 GitHub, GitHub Enterprise (GHE) 和其他 SCM 提供商创建存储库。

清单

清单存储库记录了由 CI 工具链构建的工件的详细信息。 工具链的默认行为是 使用现有清单,为工具链链接现有清单存储库。 该工具链目前仅支持链接到现有的 Git Repos and Issue Tracking 资源库。 有关详细信息,请参阅 应用程序相关存储库

  1. 您可以接受模板中提供的默认配置。
  2. 单击继续

问题

问题库记录 CI 管道运行时发现的问题。

  1. 您可以接受模板中提供的默认配置。
  2. 单击 继续

管道配置

管道配置资源库包含部署、测试和其他自定义任务所需的 YAML 文件和脚本。 有关 Git repos 的更多信息,请参阅 配置您的 Git Repos and Issue Tracking。 有关自定义脚本的更多信息,请参阅 自定义脚本

  1. 接受 Source ProviderCreate a new deployment configuration repository 的默认设置。

    工具链会克隆您的 Git 组织中的 sample hello-compliance-deployment。 有关 Git repos 的更多信息,请参阅 配置您的 Git Repos and Issue Tracking。 有关自定义脚本的更多信息,请参阅 自定义脚本

  2. 输入 新版本库名称

  3. 单击继续

密钥

本工具链中的一些工具,以及您的自定义脚本中的一些工具,都需要秘密才能访问特权资源。 IBM Cloud API 密钥就是这种秘密的一个例子。 将这些机密安全地存储在机密管理工具中,例如 IBM Key Protect for IBM CloudIBM Cloud® Secrets ManagerHashiCorp Vault秘密管理工具 可集成到工具链中,以便您在 Tekton 管道中轻松引用秘密。

您可以使用 AppRole 身份验证方法来读取秘密值。

  1. 本教程使用 IBM Cloud® Secrets Manager 作为秘密库。 地区资源组服务名称字段将根据可用选择自动填充。 单击下拉指示器查看其他选择。
  2. 键入 Secrets Manager 实例名称
  3. 从下拉列表中选择 授权类型
  4. 单击继续

证据存储

证据库存储 DevSecOps CI 管道生成的所有证据和工件。

  1. 选择 使用现有证据锁存储库
  2. 选择在配置持续集成 (CI) 工具链时创建的 Repository URL。 有关证据存储的更多信息,请参阅 证据
  3. 切换 IBM Cloud Object Storage 邮筒滑块,将所有证据存储到 IBM Cloud Object Storage 邮筒中。
  4. 单击继续

云 Object Storage 桶

您必须拥有 IBM Cloud Object Storage 实例 和一个 水桶 作为合规证据保管箱。

  1. Cloud Object Storage 实例Bucket 名称Cloud Object Storage 端点字段将自动填充。
  2. 输入您的 Service ID API 密钥
    • 首选:点击密钥图标,即可从保密库导入现有密钥。
    • 可复制和粘贴现有密钥。
  3. 单击继续

端点字段为可选项。 建议在工具链设置期间或管道运行期间选择或提供端点。

部署

配置清单目标和部署应用程序的 Kubernetes 集群:

  1. 默认 应用程序名称hello-compliance-app

  2. 键入您的 IBM Cloud API 密钥。 API 密钥用于在多项任务中与 IBM Cloud CLI 工具交互。

    • 首选:点击密钥图标,即可从保密库导入现有密钥。
    • 可复制和粘贴现有密钥。
    • 点击 新建 + 可以创建新密钥。

    新生成的 API 密钥可立即保存到保密库中。

  3. 如果 API 密钥有效且有足够的访问权限,Container Registry, Container Registry 命名空间开发集群区域资源组集群名称集群命名空间已自动填充。 您可以更改其中任何字段,以符合您的配置。

  4. 单击继续

IBM Cloud API 密钥

API 密钥用于在多项任务中与 ibmcloud CLI 工具交互。

  • 可从作为先决条件创建的现有秘密提供程序导入现有的 API 密钥(推荐使用)
  • 可复制和粘贴现有密钥(不建议使用)
  • 单击 New + 可创建新密钥。如果没有,请生成 api-key。 新生成的 API 密钥可立即保存到现有的 Key Protect 实例中

填写 API 密钥字段后,注册表和群集相关字段将自动填写。

清查目标分支和源分支

  1. 接受 单群集(基于推送的部署) 将应用程序部署到虚拟服务器实例等目标,或使用 Custom 选项自定义部署过程。
  2. 单击 Continue 查看群集页面。
  3. 输入 IBM Cloud API 密钥字段,以便在多项任务中与 CLI 工具交互。 注意单击密钥图标可从保密库导入现有密钥。
  4. 验证您的 群集区域资源组群集名称群集名称空间字段,在此创建目标群集。
  5. 单击继续

变更申请管理

  1. 选择 IBM Cloud 托管的 Git Repos and Issue Tracking 资源库来管理更改请求。 有关更多信息,请参阅 自动化变更管理
  2. 单击继续

DevOps Insights 工具链

将现有的 DevOps Insights 实例从另一个工具链链接到此管道,这样 CI 和 CD 工具链管道中的所有构建、部署和测试记录都能收集到同一个地方。

CD 工具链可将部署记录发布到现有的 DevOps Insights 实例。 要启用此功能,请在 DevOps Insights 工具链 ID 列表中选择包含现有 DevOps Insights 实例的工具链 ID。

  1. 提供您的 DevOps Insights IBM Cloud API 密钥
  2. 接受默认配置。
  3. 验证您的 区域资源组DevOps Insights 工具链 IDDevOps Insights 目标环境字段,您的目标环境就是在这些字段中创建的。
  4. 单击继续

可选工具

Slack

配置 Slack 以接收有关拉取请求或 CI 管道事件的通知。 您也可以在创建工具链后添加 Slack 工具。

  1. 输入您的 Slack 网络钩子。 有关更多信息,请参阅 Slack webhook
  2. 输入您的黑客频道来发布消息。
  3. 输入空白队名。 例如,如果您的团队网址是 https://team.slack.com,那么团队名称就是 team
  4. 选择要为 Automated Slack Notifications 接收通知的事件。
  5. 单击继续

安全性和合规性

要将工具链与 Security and Compliance Center 服务集成,您需要为 Security and Compliance Center 数据收集器提供名称和证据锁存储库名称。 有关详细信息,请参阅 Security and Compliance Center工具集成 配置流程。

  1. 输入 Name 以验证工具链的 Security and Compliance Center 态势。
  2. 输入 证据存储库名称或 URL
  3. 接受 Evidence context 作为 Continuous Deployment
  4. 接受 使用带有附件的配置文件作为 Disabled。 有关详细信息,请参阅 Security and Compliance Center工具集成 配置流程。
  5. 单击 Continue 查看摘要页面。

私人工人

交付管道私有工作者工具集成与一个或多个私有工作者相连接,这些私有工作者可以单独运行交付管道工作负载。 有关更多信息,请参阅 与私人工人合作

  1. 为交付管道私人工作者输入 名称
  2. 输入您的 Service ID API 密钥
    • 首选:点击密钥图标,即可从保密库导入现有密钥。
    • 可复制和粘贴现有密钥。
  3. 单击继续

创建光盘工具链

  1. 在摘要页面,单击 创建
  2. 等待工具链创建,查看摘要页面,如屏幕截图所示。 这可能需要几分钟时间。

DevSecOps CD 工具链已创建
图 1。 DevSecOps 已创建 CD 工具链

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

探索 CD 工具链

运行推广管道

在运行推广管道之前,请确保 CI 管道 已成功运行。

  1. 单击 cd-管道

  2. 单击 运行****手动促销触发器管道。

  3. 单击 Run 以触发管道。

  4. 单击 手动促销触发器 > #1promotion-pipelinerun 管道。 等待推广管道运行完成并检查执行日志。

    推广管道会创建一个拉取请求,其中包含库存源环境(如 master 分支)上的库存内容,目标是库存目标环境(如 stagingproduction 分支)。

  5. 推广管道成功完成后,promote 任务日志会提供一个链接,指向清单存储库中的拉取请求。 拉取请求名称的格式为 promote <inventory source environment> to <inventory target environment>,例如 promote master to prod

  6. 使用日志中提供的链接在浏览器中打开拉取请求。 填写以下部分的详细信息:

    • 优先级:(必须)设置为 CriticalHighModerateLowPlanning
    • 更改请求受让人:(必填)受让人的 Email-ID
    • 附加说明:有关应用程序更改的说明。
    • 目的/目标:对应用程序进行更改的目的。
    • 影响说明:更改对应用程序行为或环境的影响。
    • 退出计划:部署失败时的退出步骤。
  7. 填写 Pull Request 中的字段,然后单击 save

  8. 如果 CI 中的任何合规性检查失败,而您又想 继续部署,请将 EMERGENCY 标签添加到您的拉取请求中

  9. 合并来自 Git Repos and Issue Tracking 的拉取请求。

拉取请求的详细信息会在运行 CD 管道时使用,以在变更请求库中创建和更新。

运行光盘管道

运行推广管道

  1. 在运行 Promotion Pipeline 之前,请确保 CI 管道已成功运行。

  2. 推广管道会在清单源环境中创建一个包含清单内容的 Pull Request。 例如,master 针对清单目标环境分支,如 stagingprod。 为 PR 创建一个中间分支,该分支可在 PR 合并后丢弃。

    运行推广管道
    图 2。 运行推广管道

  3. Promotion Pipeline 成功完成后,promote 任务会为您提供一个指向清单存储库中前面提到的 Pull Request 的链接。 拉取请求名称格式如下:

    promote <Inventory Source Environment> to <Inventory Target Environment>
    
  4. 使用日志中提供的链接在浏览器中打开 Pull Request 文件。 完成以下部分:

    • 优先级:(必填)关键、高、中等、低、规划中的一个
    • 更改请求受让人:(必填)受让人的电子邮件标识
    • 附加说明:关于应用程序更改的说明
    • 目的:对应用程序进行更改的目的
    • 影响说明:更改对应用程序行为或环境的影响
    • 退出计划:部署失败时的退出步骤
  5. 完成 Pull Request 中的字段并保存。

  6. 合并 Git Repos and Issue Tracking 中的 Pull Request 内容。

在 CD 管道运行期间,CD 管道会使用 Pull Request 的详细信息在变更请求管理库中创建变更请求。

运行光盘管道

您可以通过手动或自动方式触发 CD 管道。 您可以随时手动触发 CD 管道,但如果上次成功部署后没有任何更改,CD 管道就会提前停止,因为没有任何东西要部署。 设置了一个 Git Repos and Issue Tracking 触发器来触发自动 CD 管道,但默认情况下是禁用的,可以在第一次 promotion.You可以添加并使用 force-redeploy 变量 来重新运行 CD,而无需更改代码。 查看 DevSecOps CD 管道的成功屏幕截图。

DevSecOps CD 管道手动推广
图 3。 DevSecOps CD 管道人工推广

DevSecOps CD 管道自动推广
图 4。 DevSecOps CD 管道自动晋升

您也可以随时手动触发 CD Pipeline,但如果上次成功部署后没有任何更改,CD Pipeline 不会部署任何新内容。

一次成功的光盘管道运行是这样的

DevSecOps CD 管道成功
图 31。 DevSecOps CD 管道成功

光盘管道中的任务流程:

DevSecOps CD 任务
图 5。 DevSecOps CD 任务

成功运行 CD 管道后,就可以找到在 prod 命名空间上运行的示例应用程序。 可在 CD 管道运行的 prod deployment 步骤的 run stage 子步骤下找到应用程序 URL。 使用该 URL 检查应用程序是否正在运行。

DevSecOps 应用程序正在运行
图 6。 DevSecOps 应用程序正在运行