I'm trying to create a PostgreSQL database in Google Kubernetes Engine, backed on a PVC to maintain the stored databases. Currently I have this definition:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: postgres
spec:
serviceName: "postgres"
selector:
matchLabels:
db: postgres
template:
metadata:
labels:
db: postgres
spec:
containers:
- name: postgres
image: postgres:12.1
ports:
- containerPort: 5432
volumeMounts:
- name: postgres-disk
mountPath: "/var/lib/postgresql"
env:
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
- name: PGUSER
value: postgres
- name: POSTGRES_DB
value: postgres
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: password
volumeClaimTemplates:
- metadata:
name: postgres-disk
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: "standard"
resources:
requests:
storage: 1Gi
It works as expected, but if I kill the pod to simulate a node failure the whole database is restarted from scratch losing all stored data.