DevOps/Kubernetes

SonarQube on Kubernetes

알로그 2022. 6. 25. 14:14
반응형

SonarQube on Kubernetes

Azure에서 쿠버네티스를 기반으로 SonarQube를 적용해보자.

 

PersistentVolumeClaim 생성

data와 plugin 저장을 위한 2개 PVC 생성

<sonar-data.yaml>

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: sonar-data
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: default
  resources:
    requests:
      storage: 31Gi

 

<sonar-extension.yaml>

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: sonar-extensions
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: default
  resources:
    requests:
      storage: 31Gi

 

시크릿 생성

PostgreSQL 패스워드 저장을 위한 Secret 생성

 

<sonar-secret.yaml>

apiVersion: v1
kind: Secret
metadata:
  name: postgres
type: Opaque
data:
  password: aHVuZ3Bvc3RncmVz

 

 

디플로이먼트 생성

<sonar-deployment.yaml>

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: sonarqube
  name: sonarqube
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sonarqube
  template:
    metadata:
      labels:
        app: sonarqube
    spec:
      containers:
        - name: sonarqube
          image: sonarqube:latest
          volumeMounts:
            - mountPath: "/opt/sonarqube/data/"
              name: sonar-data
            - mountPath: "/opt/sonarqube/extensions/"
              name: sonar-extensions
          env:
            - name: "SONARQUBE_JDBC_USERNAME"
              value: "hung"
            - name: "SONARUQBE_JDBC_URL"
              value: jdbc:postgresql://sonar-postgres:5432/sonar
            - name: "SONARQUBE_JDBC_PASSWORD"
              valueFrom:
                secretKeyRef:
                  name: postgres
                  key: password
          ports:
            - containerPort: 9000
              protocol: TCP
      volumes:
        - name: sonar-data
          persistentVolumeClaim:
            claimName: sonar-data
        - name: sonar-extensions
          persistentVolumeClaim:
            claimName: sonar-extensions

 

서비스 생성

<sonar-svc.yaml>

 

apiVersion: v1
kind: Service
metadata:
  labels:
    app: sonarqube
  name: sonarqube
spec:
  ports:
    - name: sonar
      port: 80
      protocol: TCP
      targetPort: 9000
  selector:
    app: sonarqube
  type: LoadBalancer

 

위 external-ip로 서비스 접속 확인

 

 

References:

https://medium.com/@akamenev/running-sonarqube-on-azure-kubernetes-92a1b9051120

 

Running SonarQube on Kubernetes

Running SonarQube on Kubernetes

medium.com

 

반응형