apiVersion: apps/v1 kind: StatefulSet metadata: name: {{ include "timetracker.fullname" . }}-postgresql labels: {{- include "timetracker.postgresql.labels" . | nindent 4 }} spec: serviceName: {{ include "timetracker.fullname" . }}-postgresql replicas: 1 selector: matchLabels: {{- include "timetracker.postgresql.selectorLabels" . | nindent 6 }} template: metadata: labels: {{- include "timetracker.postgresql.selectorLabels" . | nindent 8 }} spec: {{- with .Values.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} serviceAccountName: {{ include "timetracker.serviceAccountName" . }} securityContext: {{- toYaml .Values.podSecurityContext | nindent 8 }} containers: - name: postgresql image: "{{ .Values.postgresql.image.repository }}:{{ .Values.postgresql.image.tag }}" imagePullPolicy: {{ .Values.postgresql.image.pullPolicy }} env: - name: POSTGRES_USER value: {{ .Values.postgresql.auth.username | quote }} - name: POSTGRES_PASSWORD value: {{ .Values.postgresql.auth.password | quote }} - name: POSTGRES_DB value: {{ .Values.postgresql.auth.database | quote }} - name: PGDATA value: /var/lib/postgresql/data/pgdata ports: - name: postgresql containerPort: 5432 protocol: TCP livenessProbe: exec: command: - pg_isready - -U - {{ .Values.postgresql.auth.username }} initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 6 readinessProbe: exec: command: - pg_isready - -U - {{ .Values.postgresql.auth.username }} initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 3 failureThreshold: 3 resources: {{- toYaml .Values.postgresql.resources | nindent 12 }} volumeMounts: - name: data mountPath: /var/lib/postgresql/data volumeClaimTemplates: - metadata: name: data spec: accessModes: - {{ .Values.postgresql.persistence.accessMode }} {{- if .Values.postgresql.persistence.storageClass }} storageClassName: {{ .Values.postgresql.persistence.storageClass }} {{- end }} resources: requests: storage: {{ .Values.postgresql.persistence.size }}