Pular para o conteúdo

Backup & DR

Como o rke-db-00 concentra os dados críticos de GitLab, Nextcloud e Penpot, o backup é a peça que torna o armazenamento local seguro. A Serigy usa o Wal-G (integrado ao CloudNativePG) para arquivar continuamente no Cloudflare R2.

A decisão (registrada em ADR-0001) é despejar os backups em um Object Storage S3 — o Cloudflare R2 — e não replicar para armazenamento frio local pelo túnel Headscale.

CritérioCloudflare R2
CompatibilidadeAPI S3 nativa (Wal-G fala S3)
Custo de egressSem cobrança de egress
Off-siteFora da OVH → resiliência a falha do provedor
OperaçãoGerenciado, sem manter storage no escritório
flowchart LR
    PG[("PostgreSQL<br/>rke-db-00")] -->|WAL contínuo| WG["Wal-G"]
    PG -->|base backup periódico| WG
    WG ==>|S3 API| R2["🪣 Cloudflare R2<br/>s3://serigy-backups/*"]
    R2 -.->|restore / PITR| New[("Novo PostgreSQL")]
  • Base backups — cópias completas periódicas do banco.
  • WAL archiving — fluxo contínuo de write-ahead logs, que permite PITR (recuperação para um instante exato).
spec:
backup:
barmanObjectStore:
destinationPath: s3://serigy-backups/<app>
endpointURL: https://<accountid>.r2.cloudflarestorage.com
s3Credentials:
accessKeyId:
name: r2-credentials
key: ACCESS_KEY_ID
secretAccessKey:
name: r2-credentials
key: SECRET_ACCESS_KEY
wal:
compression: gzip
retentionPolicy: "30d"

As credenciais do R2 vêm de um Secret entregue pelo Vault — nunca embutidas no manifesto.

O procedimento passo a passo está em Runbooks → Backup & Restore. Em resumo: o CNPG cria um novo Cluster a partir do barmanObjectStore, reaplica os WALs até o instante desejado e religa a aplicação ao novo Service.