apiVersion: apps/v1 kind: StatefulSet metadata: name: db labels: {{- include "onelab.labels" . | nindent 4 }} annotations: argocd.argoproj.io/sync-wave: {{ .Values.syncWaves.postgres | quote }} spec: replicas: 1 serviceName: db selector: matchLabels: app.kubernetes.io/component: postgres app.kubernetes.io/name: {{ include "onelab.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} template: metadata: labels: app.kubernetes.io/component: postgres app.kubernetes.io/name: {{ include "onelab.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} annotations: {{- if .Values.registry.createPullSecret }} checksum/docker-registry: {{ include "onelab.dockerconfigjson" . | sha256sum | quote }} {{- else if not (empty .Values.imagePullSecrets) }} checksum/image-pull-secrets: {{ .Values.imagePullSecrets | toJson | sha256sum | quote }} {{- end }} spec: {{- with .Values.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} containers: - name: postgres image: {{ printf "%s/%s:%s" .Values.images.registry .Values.images.postgres .Values.images.postgresTag | quote }} ports: - containerPort: 5432 name: postgres env: - name: POSTGRES_USER value: postgres - name: POSTGRES_DB value: postgres - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: onelab-postgres key: postgres-password volumeMounts: - name: data mountPath: /var/lib/postgresql/data {{- with .Values.postgresql.resources }} resources: {{- toYaml . | nindent 12 }} {{- end }} volumeClaimTemplates: - metadata: name: data spec: accessModes: ["ReadWriteOnce"] {{- if .Values.persistence.storageClass }} storageClassName: {{ .Values.persistence.storageClass | quote }} {{- end }} resources: requests: storage: {{ .Values.persistence.postgres.size | quote }}