--- apiVersion: v1 kind: PersistentVolume metadata: name: icebay-postgres-pv labels: app: icebay component: database spec: capacity: storage: 2Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: manual hostPath: path: /mnt/data/icebay-postgres --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: icebay-postgres-pvc namespace: icebay labels: app: icebay component: database spec: accessModes: - ReadWriteOnce storageClassName: manual resources: requests: storage: 2Gi --- apiVersion: apps/v1 kind: StatefulSet metadata: name: postgres namespace: icebay labels: app: icebay component: database spec: serviceName: "postgres-service" replicas: 1 selector: matchLabels: app: icebay component: database template: metadata: labels: app: icebay component: database spec: containers: - name: postgres image: postgres:15-alpine ports: - containerPort: 5432 env: - name: POSTGRES_DB value: "icebaydb" - name: POSTGRES_USER valueFrom: secretKeyRef: name: icebay-secret key: POSTGRES_USER - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: icebay-secret key: POSTGRES_PASSWORD - name: PGDATA value: /var/lib/postgresql/data/pgdata volumeMounts: - name: postgres-storage mountPath: /var/lib/postgresql/data - name: init-script mountPath: /docker-entrypoint-initdb.d readinessProbe: exec: command: ["pg_isready","-U","icebayuser","-d","icebaydb"] initialDelaySeconds: 10 periodSeconds: 5 resources: requests: memory: "256Mi" cpu: "100m" limits: memory: "512Mi" cpu: "500m" volumes: - name: postgres-storage persistentVolumeClaim: claimName: icebay-postgres-pvc - name: init-script configMap: name: icebay-init