Kubernetes 部署SonarQube

Posted 张志翔 ̮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes 部署SonarQube相关的知识,希望对你有一定的参考价值。

部署PostgreSQL

容器服务 ACK,持久化存储使用云盘动态存储卷

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres-sonar
  labels:
    app: postgres-sonar
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres-sonar
  template:
    metadata:
      labels:
        app: postgres-sonar
    spec:
      containers:
      - name: postgres-sonar
        image: postgres:11.4
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 5432
        env:
        - name: POSTGRES_DB
          value: "sonarDB"
        - name: POSTGRES_USER
          value: "sonarUser"
        - name: POSTGRES_PASSWORD 
          value: "123456"
        resources:
          limits:
            cpu: 1000m
            memory: 2048Mi
          requests:
            cpu: 500m
            memory: 1024Mi
        volumeMounts:
          - name: data
            mountPath: /var/lib/postgresql/data
            subPath: data
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: postgres-data

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-data 
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: "alicloud-disk-available"
  resources:
    requests:
      storage: 20Gi

---

apiVersion: v1
kind: Service
metadata:
  name: postgres-sonar
  labels:
    app: postgres-sonar
spec:
  ports:
  - port: 5432
    protocol: TCP
    targetPort: 5432
  selector:
    app: postgres-sonar

部署SonarQube

容器服务 ACK,持久化存储使用云盘动态存储卷

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sonarqube
  labels:
    app: sonarqube
spec:
  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:lts
        ports:
        - containerPort: 9000
        env:
        - name: SONARQUBE_JDBC_USERNAME
          value: "sonarUser"
        - name: SONARQUBE_JDBC_PASSWORD
          value: "123456"
        - name: SONARQUBE_JDBC_URL
          value: "jdbc:postgresql://postgres-sonar:5432/sonarDB"
        livenessProbe:
          httpGet:
            path: /sessions/new
            port: 9000
          initialDelaySeconds: 60
          periodSeconds: 30
        readinessProbe:
          httpGet:
            path: /sessions/new
            port: 9000
          initialDelaySeconds: 60
          periodSeconds: 30
          failureThreshold: 6
        resources:
          limits:
            cpu: 2000m
            memory: 2048Mi
          requests:
            cpu: 1000m
            memory: 1024Mi
        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: sonarqube-data  

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: sonarqube-data 
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: "alicloud-disk-available"
  resources:
    requests:
      storage: 20Gi

---

apiVersion: v1
kind: Service
metadata:
  labels:
    app: sonarqube
  name: sonarqube
  namespace: ops
spec:
  internalTrafficPolicy: Cluster
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  ports:
    - name: sonarqube
      port: 9000
      protocol: TCP
      targetPort: 9000
  selector:
    app: sonarqube
  sessionAffinity: None
  type: ClusterIP

---

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
    nginx.ingress.kubernetes.io/service-weight: ''
  name: sonarqube
  namespace: ops
spec:
  rules:
    - host: sonarqube.xxx.com
      http:
        paths:
          - backend:
              service:
                name: sonarqube
                port:
                  number: 9000
            path: /
            pathType: ImplementationSpecific

通过Ingress访问sonarqube,初始用户名密码为admin/admin

以上是关于Kubernetes 部署SonarQube的主要内容,如果未能解决你的问题,请参考以下文章

kubernetes 基于jenkins spinnaker的ci/cd实践二sonarqube

kubernetes 基于jenkins spinnaker的ci/cd实践二sonarqube

KubeSphere排错实战

12-Docker-部署SonarQube

自动代码质量分析(GitLab+JenKins+SonarQube)

Docker部署SonarQube