# Prérequis (à faire une seule fois, hors de ce manifeste — même logique que # deploy/cert-manager/ et deploy/longhorn/, un composant partagé du cluster, # jamais par démo) : # # 1. Créer le bucket S3 (ou compatible S3 : MinIO, Backblaze B2, OVH, # Scaleway, Wasabi...) qui recevra les sauvegardes, avec une paire de # clés d'accès dédiée (droits limités à ce bucket). # # 2. Créer le fichier de credentials LOCALEMENT (ne jamais le committer) : # cat > credentials-velero < # aws_secret_access_key= # EOF # # 3. Créer le namespace + le secret à partir de ce fichier : # kubectl create namespace velero # kubectl create secret generic cloud-credentials \ # --namespace velero --from-file cloud=./credentials-velero # rm credentials-velero # # 4. Renseigner bucket / region / s3Url ci-dessous selon votre fournisseur, # puis installer Velero (chart officiel, version vérifiée) : # helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-charts # helm install velero vmware-tanzu/velero \ # --namespace velero --version 12.1.0 \ # -f deploy/velero/values.yaml # kubectl apply -f deploy/velero/schedule.yml # # Pourquoi File System Backup (kopia) plutôt que des snapshots CSI Longhorn : # ça fonctionne indépendamment du provisioner de stockage (pas de # VolumeSnapshotClass/CRD supplémentaire à maintenir), et couvre aussi bien # les PVC postgres/redis/uploads que le reste de chaque namespace de démo # (Secrets, ConfigMaps, Deployments...) pour une restauration complète, pas # seulement les données. # velero-plugin-for-aws v1.14.2 : dernière version compatible avec Velero # 1.18.x (appVersion de ce chart) — vérifié sur le tableau de compatibilité # du plugin. Fonctionne aussi bien avec AWS S3 qu'avec un stockage # compatible S3 (MinIO, OVH, Backblaze...). initContainers: - name: velero-plugin-for-aws image: velero/velero-plugin-for-aws:v1.14.2 imagePullPolicy: IfNotPresent volumeMounts: - mountPath: /target name: plugins credentials: useSecret: false existingSecret: cloud-credentials configuration: backupStorageLocation: - name: default provider: aws # Nom du bucket créé à l'étape 1. Requis. bucket: "CHANGE_ME_bucket_name" default: true credential: name: cloud-credentials key: cloud config: # Région du bucket (AWS) ou région arbitraire acceptée par votre # fournisseur S3-compatible (souvent "us-east-1" par défaut). region: "CHANGE_ME_region" # URL du endpoint S3-compatible — uniquement si ce n'est PAS AWS S3 # (ex: "https://s3.fr-par.scw.cloud", "https://s3.eu-de.io.cloud.ovh.net"). # Laisser vide pour AWS S3. s3Url: "" # La plupart des fournisseurs S3-compatibles (hors AWS) exigent le # style "path" plutôt que "virtual-hosted" pour adresser un bucket. s3ForcePathStyle: "true" # Pas de VolumeSnapshotLocation : sauvegarde des volumes via File System # Backup (node-agent + kopia) plutôt que des snapshots CSI natifs. volumeSnapshotLocation: [] snapshotsEnabled: false # Node-agent (DaemonSet) : nécessaire pour sauvegarder le contenu réel des # PVC (postgres, redis, uploads) via File System Backup. deployNodeAgent: true