前言

上一篇介绍了 DevSecOps

DevSecOps 是将安全性(Security)融入到软件开发(Development)和运维(Operations)的 DevOps 文化和实践中的一种方法论。它强调在整个软件开发和交付过程中将安全性作为一个关键组成部分,以确保软件在开发、测试、部署和运行过程中能够满足安全标准和最佳实践。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_UCCPS

这篇介绍部署 SonarQube

介绍

SonarQube 是一个开源的代码质量管理平台,它用于对代码进行静态分析以发现代码中的缺陷、漏洞和代码异味(code smells),并提供了一系列的代码质量指标和报告。SonarQube 可以帮助开发团队在软件开发过程中持续监控和提高代码质量,从而降低技术债务(technical debt)并改善整体的代码可维护性。

主要特点和功能

1. 静态代码分析:SonarQube可以对多种编程语言的源代码进行静态分析,包括Java、go、node.js、Python等。它通过检查代码的规范遵循性、复杂度、重复代码、潜在的安全漏洞、代码覆盖率等方面的指标,帮助开发团队发现潜在的问题并改进代码质量。

2. 实时反馈和报告:SonarQube提供实时的代码分析和反馈,开发人员可以在开发过程中及时得到代码质量的评估结果。同时,SonarQube生成丰富的报告和可视化图表,展示代码质量指标、问题列表和趋势分析,帮助团队了解项目的整体代码质量和改进方向。

3. 自定义规则和规范:SonarQube支持自定义代码质量规则和规范,团队可以根据项目的特定需求和编码标准定义自己的规则集。这样可以确保代码符合团队的编码规范和最佳实践。

4. 技术债务管理:SonarQube还提供了技术债务管理的功能,帮助团队识别和跟踪代码中的技术债务,即需要在未来付出代价来解决的低质量代码。通过监控技术债务,团队可以有针对性地改进代码并减少技术债务的累积。

5.集成和扩展性:SonarQube可以与各种开发工具和持续集成工具集成,如IDE、CI/CD工具、代码托管平台等。它还支持插件系统,可以根据需要添加额外的功能和扩展。


部署

使用的环境是 UCCPS 

前置条件

  • 已安装 UCCPS v1.2.1 版本以上。
  • 已经有默认的存储类可使用。
  • 已添加了包含代码扫描组件的CatalogSource 源。

安装步骤

第一步 安装 operator

1、通过 OpertorHub 安装 SonarQube 扩展组件。步骤如图所示,点击 ① 管理员视角-> ② Opertaors-> ③OperatorHub-> ④ 检索“son”-> ⑤ 选择SonarQube operator。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_DevSecOps_02

2、点击 SonarQube operator 组件卡片,选择安装,根据提示进行依次点击,步骤如图所示。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_DevSecOps_03

3、等待安装完成,结果如图所示。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_openshift_04

第二步 sonarqube服务部署

1、创建 sonarqube 项目, 用于服务的部署。步骤如图所示,选择 ① 管理员视角 -> ② 项目 -> ③ 创建项目。输入 “sonarqube”,点击创建。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_代码扫描_05

2、在sonarqube 项目中进入 SonarQube 组件模块,操作如图所示,① 进入管理员视角 -> ② 选择 Operators -> ③ 安装的 Operators -> ④ 选择 SonarQube operator。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_DevSecOps_06

3、通过创建SonarQube 自定义资源,从而部署出 SonarQube 服务。步骤如图所示,① 点击创建实例 -> ② 通过 YAML 视图创建(默认不需要修改里面的内容) -> ③ 创建,等待服务部署完成(服务启动时间比较长,请耐心等待)。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_代码扫描_07

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_K8S_08

4、通过路由地址访问服务。步骤如图所示,选择 ① 管理员视角 -> ② 网路 -> ③ 路由 -> ④ 点击路由地址。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_DevSecOps_09

5、等待页面变成上图包含登录的界面,如图所示。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_UCCPS_10

使用

访问sonarqube服务

1、使用上一节的路由地址,选择通过 UCCPS 方式登录。如图所示。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_openshift_11

2、授权登录(只有初次登录时,才会有此步骤)。如图所示

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_代码扫描_12

3、修改 admin密码(只有集群管理员其为初次登录时,才会有此步骤)。如图所示。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_K8S_13

4、我了解插件风险(此插件分享来自于 UCCPS 授权登录插件。备注:统信基于sonarqube 9.9.1 开源版本添加的统信授权登录插件)。如图所示。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_UCCPS_14

创建用户key

1、找到创建 key 的控制页面。步骤如图所示,点击 “我的头像”-> 我的账号 -> 安全。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_UCCPS_15

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_K8S_16

2、填写相关信息生成key。步骤如图所示,输入令牌名称、选择类型及过期时间。点击创建(请保存好key 的内容,代码扫描时需要使用)。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_UCCPS_17

触发代码扫描

1、创建代码项目(source-project)。步骤请参考安装步骤中的项目创建。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_UCCPS_18

2、切换至代码项目,选择开发者视角,通过 Git 方式导入项目。步骤如图所示,① 选择 source-project 项目 -> ② 选择开发者视角 -> ③ 点击添加 -> ④ 选择 从 Git 导入。 

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_UCCPS_19

3、选择代码扫描模式。步骤如图中的①所示。代码扫描模式支持三种模式分别为:停止模式、正常模式、严格模式。

(1) 停止模式:不进行代码扫描。

(2) 正常模式:代码扫描不影响正常代码生成容器镜像。

(3) 严格模式:代码扫描结果出来之前,不会进行后续操作。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_代码扫描_20

4、填写服务路由地址与 key 值(正常模式与严格模式下才有此步骤)。步骤如图中的②③所示。

(1) 填写服务创获取的路由地址。

(2) 填写创建用户KEY中生成的 key 。

5、根据提示填写需要填写的信息,最终点击创建。

注意:代码扫描只支持导入策略为”Builder Image”。

查看扫描结果

1、选择开发者视图 -> 选择拓扑 -> 上图所示位置。进行结果查询。

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_UCCPS_21

2、跳转到 Sonarqube, 查看扫描结果

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_UCCPS_22

3、进行代码审查(展示)

利用 Openshift 实现 DevSecOps(二)部署 SonarQube_openshift_23

结尾

整体流程为:在 组件仓库中安装 Operator -> 创建 SonarQube 自定义资源 -> Operator 自动创建服务 -> 通过路由访问服务 -> 配置服务相关配置 -> 在 UCCPS 项目中添加代码扫描 -> 通过UCCPS 开发者视角的拓扑查看扫描结果。

附录

UCCPS: 统信容器云管理平台-有雀(Uniontech Container Cloud Platform Solution,简称UCCPS)。