# ── 数据面:CNPG HA(REV-2 §3c 调优参数)──────────────────────────────────────
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: sema-pg
  namespace: {{ .Release.Namespace }}
spec:
  instances: {{ .Values.pg.instances }}
  # 反亲和(>=3 机 required,不然调度器把多实例挤同节点——复审实抓 pg-2/pg-3 同机;
  # <3 机 preferred,required 会让副本永久 Pending——单节点 dev 真踩)
  affinity:
    enablePodAntiAffinity: true
    topologyKey: kubernetes.io/hostname
    podAntiAffinityType: {{ .Values.pg.antiAffinity }}
  storage:
    size: {{ .Values.pg.storageSize }}
{{- if .Values.pg.storageClass }}
    storageClass: {{ .Values.pg.storageClass }}
{{- end }}
  bootstrap:
    initdb:
      database: sema
      owner: sema
  postgresql:
    parameters:
{{ toYaml .Values.pg.parameters | indent 6 }}
{{- if .Values.pg.backup.enabled }}
  # ⚠ in-tree barman 在 CNPG 1.31 移除——operator 钉 1.30.0;升 operator 前必须先迁 barman-cloud plugin(需 cert-manager)
  backup:
    retentionPolicy: {{ .Values.pg.backup.retention }}
    barmanObjectStore:
      destinationPath: {{ .Values.pg.backup.bucket }}
      endpointURL: http://sema-minio.{{ .Release.Namespace }}.svc:9000
      s3Credentials:
        accessKeyId:
          name: sema-minio
          key: rootUser
        secretAccessKey:
          name: sema-minio
          key: rootPassword
      wal:
        compression: gzip
{{- end }}
{{- if .Values.pg.backup.enabled }}
---
# 每日基备(WAL 连续归档另在跑,支持 PITR);bucket 需先建(cluster-up mc mb)
apiVersion: postgresql.cnpg.io/v1
kind: ScheduledBackup
metadata:
  name: sema-pg-daily
  namespace: {{ .Release.Namespace }}
spec:
  schedule: {{ .Values.pg.backup.schedule | quote }}
  backupOwnerReference: self
  cluster:
    name: sema-pg
{{- end }}
