---
# CNPG cluster for Forgejo (railiance01 production forge).
# Managed by railiance-platform (S3). Operator: cnpg-system.
#
# Apply: KUBECONFIG=~/.kube/config-hosteurope make forgejo-db-deploy
# Status: make forgejo-db-status
# Backup: make forgejo-backup (pg_dump + forgejo dump → Nextcloud; docs/forgejo-backup.md)
#
# Pre-condition: forgejo-db-credentials Secret in databases namespace.
# See helm/forgejo-db-secret.sops.yaml.template
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: forgejo-db
  namespace: databases
  labels:
    app.kubernetes.io/name: forgejo-db
    app.kubernetes.io/component: database
    app.kubernetes.io/managed-by: manual
    railiance.io/layer: s3-platform
    railiance.io/consumer: forgejo
spec:
  instances: 1
  imageName: ghcr.io/cloudnative-pg/postgresql:16
  # Burstable QoS + headroom for pg_dump / forgejo-backup (was BestEffort → probe
  # timeouts on :8000 under node CPU pressure). Sized like net-kingdom-pg on ~4Gi node.
  resources:
    requests:
      cpu: 200m
      memory: 512Mi
    limits:
      cpu: "1"
      memory: 1Gi
  # Default liveness window is 30s (3×10s); extend so backup I/O stalls do not restart the pod.
  livenessProbeTimeout: 90
  probes:
    liveness:
      timeoutSeconds: 10
      periodSeconds: 15
      failureThreshold: 6
    readiness:
      timeoutSeconds: 10
      periodSeconds: 15
      failureThreshold: 6
  storage:
    size: 10Gi
  bootstrap:
    initdb:
      database: forgejo
      owner: forgejo
      secret:
        name: forgejo-db-credentials