10.24 Kubernetes佈署SonarQube檢查Java項目代碼質量

Kubernetes佈署SonarQube檢查Java項目代碼質量

Kubernetes佈署SonarQube檢查Java項目代碼質量

在上一篇教程中,使用Docker快速佈署了SonarQube。這次將其佈署到kubernetes集群中
Kubernetes佈署SonarQube檢查Java項目代碼質量


佈署Postgresql

SonarQube在未來將不支持Mysql,而內置H2數據庫只供測試使用。如果我們要正式佈署使用SonarQube,則需要佈署Postgresql。

Postgresql佈署清單

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: postgresql
namespace: sonarqube
spec:
selector:
matchLabels:
app: postgresql
template:
metadata:
name: postgresql
labels:
app: postgresql
spec:
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: postgres-data
restartPolicy: Always
containers:
- name: postgres
image: postgres:12
imagePullPolicy: IfNotPresent
env:
- name: POSTGRES_PASSWORD
value: postgres
- name: POSTGRES_USER
value: sonar
- name: POSTGRES_DB
value: sonarqube
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
ports:

- name: default
containerPort: 5432
protocol: TCP
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-data
namespace: sonarqube
spec:
accessModes:
- ReadWriteOnce
storageClassName: managed-nfs-storage
resources:
requests:
storage: 5Gi
---
apiVersion: v1
kind: Service
metadata:
name: sonar-postgres
namespace: sonarqube
spec:
type: NodePort
selector:
app: postgresql
ports:
- name: default
port: 5432
targetPort: 5432
protocol: TCP

佈署SonarQube服務

重要: SonarQube官方鏡像在配置文件中配置使用Postgresql無效(?可能是我方法不對)

查看官方鏡像啟動腳本

Kubernetes佈署SonarQube檢查Java項目代碼質量

需要設置三個環境變量

  1. SONARQUBE_JDBC_USERNAME
  2. SONARQUBE_JDBC_PASSWORD
  3. SONARQUBE_JDBC_URL

以下是SonarQube佈署清單

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: sonar-web-deployment
namespace: sonarqube
spec:
selector:
matchLabels:
app: sonar-web
template:
metadata:
name: sonar-web
labels:
app: sonar-web
spec:
volumes:
- name: sonar-extensions
persistentVolumeClaim:
claimName: sonar-extensions
- name: sonar-data
persistentVolumeClaim:
claimName: sonar-data
- name: sonar-logs
persistentVolumeClaim:
claimName: sonar-logs
containers:
- name: sonar
image: sonarqube:7.9.1-community
imagePullPolicy: IfNotPresent
env:
- name: SONARQUBE_JDBC_USERNAME
value: sonar
- name: SONARQUBE_JDBC_PASSWORD

value: postgres
- name: SONARQUBE_JDBC_URL
value: "jdbc:postgresql://sonar-postgres:5432/sonarqube?currentSchema=public"
volumeMounts:
- name: sonar-data
mountPath: /opt/sonarqube/data
- name: sonar-logs
mountPath: /opt/sonarqube/logs
- name: sonar-extensions
mountPath: /opt/sonarqube/extensions
ports:
- name: http
containerPort: 9000

Ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: sonar-web-ingress
namespace: sonarqube
spec:
rules:
- host: sonar.mydomain.com
http:
paths:
- backend:
serviceName: sonar-web
servicePort: 9000
path: /

登錄查看系統信息

Kubernetes佈署SonarQube檢查Java項目代碼質量

SonarQube中文插件及配置請參考上篇文章


分享到:


相關文章: