设置 DevSecOps 基础架构和 CI 工具链,以部署安全应用程序
使用本教程,通过使用基于 Terraform 的快速入门模板,为 CI 和 CD 工具链自动设置和供应基础结构。 该模板使用合规性和安全性的 DevSecOps 最佳实践。 该模板使用 IBM Cloud® Schematics 工作空间,这将自动创建所需基础结构,以安全地将应用程序部署到 Kubernetes 或 Red Hat® OpenShift®。该模板使用 DevSecOps IBM Cloud® Continuous Delivery 工具链管道结构。 工具链已预先配置为通过库存集成,变更管理,证据收集和部署进行持续交付。
IBM Cloud Schematics 提供 Terraform 即服务,支持您使用高级脚本语言对 IBM Cloud 环境中所需的资源建模,并启用基础架构即代码 (IaC)。 Terraform 是由 HashiCorp开发的开放式源代码软件。 Terraform 支持可预测且一致的资源供应,以快速构建复杂的多层云环境。
在本教程中,您将遵循三个简单步骤来创建 Schematics 工作空间,应用 Terraform 执行计划并更新环境属性值。 应用套餐时,Schematics 工作空间会设置安全基础结构。 此基础结构可与您的团队共享,并且适用于 DevSecOpsA methodology that integrates security practices with the software development and operations lifecycle. The goal of the merge is to prioritize the balance of development speed and security. CI 和 CD 工具链模板。
自动化基础结构设置将创建使用 DevSecOps CI 和 CD 模板中的缺省值自动供应的资源。 您可以在 Schematics 工作空间的 变量 部分中找到缺省值。 将创建以下资源:
- IBM Cloud® Kubernetes Service 或 IBM Cloud 上的 Red Hat OpenShift 中的集群。
- 标准 IBM Cloud Object Storage 实例和存储区。
- IBM Cloud® Secrets Manager. 请注意,仅允许一个 Secrets Manager 实例。 如果您已有 Secrets Manager 服务,请确保覆盖 步骤 2 中的
sm_service_name
缺省值。 - GPG 映像签名密钥。
- 功能齐全的 DevSecOps CI 工具链,用于使用 DevSecOps 合规性和安全性最佳实践来构建,测试和部署样本 Node.js 应用程序。
准备工作
- 要完成本教程,请使用您是所有者或具有 完全管理员访问权 的 现收现付或预订 IBM Cloud 帐户。 如果您已有 IBM Cloud 帐户并且需要对其进行升级,请参阅 升级帐户。
- 如果要在创建工具链或基础结构元素后与这些元素进行交互,请安装 IBM Cloud CLI。
- 获取 GitLab 个人访问令牌。 输入个人访问令牌的名称。 在与 CI 工具链相同的区域中创建令牌。 请确保复制并保存令牌,因为您稍后需要该令牌,并且无法再次访问该令牌。
- 创建 IBM Cloud API 密钥。 请确保复制并保存或下载 API 密钥值,因为稍后需要该值,并且无法再次访问该值。
创建 Schematics 工作空间
应用 Terraform 执行计划
-
在 Schematics“设置”页面的 变量 部分中,输入每个变量的值。 必填字段没有缺省值。 您可以覆盖缺省值。
如果覆盖
sm_service_name
值,那么 Terraform 执行计划将使用现有资源而不是创建新资源。 -
对于
gitlab_token
变量,输入先前获取的个人访问令牌。 -
对于
ibmcloud_api_key
变量,输入先前获取的 IBM Cloud API 密钥。 -
对于
registry_namespace
变量,输入容器注册表名称空间值。 要创建名称空间,请参阅 Container Registry 名称空间。 -
对于
kube_version
变量,请在命令行上运行ibmcloud ks versions
以查看可用版本。 -
可选。 如果已有 Secrets Manager 实例,请输入
sm_service_name
变量的名称。 否则,请勿更改此变量。 -
可选。 如果要调整集群的大小或位置,可以覆盖以下变量:
datacenter
,default_pool_size
,machine_type
,hardware
,public_vlan_num
或private_vlan_num
(缺省值适用于 dal12/us-south 数据中心)。 -
可选。 单击 生成计划。 此操作将创建 Terraform 执行计划并检查您的配置是否存在语法错误。 在 Schematics“作业”页面上,您可以查看日志文件以查找错误和 IBM Cloud 资源,必须创建,修改或删除这些资源才能实现 Terraform 模板的正确状态。
-
输入变量的所有值并对更改感到满意后,单击 应用计划 以运行基础结构代码。
由于创建新的 Kubernetes 或 OpenShift 集群,完成此步骤需要一些时间 (通常为 20 到 30 分钟,但可能需要更长时间)。
-
在 Schematics“作业”页面上,您可以通过展开作业名来查看日志。
-
应用计划后,查看生成的 IBM Cloud DevSecOps CI 工具链的 URL。 URL 位于以
View the toolchain at:
开头的行上的日志文件末尾附近。
如果再次应用套餐,那么将删除先前创建的 Kubernetes 或 OpenShift 集群以及部署到该集群的任何应用程序,并创建新集群。 但是,如果覆盖缺省集群名称,那么将使用该集群。
部署应用程序
执行以下步骤以运行管道。
- 转至新创建的 DevSecOps CI 工具链。
- 单击以
compliance-app
开头的 Git 磁贴。 - 要触发 pr-pipeline,请更新
README.md
文件中的某些文本,然后针对main
分支启动 PR。 - 在 目标分支 字段中,将分支名称从
main
更改为其他名称。 例如,mybranch
。 - 确保选中“启动具有这些更改的新合并请求”复选框。
- 单击 落实更改。
- 可选。 在“新建合并请求”页面上,添加描述。
- 单击 创建合并请求。
将触发 ci-toolchain 中的 pr-pipeline。 通过完成以下步骤来验证管道是否正在运行:
-
返回到 CI 工具链,然后单击
pr-pipeline
的 Delivery Pipeline 磁贴。 在 pr-pipeline“仪表板”页面上,您可以看到 pr-pipeline 正在运行。 -
要查看进度,请单击
pr-pipeline
链接。图 1。pr-管道仪表板
注释:
-
如果发现任何漏洞,那么 code-pr-finish 步骤将失败。
-
要查找漏洞,请转至
code-unit-tests
>run-stage
以查看日志。(截图) -
解决漏洞,然后触发 pr-pipeline。
-
返回到应用程序存储库磁贴。
-
在导航窗格中,单击 合并请求。
-
选择 PR。
-
可选。 单击 核准 按钮 (如果在 ci-pipeline 运行结束时未看到错误)。
-
选择“删除源分支”。
-
单击 合并。
合并此 PR 将自动触发 ci-pipeline。 要进行验证,请返回到工具链中的 ci-pipeline 磁贴,并验证管道是否正在运行。 单击管道链接以查看进度。
此步骤将应用程序部署到新创建的集群。 可以在 ci-pipeline 的 deploy-dev
> run-stage
步骤中的日志文件底部找到应用程序 URL。
后续步骤
继续执行 下一个教程 的“浏览 CI 工具链”部分,并运行 CI-PR 和 CI 管道。 然后,继续完成该教程中的其余步骤,以部署安全应用程序。
您可以随时通过单击 菜单 图标 并选择 资源列表来查看使用本教程创建的所有资源。 您可以查看 Schematics 工作空间,集群,IBM Cloud Object Storage 实例,Secrets Manager 服务,持续交付服务和工具链。