部署 SonarQube
SonarQube 是一个开源的代码质量管理工具,可帮助您发现代码中的缺陷。
注意事项
-
SSO 登录依赖平台内置的 Dex 认证服务,如果平台采用了 https 访问且使用了自签证书,该自签证书需要包含 CA,否则无法使用 SSO 功能。
-
服务访问地址默认为 IPV4 地址,若需使用 IPV6 并且集群网卡支持 IPV6,请将 IPV4 地址修改 为 IPV6 地址。
前提条件
存储
请确保至少满足以下一条前提。每条前提都对应不同的 存储方式 。
-
动态生成 PVC:集群中已存在 存储类 。存储类定义的访问模式需为 多节点读写(RWX)。
-
使用可用 PVC:集群中已存在持久卷声明(PVC)。PVC 中需选择 多节点读写(RWX) 访问模式,且卷模式需为文件系统。
-
使用节点存储:集群节点中存在充足的存储资源。
提示:删除<创建实例>功能创建的工具后,工具绑定的 PVC 仍会被保留。
私有部署
-
提前准备好一个版本介于 11.x 和 15.x 之间的 Postgresql 数据库,可访问平台的数据服务 (Data Service) > Postgresql 进行创建。 创建postgresql实例
-
在左侧导航栏中,单击 工具链管理 > 实例管理。
-
单击 创建实例。
-
在 创建实例 页面,选择 SonarQube。
-
在 部署位置 区域,选择希望将工具部署到的 集群 和 命名空间。
-
在 资源 区域,选择一种 CPU 和内存分配方式,并完成配置。
分配方式 说明 整体分配 为工具分配总资源,用于保障工具整体可用。如果您对单个组件的特性无特殊要求,全局分配方式会更为便捷。 单个组件分配 可用于为工具下各组件分配资源,用于保障与特定组件相关的业务表现。
说明:建议保持 db 组件和 webservice 组件间的资源比例为3:7。 -
在 存储 区域,选择一类存储方式,并完成配置。
注意:实例创建后,存储配置暂不支持修改。
存储方式 说明 动态生成 PVC 前提:需提前准备存储类。
分别设置 SonarQube 各组件所需存储容量后,平台将动态为每个 SonarQube 组件生成一个 PVC,并根据 PVC 请求的存储类为各组件动态创建持久卷。
如需进行存储扩容,请切换至 Comtaniner Platform 中扩容 PVC。可用 PVC 前提:需提前准备 PVC。
为每个 SonarQube 组件指定一个可用 PVC 后,平台将根据 PVC 请求的存储类为各组件动态创建持久卷,以满足各组件对存储的不同诉求(扩容、快照等)。
支持在 平台管理 中直接进行 存储扩容 。节点存储 通过 hostpath 存储方案请求集群节点上的存储资源。使用此方式无需准备存储类。
注意:- 填写存储路径时,需确保该路径为绝对路径,且不曾被使用,以免挂载失败。
- 在公有云集群中部署工具时,为避免集群自动伸缩删除节点后导致数据丢失,不支持选择此存储方式。
-
在 数据库保密字典 区域,配置数据库连接保密字典,若暂无保密字典,则点击创建,然后在弹出的页面中填写保密字典表单,类型选择 Opaque ,并在配置项中新增和填写如下字段:
字段 描述 host 数据库的连接地址 port 数据库的连接端口 username 数据库账户用户名 password 数据库账户密码 database 数据库库名,对应数据库应当存在且为空 sslmode 连接数据库是否开启 SSL ?填写 enable开启或disable禁用,默认为开启平台的 数据服务 中创建的 Postgresql 实例默认开启了 SSL 连接,如果使用 数据服务 的 Postgresql 实例,请将
sslmode设置为enable,其他情况下,请根据服务端的配置确认服务端是否支持 SSL 连接。填写并提交完成 Secret 创建后,回到 SonarQube 升级页面使用该 Secret 继续升级。
-
在 网络 区域,配置网络要求。
注意:
-
部署完成后,请谨慎更新服务访问地址。若更新,需要配合外部设置才能正常访问,如配置 DNS 解析等。且本次更新只适用于当前网络设置状态,当网络设置再次发生变更时服务访问地址将会被自动替换为限制值。
-
若待部署工具的集群中存在双网卡节点,需检查服务访问地址中 默认使用的负载均衡器 IP 地址或节点 IP 地址是否可提供集群外访问 ,否则将导致部署后无法正常访问工具,并出现“check xx alive failed”错误提示。
-
Ingress 方式
参数 说明 域名 选择平台中已存在的 域名 。请确保所选域名已分配至待使用本工具的项目。 协议 支持选择 HTTP 和 HTTPS 协议。 证书 若使用 HTTPS 协议,还须配置与域名匹配的 证书 。 服务访问地址 将自动生成,规则为 http://{Ingress 名称}或https://{Ingress 名称}。 -
Nodeport 方式
参数 说明 HTTPS 端口 访问工具时的端口。 服务访问地址 将自动生成,规则为 http://{集群地址}:{HTTP端口}。
-
-
在 账号设置 区域,配置账号相关信息。
参数 说明 用户名 为默认值 admin 且不可修改。
说明:默认密码 admin。SSO 登录 单点登录。若启用,则可使用平台账号授权登录 SonarQube。 -
在 集成 区域,指定一个 集成名称,这个名称帮助项目成员在 DevOps 中识别并选择此工具。
-
配置完成后,单击 部署并集成。
创建的工具实例会自动集成到 DevOps 的工具链中。
公有云部署
推荐开虚拟机部署公有云集群后部署 DevOps 工具,使用与私有集群一致的存储和网络方案,通过这种方式支持部署的工具和能力与私有集群部署工具能力对齐。
结果校验
创建过程中,单击
图标实时查看实例创建状态。当出现如下报错信息时,意味着您的**数据库 Secret 存在问题。
| 报错信息 | 描述 |
|---|---|
| required postgres database name, got empty dbname from provided secret | 没有填写database名字,需要用户指定一个已存在的空database |
| Connection refused. Check your host and port in the given secret | 创建连接失败,检查地址和端口是否错误 |
| Authentication failed. Check your username and password in the given secret | 服务端拒绝连接,检查用户名或密码是否错误 |
| SSL is not enabled on the server, please change ‘sslmode’ to ‘disable’ in secret if this server is the right one to connect | 服务端不支持SSL连接,请将sslmode设置为disable |
| server ask for a ssl connection, please change ‘sslmode’ to ’enable’ in secret if this server is the right one to connect | 服务端强制要求SSL连接,请将sslmode设置为enable |
| get secret “ns/secret” failed, please check if exist | 获取secret失败,检查 secret 是否创建成功 |
请根据报错信息检查并更正对应 secret 内的信息。更正完成后,组件将在 1 分钟内重新检查该 secret 内的信息,如果正确无误,将继续完成安装。
等待部署状态为 已部署 后,单击工具访问地址,若能成功登录工具,说明操作成功。