kind: Template apiVersion: v1 metadata: annotations: description: The SonarQube OpenShift template tags: instant-app,sonarqube name: sonarqube message: "Login to SonarQube with the default admin user: admin/admin" objects: - apiVersion: v1 kind: Service metadata: name: sonarqube labels: app: sonarqube spec: ports: - name: sonarqube port: 9000 protocol: TCP targetPort: 9000 selector: app: sonarqube deploymentconfig: sonarqube sessionAffinity: None type: ClusterIP - apiVersion: v1 kind: Route metadata: annotations: description: Route for SonarQube's http service. name: sonarqube labels: app: sonarqube spec: tls: termination: edge to: kind: Service name: sonarqube - apiVersion: image.openshift.io/v1 kind: ImageStream metadata: generation: 2 labels: app: sonarqube-community name: sonarqube namespace: sonarqube spec: lookupPolicy: local: false tags: - annotations: openshift.io/generated-by: OpenShiftWebConsole openshift.io/imported-from: 'sonarqube:7.5-community' from: kind: DockerImage name: 'sonarqube:7.4-community' generation: 2 importPolicy: {} name: 7.4-community referencePolicy: type: Source - apiVersion: v1 kind: DeploymentConfig metadata: labels: app: sonarqube deploymentconfig: sonarqube name: sonarqube spec: replicas: 1 selector: app: sonarqube deploymentconfig: sonarqube strategy: resources: {} rollingParams: intervalSeconds: 1 maxSurge: 25% maxUnavailable: 25% timeoutSeconds: 600 updatePeriodSeconds: 1 type: Rolling template: metadata: creationTimestamp: null labels: app: sonarqube deploymentconfig: sonarqube spec: containers: - env: - name: sonar.jdbc.url value: jdbc:postgresql://postgresql-sonarqube/sonar - name: sonar.jdbc.username value: sonar - name: sonar.jdbc.password value: ${POSTGRESQL_PASSWORD} image: ' ' imagePullPolicy: IfNotPresent name: sonarqube ports: - containerPort: 9000 protocol: TCP livenessProbe: failureThreshold: 3 initialDelaySeconds: 60 periodSeconds: 20 successThreshold: 1 httpGet: port: 9000 path: / timeoutSeconds: 5 readinessProbe: failureThreshold: 3 initialDelaySeconds: 60 periodSeconds: 20 successThreshold: 1 httpGet: port: 9000 path: / timeoutSeconds: 5 resources: requests: cpu: 200m memory: 1Gi limits: cpu: 1 memory: 2Gi terminationMessagePath: /dev/termination-log volumeMounts: - mountPath: /opt/sonarqube/data name: sonarqube-data - mountPath: /opt/sonarqube/extensions name: sonarqube-extensions - mountPath: /opt/sonarqube/logs name: sonarqube-logs - mountPath: /opt/sonarqube/temp name: sonarqube-temp dnsPolicy: ClusterFirst restartPolicy: Always securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: sonarqube-data persistentVolumeClaim: claimName: sonarqube-data - name: sonarqube-extensions persistentVolumeClaim: claimName: sonarqube-extensions - name: sonarqube-logs persistentVolumeClaim: claimName: sonarqube-logs - name: sonarqube-temp persistentVolumeClaim: claimName: sonarqube-temp triggers: - type: ConfigChange - imageChangeParams: automatic: true containerNames: - sonarqube from: kind: ImageStreamTag name: sonarqube:7.4-community type: ImageChange - apiVersion: v1 kind: Service metadata: name: postgresql-sonarqube labels: app: sonarqube spec: ports: - name: postgresql port: 5432 protocol: TCP targetPort: 5432 selector: app: sonarqube deploymentconfig: postgresql-sonarqube sessionAffinity: None type: ClusterIP - apiVersion: v1 kind: DeploymentConfig metadata: labels: app: sonarqube deploymentconfig: postgresql-sonarqube name: postgresql-sonarqube spec: replicas: 1 selector: app: sonarqube deploymentconfig: postgresql-sonarqube strategy: recreateParams: timeoutSeconds: 600 resources: {} type: Recreate template: metadata: labels: app: sonarqube deploymentconfig: postgresql-sonarqube spec: containers: - env: - name: POSTGRESQL_USER value: sonar - name: POSTGRESQL_PASSWORD value: ${POSTGRESQL_PASSWORD} - name: POSTGRESQL_DATABASE value: sonar image: ' ' imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 tcpSocket: port: 5432 timeoutSeconds: 1 name: postgresql ports: - containerPort: 5432 protocol: TCP readinessProbe: exec: command: - /bin/sh - -i - -c - psql -h 127.0.0.1 -U $POSTGRESQL_USER -q -d $POSTGRESQL_DATABASE -c 'SELECT 1' failureThreshold: 3 initialDelaySeconds: 5 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: limits: memory: 256Mi securityContext: capabilities: {} privileged: false terminationMessagePath: /dev/termination-log volumeMounts: - mountPath: /var/lib/pgsql/data name: postgresql-data dnsPolicy: ClusterFirst restartPolicy: Always securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: postgresql-data persistentVolumeClaim: claimName: postgresql-sonarqube-data test: false triggers: - imageChangeParams: automatic: true containerNames: - postgresql from: kind: ImageStreamTag name: postgresql:9.5 namespace: openshift type: ImageChange - type: ConfigChange - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: postgresql-sonarqube-data spec: accessModes: - ReadWriteOnce resources: requests: storage: ${POSTGRESQL_VOLUME_CAPACITY} - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: sonarqube-data spec: accessModes: - ReadWriteOnce resources: requests: storage: ${SONAR_VOLUME_CAPACITY} - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: sonarqube-extensions spec: accessModes: - ReadWriteOnce resources: requests: storage: ${SONAR_EXTENSION_VOLUME_CAPACITY} - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: sonarqube-logs spec: accessModes: - ReadWriteOnce resources: requests: storage: ${SONAR_LOG_VOLUME_CAPACITY} - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: sonarqube-temp spec: accessModes: - ReadWriteOnce resources: requests: storage: ${SONAR_TEMP_VOLUME_CAPACITY} parameters: - description: Password for SonarQube Server PostgreSQL backend displayName: SonarQube's PostgreSQL Password from: '[a-zA-Z0-9]{16}' generate: expression name: POSTGRESQL_PASSWORD required: true - description: Volume space available for PostgreSQL displayName: PostgreSQL Volume Capacity name: POSTGRESQL_VOLUME_CAPACITY required: true value: 1Gi - description: Volume space available for SonarQube Data displayName: SonarQube Data Volume Capacity name: SONAR_VOLUME_CAPACITY required: true value: 1Gi - description: Volume space available for SonarQube Extensions / plugins displayName: SonarQube Extension Volume Capacity name: SONAR_EXTENSION_VOLUME_CAPACITY required: true value: 1Gi - description: Volume space available for SonarQube Logs displayName: SonarQube Log Volume Capacity name: SONAR_LOG_VOLUME_CAPACITY required: true value: 1Gi - description: Volume space available for SonarQube Temp space displayName: SonarQube Temp Space Volume Capacity name: SONAR_TEMP_VOLUME_CAPACITY required: true value: 1Gi