CloudNativePG
O CloudNativePG (CNPG) é o operador Kubernetes que cria e gerencia todos os
clusters PostgreSQL da Serigy. O agente o instala no cluster
rke-app e usa um padrão de manifesto único para todos
os bancos.
Instalação
Seção intitulada “Instalação”O operador roda no namespace cnpg-system. Ele observa objetos Cluster e
materializa os pods PostgreSQL, Services, Secrets e jobs de backup.
flowchart LR
CNPG{{Operador CNPG<br/>cnpg-system}}
CR["Cluster (CR)"] -->|observado por| CNPG
CNPG -->|cria| Pods["Pods PostgreSQL<br/>(no rke-db-00)"]
CNPG -->|cria| Svc["Service -rw / -ro"]
CNPG -->|agenda| Bkp["Backups Wal-G → R2"]
Manifesto canônico de um cluster
Seção intitulada “Manifesto canônico de um cluster”Todo Cluster carrega o bloco de affinity + tolerations
para ser fixado no rke-db-00, a StorageClass NVMe e a
configuração de backup no R2.
apiVersion: postgresql.cnpg.io/v1kind: Clustermetadata: name: nextcloud-db namespace: nextcloudspec: instances: 1 storage: storageClass: nvme-local # disco de alta performance no nó de banco size: 50Gi
# Fixa o banco no nó dedicado (ver Scheduling) affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/database operator: In values: ["true"] tolerations: - key: "dedicated" operator: "Equal" value: "database" effect: "NoSchedule"
# Backup contínuo via Wal-G para o Cloudflare R2 (ver Backup & DR) backup: barmanObjectStore: destinationPath: s3://serigy-backups/nextcloud endpointURL: https://<accountid>.r2.cloudflarestorage.com s3Credentials: accessKeyId: name: r2-credentials key: ACCESS_KEY_ID secretAccessKey: name: r2-credentials key: SECRET_ACCESS_KEY retentionPolicy: "30d"Conexão das aplicações
Seção intitulada “Conexão das aplicações”O CNPG expõe dois Services:
| Service | Uso |
|---|---|
<cluster>-rw | Leitura/escrita (primário) |
<cluster>-ro | Somente leitura (réplicas) |
A aplicação stateless se conecta pelo -rw via ClusterIP interno — ver
Deploy em duas etapas.