apiVersion: postgresql.cnpg.io/v1 kind: Cluster metadata: name: login-postgres namespace: login spec: # ── HA: 1 primary + 1 standby replica ──────────────────────────────────── instances: 2 # ── Storage: local-postgres class (fast local NVMe, no Longhorn overhead) ─ storage: storageClass: local-postgres size: 8Gi # ── Spread replicas across nodes ────────────────────────────────────────── affinity: enablePodAntiAffinity: true topologyKey: kubernetes.io/hostname # ── Bootstrap: create the keycloak database and owner role ─────────────── bootstrap: initdb: database: keycloak owner: keycloak # ── WAL archival via barman-cloud → MinIO ───────────────────────────────── plugins: - name: barman-cloud.cloudnative-pg.io isWALArchiver: true parameters: barmanObjectName: minio-store # ── PostgreSQL tuning for Keycloak workload ─────────────────────────────── postgresql: parameters: max_connections: "200" shared_buffers: "256MB" work_mem: "8MB" maintenance_work_mem: "64MB" # ── Resources ───────────────────────────────────────────────────────────── resources: requests: memory: 256Mi cpu: 100m limits: memory: 512Mi cpu: 500m