Sauvegarde des données applicatives
Sauvegarde des données applicatives
Stratégie de sauvegarde des données applicatives (PVC bloc/CephFS) par
VolumeSnapshots CSI Ceph, en complément de la sauvegarde etcd (rôle
etcd-backup).
Décision et limites :
ADR 0013.
⚠️ Couverture. Les VolumeSnapshots protègent de la suppression accidentelle et de la corruption logique — pas d’une perte totale du cluster (ils vivent dans le même Ceph). Voir l’ADR pour les évolutions off-site.
Contenu
| Fichier | Rôle |
|---|---|
volume-snapshot-class.yaml | VolumeSnapshotClass RBD + CephFS (deletionPolicy: Retain) |
snapshot-cronjob.yaml | CronJob quotidien + RBAC : snapshote les PVC backup=daily, rétention 7 |
block-replicated-retain.yaml | StorageClass bloc ×3 en reclaimPolicy: Retain (volumes précieux) |
Installation
kubectl apply -f storage/ceph/backup/volume-snapshot-class.yamlkubectl apply -f storage/ceph/backup/block-replicated-retain.yamlkubectl apply -f storage/ceph/backup/snapshot-cronjob.yamlProtéger un volume
- Le rendre récupérable : créer le PVC avec
storageClassName: rook-ceph-block-replicated-retain(undelete pvcne détruira plus le volume). - L’inclure dans les snapshots quotidiens : labelliser le PVC.
apiVersion: v1kind: PersistentVolumeClaimmetadata: name: mydata labels: backup: daily # ← pris en charge par le CronJobspec: storageClassName: rook-ceph-block-replicated-retain accessModes: [ReadWriteOnce] resources: requests: storage: 10GiPour un PVC CephFS (RWX), surcharger la classe de snapshot du CronJob
(SNAPCLASS=csi-cephfsplugin-snapclass) ou créer un CronJob dédié.
Restaurer un volume depuis un snapshot
# Lister les snapshots d'un PVCkubectl get volumesnapshot -n <ns> -l backup-of=<pvc>
# Créer un nouveau PVC à partir d'un snapshotkubectl apply -f - <<EOFapiVersion: v1kind: PersistentVolumeClaimmetadata: name: <pvc>-restored namespace: <ns>spec: storageClassName: rook-ceph-block-replicated-retain dataSource: name: <nom-du-volumesnapshot> kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes: [ReadWriteOnce] resources: requests: storage: 10Gi # ≥ taille du snapshotEOFPuis re-pointer l’application sur <pvc>-restored (ou copier les données).
RPO / RTO
- RPO ≈ 24 h (schedule du CronJob
30 2 * * *), réductible par PVC. - RTO : quelques minutes (création d’un PVC
dataSource). - Rétention : 7 snapshots par PVC (
KEEPdans le CronJob).
À valider sur le banc
Scénario dédié à ajouter (esprit du
09-etcd-restore.sh)
: écrire une donnée → snapshot → supprimer/corrompre → restaurer via
dataSource → vérifier le retour de la donnée.