Define scoped Forgejo native backup on the Scaleway primary

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a06ecb-456a-71c2-b41e-0755d336e883
This commit is contained in:
codex 2026-09-06 00:48:25 +02:00
parent 63b5d6d426
commit 978383fadb
6 changed files with 188 additions and 2 deletions

View file

@ -0,0 +1,20 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-backup-egress-forgejo-db
namespace: databases
spec:
podSelector:
matchLabels:
cnpg.io/cluster: forgejo-db
policyTypes: [Egress]
egress:
- ports:
- {port: 443, protocol: TCP}
- to:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: kube-system
ports:
- {port: 53, protocol: UDP}
- {port: 53, protocol: TCP}

View file

@ -0,0 +1,14 @@
apiVersion: postgresql.cnpg.io/v1
kind: ScheduledBackup
metadata:
name: forgejo-db-daily
namespace: databases
labels:
cnpg.io/cluster: forgejo-db
spec:
schedule: "0 35 2 * * *"
backupOwnerReference: self
cluster:
name: forgejo-db
immediate: true
method: barmanObjectStore

View file

@ -4,7 +4,7 @@
#
# 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)
# Primary: Scaleway Barman + WAL. Secondary: make forgejo-backup (Nextcloud + age).
#
# Pre-condition: forgejo-db-credentials Secret in databases namespace.
# See helm/forgejo-db-secret.sops.yaml.template
@ -49,4 +49,22 @@ spec:
database: forgejo
owner: forgejo
secret:
name: forgejo-db-credentials
name: forgejo-db-credentials
backup:
retentionPolicy: 30d
barmanObjectStore:
destinationPath: s3://railiance-platform-pg-backup/platform-pg/forgejo-db/
endpointURL: https://s3.nl-ams.scw.cloud
s3Credentials:
accessKeyId:
name: platform-pg-backup-s3
key: ACCESS_KEY_ID
secretAccessKey:
name: platform-pg-backup-s3
key: ACCESS_SECRET_KEY
wal:
compression: gzip
maxParallel: 2
data:
compression: gzip
jobs: 2