92 lines
3.8 KiB
YAML
92 lines
3.8 KiB
YAML
# 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 <<EOF
|
|
# [default]
|
|
# aws_access_key_id=<votre_access_key>
|
|
# aws_secret_access_key=<votre_secret_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
|
|
#
|
|
# 5. Sécurité du bucket — à vérifier CÔTÉ RustFS/MinIO (rien de tout ça ne
|
|
# se configure depuis ce repo) : chaque sauvegarde contient les Secrets
|
|
# K8s en clair (mots de passe postgres/redis, JWT, tokens Telegram...)
|
|
# de toutes les démos.
|
|
# - Chiffrement at-rest activé sur le bucket/disque côté RustFS/MinIO
|
|
# (indépendant du header SSE ci-dessous, qui ne fait que le demander
|
|
# au serveur).
|
|
# - Clé d'accès dédiée à ce bucket UNIQUEMENT (voir étape 1) — jamais la
|
|
# clé d'admin du cluster de stockage.
|
|
# - Versioning ou object-lock (WORM) activé si le fournisseur le
|
|
# supporte : sans ça, une clé compromise peut aussi supprimer/écraser
|
|
# l'historique des sauvegardes, pas seulement les données live.
|
|
#
|
|
# 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:
|
|
region: "us-east-1"
|
|
s3Url: "CHANGE_ME_https://votre-endpoint-rustfs-ou-minio"
|
|
s3ForcePathStyle: "true"
|
|
insecureSkipTLSVerify: "false"
|
|
# Chiffrement côté serveur du contenu des sauvegardes (SSE-S3,
|
|
# AES256 géré par le bucket) — RustFS et MinIO le supportent tous
|
|
# les deux. Ne dispense pas de vérifier le chiffrement at-rest réel
|
|
# du stockage sous-jacent (voir étape 5 ci-dessus).
|
|
serverSideEncryption: "AES256"
|
|
|
|
volumeSnapshotLocation: []
|
|
|
|
snapshotsEnabled: false
|
|
|
|
deployNodeAgent: true
|