k8s/sonarqube/chart/sonarqube/templates/sonarqube-sts.yaml (113 lines of code) (raw):

apiVersion: apps/v1 kind: StatefulSet metadata: name: {{ .Release.Name}}-sonarqube labels: &SonarQubeLabels app.kubernetes.io/component: sonarqube app.kubernetes.io/name: "{{ .Release.Name }}" spec: replicas: 1 selector: matchLabels: *SonarQubeLabels serviceName: {{ .Release.Name }}-sonarqube-svc template: metadata: labels: *SonarQubeLabels spec: initContainers: - name: check-db-ready image: {{ .Values.postgresql.image }} command: ['sh', '-c', 'until pg_isready -h {{ .Release.Name }}-postgresql-service -p 5432; do echo waiting for database; sleep 2; done;'] # https://docs.sonarqube.org/latest/requirements/requirements/#header-6 # According to the documentation, vm.max_map_count should be greater or equal to 262144 - name: increase-max-map-count image: {{ .Values.deployer.image }} command: - /bin/bash - -c - | echo "262144" > /proc/sys/vm/max_map_count imagePullPolicy: IfNotPresent securityContext: privileged: true containers: - name: {{ .Release.Name}}-sonarqube image: "{{ .Values.sonarqube.image.repo }}:{{ .Values.sonarqube.image.tag }}" resources: requests: cpu: 100m memory: "2048Mi" limits: memory: "3072Mi" imagePullPolicy: Always env: - name: SONARQUBE_JDBC_PASSWORD valueFrom: secretKeyRef: key: password name: {{.Release.Name}}-secret - name: SONARQUBE_JDBC_URL value: jdbc:postgresql://{{ .Release.Name }}-postgresql-service:5432/{{.Values.postgresql.db.name}} - name: SONARQUBE_JDBC_USERNAME value: {{.Values.postgresql.db.user}} - name: JAVA_OPTS value: >- -Dlog4j2.formatMsgNoLookups=true -Dlog4j2.disable.jmx=true ports: - containerPort: 9000 name: sonar-port livenessProbe: httpGet: path: /sessions/new port: 9000 initialDelaySeconds: 60 periodSeconds: 30 readinessProbe: httpGet: path: /sessions/new port: 9000 initialDelaySeconds: 60 periodSeconds: 30 failureThreshold: 6 volumeMounts: - mountPath: "/opt/sonarqube/extensions/" name: {{ .Release.Name}}-ext {{ if .Values.metrics.exporter.enabled }} - name: prometheus-to-sd image: {{ .Values.metrics.image }} ports: - name: profiler containerPort: 6060 command: - /monitor - --stackdriver-prefix=custom.googleapis.com - --source=sonarqube:http://localhost:9000/api/prometheus/metrics - --pod-id=$(POD_NAME) - --namespace-id=$(POD_NAMESPACE) - --monitored-resource-types=k8s env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace {{ end }} volumes: - name: {{ .Release.Name}}-ext persistentVolumeClaim: claimName: {{ .Release.Name}}-ext volumeClaimTemplates: - metadata: name: {{ .Release.Name}}-ext labels: *SonarQubeLabels spec: accessModes: - ReadWriteOnce storageClassName: {{.Values.sonarqube.persistence.storageClass }} resources: requests: storage: {{ .Values.sonarqube.persistence.size }}