앞서 Jenkins 설치 및 pipeline 구성을 완료했다면, 이번 chapter에서는 SonarQube 설치에 대해 기술하겠다.
SonarQube는 소프트웨어 품질을 관리하고 코드 분석을 통해 코드 품질을 유지하는 도구이다. CI(Continuous Integration) 파이프라인, 특히 Jenkins와의 통합은 개발 주기의 일환으로 코드 품질을 자동으로 검사하고 개선하는 데 유용하다.
필자는 Jenkinsfile에서(CI 과정에서) SonarQube의 코드 품질 검사를 진행하고, SonarQube Quality Gate 기능으로 코드의 품질이 일정 수준을 넘지 못할 경우 빌드를 실패하도록 설정했다.
즉, Sonarqube가 CI process를 진행할지/정지할지 여부를 검사하고 판단하는 역활을 하는 것이다.
거두절미하고, 본론으로 들어가겠다.
1. Sonarqube 설치
1) write menifest
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/bound-by-controller: "yes"
finalizers:
- kubernetes.io/pv-protection
name: sonarqube-pv
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 20Gi
nfs:
path: /nfs/sonarqube
server: 10.0.50.20
persistentVolumeReclaimPolicy: Retain
storageClassName: rancher-storage-sonarqube
volumeMode: Filesystem
|
StorageClass 등록 후 dynamic provisioning을 할 계획이지만, 지금은 pv, pvc 순서로 만들어가는 static provisioning으로 진행한다.
2) apply menifest
kubectl apply -f [menifest] |
위에서 작성한 yaml 파일을 적용
3) Helm 저장소 추가 및 업데이트
helm repo add sonarqube https://SonarSource.github.io/helm-chart-sonarqube helm repo update |
4) SonarQube 설치
kubectl create namespace sonarqube helm show values sonarqube/sonarqube > values.yaml helm install sonarqube sonarqube/sonarqube --namespace sonarqube -f values.yaml |
5) NodePort 통한 SonarQube 서버 접근
kubectl get svc -n sonarqube |
Service의 NodePort를 통해 sonarqube 서버 WEB UI에 접근할 것이다.
Ingress를 등록해서 접근해도 무방하다.
'sonarqube-sonqrqube' Service의 NodePort 복사
6) access to SonarQube
http://[IP:NodePort] |
ex) http://10.0.50.10:31373 |
ID : admin
Password : admin
이것으로 kubernetes에 sonarqube 설치가 완료되었다.
다음 chapter에서는 Jenkins와 SonarQube 연동 에 대해 다루겠다.
'1) Kaoni Cloud > CI CD' 카테고리의 다른 글
08. Kubernetes에 ArgoCD 설치 (0) | 2024.06.08 |
---|---|
07. Jenkins와 SonarQube 연동 (0) | 2024.06.08 |
05. Jenkins Pipeline 구축 (0) | 2024.06.07 |
04. Kubernetes에 Jenkins 설치 (0) | 2024.06.07 |
03. Kubernetes에 NEXUS 설치 (0) | 2024.05.29 |