使用 DevStream 部署 SonarQube

1. 前置要求

  • 有一个可用的 Kubernetes 集群,版本 1.19+。
  • 运行 Sonarqube 小规模服务至少需要 2GB 的 RAM 内存。
  • Sonarqube 官方镜像目前只支持 linux/amd64 架构。
  • 更多硬件配置可参考官方网站

2、部署架构

Sonarqube 内部会使用 Elastcisearch 来做搜索的索引,所以生产环境中需要通过挂载目录的方式持久化数据。 另外 Sonarqube 也需要一个外部数据库来存储数据,目前支持 PostgreSQLOracleMicrosoft SQL Sever,默认使用 PostgreSQL

3、开始部署

下文将介绍如何配置 sonarqube 插件,完成 Sonarqube 应用的部署。

3.1、默认配置

sonarqube 插件的配置项多数都有默认值,具体默认值信息如下表:

配置项默认值描述
chart.chartNamesonarqube/sonarqubehelm chart 包名称
chart.timeout10mhelm install 的超时时间
chart.version“”chart 版本
chart.upgradeCRDstrue是否更新 CRDs(如果有)
chart.releaseNamesonarqubehelm 发布名称
chart.waittrue是否等待部署完成
chart.namespacesonarqube部署的命名空间
repo.urlhttps://SonarSource.github.io/helm-chart-sonarqubehelm 仓库地址
repo.namesonarqubehelm 仓库名

3.2、测试环境

在测试环境中可以使用如下配置:

YAML

  1. tools:
  2. - name: helm-installer
  3. instanceID: sonarqube-001
  4. dependsOn: [ ]
  5. options:
  6. valuesYaml: |
  7. prometheusExporter:
  8. enabled: false

在该配置下: - sonarqube 存储使用集群默认的 StorageClass。 - 默认使用 PostgreSQL 数据库来存储数据,使用集群默认的 StorageClass。 - 默认使用 NodePort 对外暴露 9000 端口。

3.3、生产环境

3.3.1、证书配置

  • 使用已有证书
  • 在集群中创建 Secret 保存证书信息。
  • valuesYaml 配置项中增加如下证书配置。

YAML

  1. valuesYaml: |
  2. tls:
  3. # secret 名称
  4. - secretName: chart-example-tls
  5. hosts:
  6. # 证书对应的域名
  7. - chart-example.local

3.3.2、存储配置

  • 数据库配置(以 PostgreSQL 为例)
  • 在外部配置高可用数据库。
  • valuesYaml 配置项中增加配置:

YAML

  1. valuesYaml: |
  2. postgresql:
  3. enabled: false
  4. jdbcOverwrite:
  5. enabled: true
  6. # PostgreSQL 数据库连接配置
  7. jdbcUrl: "jdbc:postgresql://myPostgress/myDatabase?socketTimeout=1500"
  8. jdbcUsername: "sonarUser"
  9. jdbcPassword: "sonarPass"
  • SonarQube 存储配置
  • 在集群中创建需要的 StorageClass
  • valuesYaml 配置项中增加配置:

YAML

  1. valuesYaml: |
  2. persistence:
  3. enabled: true
  4. # 使用集群中创建的 storageclass 名称
  5. storageclass: prod-storageclass
  6. # 使用的磁盘大小
  7. size: 20g