HelmでローカルにSonarQubeを構築してみる
2023.02.01
2024.03.24
Kubernetes
HelmHelmfileSonarQube
はじめに
HelmでローカルにSonarQubeを構築してみます。
今回はHelmとhelmfileを使います。helmfileについては、下記で解説していますが、Helmチャートを宣言的にデプロイできるツールです。
【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
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
参考
Share
関連記事
KubeLinterでKubernetesのマニフェストを静的解析
2022.04.23
【Kubernetes】YAML形式とJSON形式でオブジェクトを取得
2022.02.05
kubectlでマニフェストのフォーマット検索
2022.03.21
kubectl getでカラムをカスタマイズ
2022.10.11