{{- $pgDb := dig .Values.werf.env .Values.postgres.database._default .Values.postgres.database | quote }} {{- $pgUser := dig .Values.werf.env .Values.postgres.user._default .Values.postgres.user | quote }} {{- $pgPassword := dig .Values.werf.env .Values.postgres.password._default .Values.postgres.password | quote }} {{- $pgStorageSize := dig .Values.werf.env .Values.postgres.storage.size._default .Values.postgres.storage.size | quote }} {{- $pgStorageClass := dig .Values.werf.env .Values.postgres.storage.class._default .Values.postgres.storage.class | quote }} {{- $nodeSelector := dig .Values.werf.env .Values.postgres.nodeSelector._default .Values.postgres.nodeSelector }} {{- $tolerations := dig .Values.werf.env .Values.postgres.tolerations._default .Values.postgres.tolerations }} --- apiVersion: v1 kind: Secret metadata: name: {{ .Chart.Name }}-postgres-env annotations: "werf.io/sensitive": "true" werf.io/weight: "-31" stringData: POSTGRES_DB: {{ $pgDb }} POSTGRES_USER: {{ $pgUser }} POSTGRES_PASSWORD: {{ $pgPassword }} --- apiVersion: apps/v1 kind: StatefulSet metadata: name: {{ .Chart.Name }}-postgres labels: app: {{ .Chart.Name }}-postgres annotations: werf.io/weight: "-30" spec: serviceName: postgres replicas: 1 selector: matchLabels: app: {{ .Chart.Name }}-postgres template: metadata: labels: app: {{ .Chart.Name }}-postgres spec: {{- if $nodeSelector }} nodeSelector: {{ toYaml $nodeSelector | nindent 8 }} {{- end }} {{- if $tolerations }} tolerations: {{ toYaml $tolerations | nindent 6 }} {{- end }} imagePullSecrets: - name: registrysecret containers: - name: master image: {{ .Values.werf.image.postgresql }} imagePullPolicy: IfNotPresent resources: {{ dig .Values.werf.env .Values.postgres.resources._default .Values.postgres.resources | toYaml | nindent 10 }} volumeMounts: - name: data mountPath: /var/lib/postgresql/data subPath: postgresql - name: config mountPath: /usr/share/postgresql/postgresql.conf.sample subPath: postgresql.conf.sample env: - name: TZ value: "Europe/Moscow" envFrom: - secretRef: name: {{ .Chart.Name }}-postgres-env readinessProbe: tcpSocket: port: {{ .Values.postgres.port }} initialDelaySeconds: 5 timeoutSeconds: 1 livenessProbe: tcpSocket: port: {{ .Values.postgres.port }} initialDelaySeconds: 30 periodSeconds: 5 volumes: - name: config configMap: name: {{ .Chart.Name }}-postgres volumeClaimTemplates: - metadata: name: data spec: accessModes: - ReadWriteOnce resources: requests: storage: {{ $pgStorageSize }} {{- if $pgStorageClass }} storageClassName: {{ $pgStorageClass }} {{- end }} --- apiVersion: v1 kind: Service metadata: name: postgres spec: clusterIP: None selector: app: {{ .Chart.Name }}-postgres ports: - name: {{ .Chart.Name }}-postgres port: {{ .Values.postgres.port }} --- apiVersion: v1 kind: ConfigMap metadata: name: {{ .Chart.Name }}-postgres annotations: werf.io/weight: "-31" data: postgresql.conf.sample: | listen_addresses = '*' log_checkpoints = on log_connections = off log_disconnections = off log_duration = on log_line_prefix = '%m %p %u@%d from %h [vxid:%v txid:%x] [%i]' log_lock_waits = on log_statement = 'all' log_temp_files = 0 log_timezone = 'UTC'