前提:已经搭建好k8s环境并生成存储类
1,搭建postgres数据库
编写yaml文件
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: postgres-pvc namespace: devops spec: accessModes: - ReadWriteMany storageClassName: nfs-jenkins resources: requests: storage: 10Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: postgres-sonar namespace: devops labels: app: postgres-sonar k8s.eip.work/name: postgres-sonar k8s.eip.work/layer: db spec: replicas: 1 selector: matchLabels: app: postgres-sonar template: metadata: labels: app: postgres-sonar spec: containers: - name: postgres-sonar image: postgres:latest imagePullPolicy: Always ports: - containerPort: 5432 env: - name: POSTGRES_DB value: sonar - name: POSTGRES_USER value: sonar - name: POSTGRES_PASSWORD value: sonar resources: limits: cpu: 1000m memory: 2048Mi requests: cpu: 500m memory: 1024Mi volumeMounts: - name: data mountPath: /var/lib/postgresql/data volumes: - name: data persistentVolumeClaim: claimName: postgres-pvc --- apiVersion: v1 kind: Service metadata: name: postgres-sonar namespace: devops labels: app: postgres-sonar spec: type: NodePort ports: - port: 5432 targetPort: 5432 nodePort: 32333 selector: app: postgres-sonar
执行
kubectl apply -f postgres.yaml
2,安装sonarqube服务
编写yaml
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: sonar-data namespace: devops spec: accessModes: - ReadWriteMany storageClassName: nfs-jenkins resources: requests: storage: 100Gi --- apiVersion: apps/v1 kind: StatefulSet metadata: name: sonarqube namespace: devops labels: app: sonarqube k8s.eip.work/name: sonarqube k8s.eip.work/layer: web spec: serviceName: sonar replicas: 1 selector: matchLabels: app: sonarqube template: metadata: labels: app: sonarqube spec: initContainers: - name: init-sysctl image: busybox imagePullPolicy: IfNotPresent command: ["sysctl", "-w", "vm.max_map_count=262144"] securityContext: privileged: true containers: - name: sonarqube image: sonarqube:latest ports: - containerPort: 9000 env: - name: SONARQUBE_JDBC_USERNAME value: sonar - name: SONARQUBE_JDBC_PASSWORD value: sonar - name: SONARQUBE_JDBC_URL value: jdbc:postgresql://postgres-sonar:5432/sonar volumeMounts: - mountPath: /opt/sonarqube/conf name: data subPath: conf - mountPath: /opt/sonarqube/data name: data subPath: data - mountPath: /opt/sonarqube/extensions name: data subPath: extensions volumes: - name: data persistentVolumeClaim: claimName: sonar-data --- apiVersion: v1 kind: Service metadata: name: sonarqube namespace: devops labels: app: sonarqube spec: ports: - name: sonarqube port: 9000 targetPort: 9000 protocol: TCP selector: app: sonarqube --- apiVersion: extensions/v1beta1 kind: Ingress metadata: name: sonar-ingress namespace: devops spec: rules: - host: test.sonarqube.3yx.cn http: paths: - path: / backend: serviceName: sonarqube servicePort: 9000
执行
kubectl apply -f postgres.yaml
3,在Jenkins中安装插件
4,在jenkins-》系统-》全局工具配置中配置sonarscanner
这里选择手动安装 离线安装包路径:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.0.2311-linux.zip
5,在jenkins-》系统-》系统配置 中配置 SonarQube servers
这里的token在sonar中生成
原文:https://www.cnblogs.com/ligang0357/p/14722277.html