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 (barman-cloud → MinIO) intentionally omitted until BarmanObjectStore # CRD is confirmed present in this cluster. Add back via plugins block once verified. # ── 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