{{- if eq .Values.database.type "internal" -}} apiVersion: apps/v1 kind: StatefulSet metadata: name: "{{ template "harbor.database" . }}" labels: {{ include "harbor.labels" . | indent 4 }} app: database spec: replicas: 1 serviceName: "{{ template "harbor.database" . }}" selector: matchLabels: {{ include "harbor.matchLabels" . | indent 6 }} app: database template: metadata: labels: {{ include "harbor.labels" . | indent 8 }} app: database annotations: checksum/secret: {{ include (print $.Template.BasePath "/database/database-secret.yaml") . | sha256sum }} {{- if .Values.database.podAnnotations }} {{ toYaml .Values.database.podAnnotations | indent 8 }} {{- end }} spec: tolerations: - effect: NoSchedule operator: Exists initContainers: - name: "remove-lost-found" image: {{ .Values.database.internal.image.repository }}:{{ .Values.database.internal.image.tag }} command: ["rm", "-Rf", "/var/lib/postgresql/data/lost+found"] volumeMounts: - name: data mountPath: /var/lib/postgresql/data containers: - name: database image: {{ .Values.database.internal.image.repository }}:{{ .Values.database.internal.image.tag }} imagePullPolicy: {{ .Values.imagePullPolicy }} livenessProbe: exec: command: - /docker-healthcheck.sh initialDelaySeconds: 1 periodSeconds: 10 readinessProbe: exec: command: - /docker-healthcheck.sh initialDelaySeconds: 1 periodSeconds: 10 resources: {{ toYaml .Values.database.internal.resources | indent 10 }} envFrom: - secretRef: name: "{{ template "harbor.database" . }}" volumeMounts: - name: data mountPath: /var/lib/postgresql/data - name: etc-localtime mountPath: /etc/localtime {{- with .Values.database.internal.nodeSelector }} nodeSelector: {{ toYaml . | indent 8 }} {{- end }} {{- with .Values.database.internal.affinity }} affinity: {{ toYaml . | indent 8 }} {{- end }} {{- with .Values.database.internal.tolerations }} tolerations: {{ toYaml . | indent 8 }} {{- end }} volumes: - name: etc-localtime hostPath: path: /etc/localtime {{- if .Values.database.internal.storageSpec.hostPath }} - name: data hostPath: path: {{.Values.database.internal.storageSpec.root | default "/data" }}/{{ .Release.Namespace }}/{{ .Release.Name }}/database {{- else if .Values.database.internal.storageSpec.emptyDir }} - name: data emptyDir: {} {{- else if .Values.database.internal.storageSpec.volumeClaimTemplate }} volumeClaimTemplates: - metadata: name: "data" labels: {{ include "harbor.labels" . | indent 8 }} app: database spec: {{ toYaml $.Values.database.internal.storageSpec.volumeClaimTemplate.spec | indent 6 }} {{- end }} {{- end -}}