HelmでローカルにSonarQubeを構築してみる

2023.02.01
2024.03.24
Kubernetes
HelmHelmfileSonarQube

はじめに

HelmでローカルにSonarQubeを構築してみます。

今回はHelmとhelmfileを使います。helmfileについては、下記で解説していますが、Helmチャートを宣言的にデプロイできるツールです。

【Helm】helmfile使ってみる

【Helm】helmfile使ってみる

:::affiliate-message 本ページはAmazonアフィリエイトのリンクを含みます。

SonarQubeとは

SonarQubeとは、コードの品質を保つための静的解析ツールです。

CIパイプラインに組み込むことで、継続的にコードの品質をチェック、改善することができるようになります。

用意するファイルとディレクトリ構成

用意するファイルは下記2つになります。

1.
2├── helmfile.yaml
3└── values.yaml

helmfile.yamlの作成

helmfile.yamlは下記の通りです。

1releases:
2- name: sonarqube
3  namespace: sonarqube
4  chart: sonarqube/sonarqube
5  values:
6  - ./values.yaml

values.yamlの作成

values.yamlは下記の通りです。基本的にデフォルトの値のままにしていますが、一部のみ抜粋してみました。

1deploymentType: "StatefulSet"
2
3replicaCount: 1
4
5edition: "community"
6
7image:
8  repository: sonarqube
9  tag: 9.8.0-{{ .Values.edition }}
10
11service:
12  type: ClusterIP
13  externalPort: 9000
14  internalPort: 9000
15
16plugins:
17  install: []
18
19resources:
20  limits:
21    cpu: 800m
22    memory: 4Gi
23  requests:
24    cpu: 400m
25    memory: 2Gi
26
27# sonarProperties:
28#   sonar.forceAuthentication: true
29#   sonar.security.realm: LDAP
30#   ldap.url: ldaps://organization.com
31
32postgresql:
33  enabled: true
34  postgresqlUsername: "sonarUser"
35  postgresqlPassword: "sonarPass"
36  postgresqlDatabase: "sonarDB"
37
38  service:
39    port: 5432
40
41  resources:
42    limits:
43      cpu: 2
44      memory: 2Gi
45    requests:
46      cpu: 100m
47      memory: 200Mi
48
49  persistence:
50    enabled: true
51    accessMode: ReadWriteOnce
52    size: 20Gi

同じデータベースに接続するSonarQubeのインスタンスは1より大きくすることができないようで、レプリカ数は0か1しかサポートしていないみたいです。

helm-chart-sonarqube/charts/sonarqube/values.yaml at master · SonarSource/helm-chart-sonarqube

helm-chart-sonarqube/charts/sonarqube/values.yaml at master · SonarSource/helm-chart-sonarqube

Contribute to SonarSource/helm-chart-sonarqube development by creating an account on GitHub.

helmfileでデプロイ

Helmとhelmfileを使ってデプロイしていきます。

まずは、チャートのリポジトリを追加します。

1helm repo add sonarqube https://SonarSource.github.io/helm-chart-sonarqube
2helm repo update

helmfileでデプロイします。

1helmfile apply

デプロイされたものを確認してみます。

1❯ kubectl get -n sonarqube sts,pod,svc,pv,pvc
2NAME                                    READY   AGE
3statefulset.apps/sonarqube-postgresql   1/1     39m
4statefulset.apps/sonarqube-sonarqube    1/1     39m
5
6NAME                         READY   STATUS    RESTARTS      AGE
7pod/sonarqube-postgresql-0   1/1     Running   1 (21m ago)   39m
8pod/sonarqube-sonarqube-0    1/1     Running   1 (21m ago)   39m
9
10NAME                                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
11service/sonarqube-postgresql            ClusterIP   10.100.200.104   <none>        5432/TCP   39m
12service/sonarqube-postgresql-headless   ClusterIP   None             <none>        5432/TCP   39m
13service/sonarqube-sonarqube             ClusterIP   10.106.122.133   <none>        9000/TCP   39m
14
15NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                   STORAGECLASS   REASON   AGE
16persistentvolume/pvc-e8242d96-31c2-45b4-84c9-e48f90633465   20Gi       RWO            Delete           Bound    sonarqube/data-sonarqube-postgresql-0   hostpath                39m
17
18NAME                                                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
19persistentvolumeclaim/data-sonarqube-postgresql-0   Bound    pvc-e8242d96-31c2-45b4-84c9-e48f90633465   20Gi       RWO            hostpath       39m

アクセスしてみる

ポートフォワードすると、ローカルからアクセスできるようになります。

1kubectl -n sonarqube port-forward svc/sonarqube-sonarqube 9000:9000

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee