123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- {{/* Returns a postgres pod with init container for fixing permissions
- and a pre-upgrade job to backup the database */}}
- {{/* Call this template:
- {{ include "ix.v1.common.app.postgres" (dict "name" "postgres" "secretName" "postgres-creds" "backupPath" "/postgres_backup" "resources" .Values.resources) }}
- name (optional): Name of the postgres pod/container (default: postgres)
- secretName (required): Name of the secret containing the postgres credentials
- backupPath (optional): Path to store the backup, it's the container's path (default: /postgres_backup)
- resources (required): Resources for the postgres container
- */}}
- {{- define "ix.v1.common.app.postgres" -}}
- {{- $name := .name | default "postgres" -}}
- {{- $secretName := (required "Postgres - Secret Name is required" .secretName) -}}
- {{- $backupPath := .backupPath | default "/postgres_backup" -}}
- {{- $resources := (required "Postgres - Resources are required" .resources) }}
- {{ $name }}:
- enabled: true
- type: Deployment
- podSpec:
- containers:
- {{ $name }}:
- enabled: true
- primary: true
- imageSelector: postgresImage
- securityContext:
- runAsUser: 999
- runAsGroup: 999
- readOnlyRootFilesystem: false
- resources:
- limits:
- cpu: {{ $resources.limits.cpu }}
- memory: {{ $resources.limits.memory }}
- envFrom:
- - secretRef:
- name: {{ $secretName }}
- probes:
- liveness:
- enabled: true
- type: exec
- command:
- - sh
- - -c
- - "until pg_isready -U ${POSTGRES_USER} -h localhost; do sleep 2; done"
- readiness:
- enabled: true
- type: exec
- command:
- - sh
- - -c
- - "until pg_isready -U ${POSTGRES_USER} -h localhost; do sleep 2; done"
- startup:
- enabled: true
- type: exec
- command:
- - sh
- - -c
- - "until pg_isready -U ${POSTGRES_USER} -h localhost; do sleep 2; done"
- initContainers:
- {{- include "ix.v1.common.app.permissions" (dict "UID" 999 "GID" 999) | nindent 6 }}
- postgresbackup:
- enabled: true
- type: Job
- annotations:
- "helm.sh/hook": pre-upgrade
- "helm.sh/hook-weight": "1"
- "helm.sh/hook-delete-policy": hook-succeeded
- podSpec:
- restartPolicy: Never
- containers:
- postgresbackup:
- enabled: true
- primary: true
- imageSelector: postgresImage
- securityContext:
- runAsUser: 999
- runAsGroup: 999
- readOnlyRootFilesystem: false
- probes:
- liveness:
- enabled: false
- readiness:
- enabled: false
- startup:
- enabled: false
- resources:
- limits:
- cpu: 2000m
- memory: 2Gi
- envFrom:
- - secretRef:
- name: {{ $secretName }}
- command:
- - sh
- - -c
- - |
- until pg_isready -U ${POSTGRES_USER} -h ${POSTGRES_HOST}; do sleep 2; done
- echo "Creating backup of ${POSTGRES_DB} database"
- pg_dump --dbname=${POSTGRES_URL} --file {{ $backupPath }}/${POSTGRES_DB}_$(date +%Y-%m-%d_%H-%M-%S).sql || echo "Failed to create backup"
- echo "Backup finished"
- initContainers:
- {{- include "ix.v1.common.app.permissions" (dict "UID" 999 "GID" 999 "type" "init") | nindent 6 }}
- {{- end -}}
|