apiVersion: apps/v1 kind: StatefulSet metadata: name: postgis spec: serviceName: postgis replicas: 1 selector: matchLabels: {app: postgis} template: metadata: labels: {app: postgis} spec: containers: - name: postgis image: postgis/postgis:18-3.6-alpine imagePullPolicy: IfNotPresent env: - name: POSTGRES_DB valueFrom: secretKeyRef: name: who-need-help-local key: POSTGRES_DB - name: POSTGRES_USER valueFrom: secretKeyRef: name: who-need-help-local key: POSTGRES_USER - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: who-need-help-local key: POSTGRES_PASSWORD ports: - {name: postgres, containerPort: 5432} readinessProbe: exec: command: ["pg_isready", "-U", "postgres", "-d", "who_need_help"] periodSeconds: 3 volumeMounts: - {name: data, mountPath: /var/lib/postgresql} volumes: - name: data hostPath: path: /var/local/who-need-help/postgres type: DirectoryOrCreate --- apiVersion: v1 kind: Service metadata: name: postgis spec: selector: {app: postgis} ports: - {name: postgres, port: 5432, targetPort: postgres} --- apiVersion: apps/v1 kind: Deployment metadata: name: mailpit spec: replicas: 1 selector: matchLabels: {app: mailpit} template: metadata: labels: {app: mailpit} spec: containers: - name: mailpit image: axllent/mailpit:v1.30.4 imagePullPolicy: IfNotPresent ports: - {name: smtp, containerPort: 1025} - {name: http, containerPort: 8025} --- apiVersion: v1 kind: Service metadata: name: mailpit spec: type: NodePort selector: {app: mailpit} ports: - {name: smtp, port: 1025, targetPort: smtp} - {name: http, port: 8025, targetPort: http, nodePort: 30227}