{{- $nodeSelector := dig .Values.env .Values.postgres.nodeSelector._default .Values.postgres.nodeSelector }} {{- $tolerations := dig .Values.env .Values.postgres.tolerations._default .Values.postgres.tolerations }} --- apiVersion: v1 kind: Secret metadata: name: {{ .Chart.Name }}-env annotations: "helm.sh/resource-policy": keep type: Opaque stringData: POSTGRES_USER: {{ dig .Values.env .Values.postgres.user._default .Values.postgres.user | quote }} POSTGRES_DB: {{ dig .Values.env .Values.postgres.database._default .Values.postgres.database | quote }} POSTGRES_PASSWORD: {{ dig .Values.env .Values.postgres.password._default .Values.postgres.password | quote }} --- apiVersion: apps/v1 kind: StatefulSet metadata: name: {{ .Chart.Name }} labels: app: {{ .Chart.Name }} spec: replicas: 1 serviceName: {{ .Chart.Name }} selector: matchLabels: app: {{ .Chart.Name }} template: metadata: labels: app: {{ .Chart.Name }} {{- if .Values.secretsStore.enabled }} annotations: secrets-store.deckhouse.io/role: "{{ .Values.env }}-{{ .Chart.Name }}-role" secrets-store.deckhouse.io/env-from-path: "{{ .Values.env }}/data/{{ .Chart.Name }}" {{- end }} spec: serviceAccountName: {{ .Chart.Name }}-sa {{- with .Values.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} {{- if $nodeSelector }} nodeSelector: {{ toYaml $nodeSelector | nindent 8 }} {{- end }} {{- if $tolerations }} tolerations: {{ toYaml $tolerations | nindent 6 }} {{- end }} containers: - name: postgres image: {{ .Values.image.postgresql }} imagePullPolicy: IfNotPresent env: - name: PGDATA value: /var/lib/postgresql/data/pgdata envFrom: - secretRef: name: {{ .Chart.Name }}-env resources: requests: cpu: {{ dig .Values.env .Values.postgres.resources.requests.cpu._default .Values.postgres.resources.requests.cpu }} memory: {{ dig .Values.env .Values.postgres.resources.requests.memory._default .Values.postgres.resources.requests.memory }} limits: memory: {{ dig .Values.env .Values.postgres.resources.limits.memory._default .Values.postgres.resources.limits.memory }} volumeMounts: - name: data mountPath: /var/lib/postgresql/data readinessProbe: tcpSocket: port: {{ dig .Values.env .Values.postgres.port._default .Values.postgres.port }} initialDelaySeconds: 5 timeoutSeconds: 1 livenessProbe: tcpSocket: port: {{ dig .Values.env .Values.postgres.port._default .Values.postgres.port }} initialDelaySeconds: 30 periodSeconds: 5 volumeClaimTemplates: - metadata: name: data spec: accessModes: - ReadWriteOnce resources: requests: storage: {{ dig .Values.env .Values.postgres.storage._default .Values.postgres.storage }} storageClassName: {{ dig .Values.env .Values.postgres.storageClassName._default .Values.postgres.storageClassName }} --- apiVersion: v1 kind: Service metadata: name: {{ .Chart.Name }} spec: selector: app: {{ .Chart.Name }} ports: - name: {{ .Chart.Name }} port: {{ dig .Values.env .Values.postgres.port._default .Values.postgres.port }}