Procédure de Migration
Avec l’aide de Velero, il est assez simple de migrer des resources d’un cluster vers un autre.
Chaque cluster est configuré avec 2 BackupStorageLocations, soit l’emplacement des backups Velero.
Afin de faire la migration entre cluster, il est impératif que les clusters aient accès à un bucket partagé.
C’est pour cette raison que le bucket migration a été configuré sur chaque cluster.
> kubectl get backupstoragelocations.velero.io -n velero
NAME PHASE LAST VALIDATED AGE DEFAULT
default Available 45s 8h true
migration Available 45s 8h Pour faire une migration, il suffit d’exécuter le script suivant :
#!/usr/bin/env bash
if (($# < 2 || $# > 3)); then
echo "Usage: $0 <project> <namespace> [source-bsl]"
echo " project - logical name used for backup/restore (eg. cedille)"
echo " namespace - namespace to include in the backup and create on destination"
echo " source-bsl - (optional) velero BackupStorageLocation name to use on the source cluster"
exit 1
fi
PROJECT=$1
NAMESPACE=$2
BSL_ARG=${3:-}
kubectl config use-context cedille-k8s-cedille-production-v2
echo "Creating backup in source cluster (context: cedille-k8s-cedille-production-v2)"
if [[ -n "$BSL_ARG" ]]; then
echo "Using BackupStorageLocation: $BSL_ARG"
velero backup create $PROJECT-migration \
--include-namespaces $NAMESPACE \
--storage-location $BSL_ARG \
--wait
else
velero backup create $PROJECT-migration \
--include-namespaces $NAMESPACE \
--wait
fi
kubectl config use-context cedille-k8s-shared
echo "Preparing destination cluster (context: cedille-k8s-shared)"
kubectl create namespace $NAMESPACE || true
echo "Checking if backup is ready"
while [[ $(velero backup get planifets-1-migration -o json | jq '[.status.phase]' -c ) != '["Completed"]' ]];
do
sleep 5
done
echo "Creating restore from backup: $PROJECT-migration"
velero restore create $PROJECT-restore \
--from-backup $PROJECT-migration \
--wait
Voici un example d’utilisation :
./migration.sh cedille cedille migrationLe script assume que l’on veut migrer les namespaces du cluster cedille-k8s-cedille-production-v2 vers cedille-k8s-shared.