apiVersion: apps/v1 kind: StatefulSet metadata: name: postgres spec: serviceName: postgres-service replicas: 1 selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: containers: - name: postgres image: postgres:15-alpine ports: - containerPort: 5432 name: postgres env: - name: POSTGRES_DB valueFrom: secretKeyRef: name: team-planner-secrets key: db-name - name: POSTGRES_USER valueFrom: secretKeyRef: name: team-planner-secrets key: db-user - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: team-planner-secrets key: db-password - name: PGDATA value: /var/lib/postgresql/data/pgdata volumeMounts: - name: postgres-storage mountPath: /var/lib/postgresql/data resources: requests: memory: "256Mi" cpu: "250m" limits: memory: "512Mi" cpu: "500m" livenessProbe: exec: command: - sh - -c - 'pg_isready -h 127.0.0.1 -U "$POSTGRES_USER" -d "$POSTGRES_DB"' initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 5 readinessProbe: exec: command: - sh - -c - 'pg_isready -h 127.0.0.1 -U "$POSTGRES_USER" -d "$POSTGRES_DB"' initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 5 volumes: - name: postgres-storage persistentVolumeClaim: claimName: postgres-pvc