--- apiVersion: v1 kind: Secret metadata: name: demo-postgresql namespace: demo type: Opaque stringData: POSTGRES_PASSWORD: demo-secret-pw --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: demo-postgresql-data namespace: demo spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: demo-postgresql namespace: demo labels: app: demo-postgresql spec: replicas: 1 selector: matchLabels: app: demo-postgresql template: metadata: labels: app: demo-postgresql spec: containers: - name: postgresql image: postgres:17-alpine ports: - containerPort: 5432 env: - name: POSTGRES_DB value: demo - name: POSTGRES_USER value: demo - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: demo-postgresql key: POSTGRES_PASSWORD resources: requests: memory: "64Mi" cpu: "50m" limits: memory: "128Mi" volumeMounts: - name: data mountPath: /var/lib/postgresql/data subPath: pgdata volumes: - name: data persistentVolumeClaim: claimName: demo-postgresql-data --- apiVersion: v1 kind: Service metadata: name: demo-postgresql namespace: demo labels: app: demo-postgresql spec: type: ClusterIP ports: - port: 5432 targetPort: 5432 protocol: TCP selector: app: demo-postgresql