Sauvegarder, restaurer des clusters de charge de travail à l’aide de Velero
S’applique à : AKS sur Azure Stack HCI 22H2, AKS sur Windows Server
Cet article explique comment installer et utiliser Velero pour sauvegarder et restaurer la charge de travail et les clusters cibles à l’aide de Stockage Blob Azure ou du stockage MinIO dans AKS activé par Azure Arc.
Velero est un outil standard de la communauté open source pour sauvegarder et restaurer des objets de cluster Kubernetes et des volumes persistants. Il prend en charge différents fournisseurs de stockage pour stocker ses sauvegardes. Si un cluster Kubernetes cible AKS Arc se bloque et ne parvient pas à récupérer, vous pouvez utiliser une sauvegarde Velero pour restaurer son contenu et ses objets API internes sur un nouveau cluster.
Si vous ne souhaitez pas stocker vos sauvegardes dans Stockage Blob Azure, vous pouvez utiliser MinIO avec Velero. Cet article explique comment installer et configurer Velero pour utiliser Stockage Blob Azure ou installer et configurer Velero pour utiliser le stockage MinIO.
Remarque
Velero ne prend pas officiellement en charge Microsoft Windows. En cours de test, l’équipe Velero a pu sauvegarder uniquement les applications Windows sans état. Restic
l’intégration et les sauvegardes d’applications avec état ou de volumes persistants n’ont pas été prises en charge.
Prérequis
Remplissez ces conditions préalables avant de commencer votre déploiement Velero :
- Installer l’interface de ligne de commande Microsoft Azure.
- Installez
Chocolatey
. Vous pouvez utiliserChocolatey
pour installer le client Velero, qui inclut l’interface CLI Velero, sur un ordinateur Windows.
Installer Velero avec Stockage Blob Azure
Les procédures de cette section décrivent comment installer Velero et utiliser Stockage Blob Azure pour les sauvegardes. Si vous ne souhaitez pas stocker vos sauvegardes dans Azure, accédez à Installer Velero avec le stockage MiniO.
Ouvrez PowerShell en tant qu’administrateur.
Connectez-vous à Azure à l’aide d’Azure CLI :
az login --use-device-code
Installez l’interface CLI Velero en exécutant la commande suivante :
Remarque
L’indicateur
--use-restic
n’est pas pris en charge sur Velero version 1.10 et ultérieure. L’indicateur est uniquement pris en charge sur la version 1.9.x.choco install velero
Si nécessaire, passez à l’abonnement Azure que vous souhaitez utiliser pour les sauvegardes.
Par défaut, Velero stocke les sauvegardes dans le même abonnement Azure que vos machines virtuelles et disques et ne vous permet pas de restaurer des sauvegardes dans un groupe de ressources dans un autre abonnement. Pour activer les opérations de sauvegarde et de restauration entre les abonnements, spécifiez un abonnement à utiliser pour vos sauvegardes. Vous pouvez ignorer cette étape si vous êtes déjà dans l’abonnement que vous souhaitez utiliser pour vos sauvegardes.
Basculez vers l’abonnement que vous souhaitez utiliser pour vos sauvegardes :
Utilisez le nom de l’abonnement pour rechercher l’ID d’abonnement :
$AZURE_BACKUP_SUBSCRIPTION_NAME="<NAME_OF_TARGET_SUBSCRIPTION>" $AZURE_BACKUP_SUBSCRIPTION_ID=$(az account list --query="[?name=='$AZURE_BACKUP_SUBSCRIPTION_NAME'].id | [0]" -o tsv)
Modifiez ensuite l’abonnement :
az account set -s $AZURE_BACKUP_SUBSCRIPTION_ID
Créez un compte de stockage Azure et un conteneur d’objets blob.
Lorsque vous utilisez Stockage Blob Azure pour les sauvegardes, Velero nécessite un compte de stockage et un conteneur d’objets blob pour stocker les sauvegardes. L’exemple suivant montre le compte de stockage créé dans un nouveau groupe de ressources Velero_Backups .
Vous devez créer le compte de stockage avec un ID global unique qui peut être utilisé dans DNS. L’exemple de script utilise l’application
uuidgen
pour générer de façon aléatoire un nom unique. Vous pouvez utiliser n’importe quelle méthode tant que le nom suit les règles d’affectation de noms Azure pour les comptes de stockage.Le compte de stockage est créé avec des fonctionnalités de chiffrement au repos (à l’aide de clés managées Microsoft) et est configuré pour autoriser uniquement l’accès via les connexions HTTPS.
Pour créer le compte de stockage et le conteneur d’objets blob, procédez comme suit :
Créez un groupe de ressources pour le compte de stockage de sauvegarde. Remplacez les répertoires par votre emplacement préféré, si nécessaire, puis exécutez les commandes suivantes :
$AZURE_BACKUP_RESOURCE_GROUP="Velero_Backups" az group create -n $AZURE_BACKUP_RESOURCE_GROUP --location WestUS
Créez le compte de stockage :
$AZURE_STORAGE_ACCOUNT_ID="<NAME_OF_ACCOUNT_TO_ASSIGN>" az storage account create --name $AZURE_STORAGE_ACCOUNT_ID --resource-group $AZURE_BACKUP_RESOURCE_GROUP --sku Standard_GRS --encryption-services blob --https-only true --kind BlobStorage --access-tier Hot
Créez un conteneur d’objets blob :
$BLOB_CONTAINER="velero" az storage container create -n $BLOB_CONTAINER --public-access off --account-name $AZURE_STORAGE_ACCOUNT_ID
L’exemple utilise un conteneur d’objets blob nommé
velero
. Vous pouvez utiliser un autre nom, de préférence unique pour un seul cluster Kubernetes.
Créez un principal de service :
Obtenez l’ID d’abonnement et l’ID de locataire pour votre compte Azure :
$AZURE_SUBSCRIPTION_ID=(az account list --query '[?isDefault].id' -o tsv) $AZURE_TENANT_ID=(az account list --query '[?isDefault].tenantId' -o tsv)
Créez un principal de service disposant de privilèges Contributeur.
Vous pouvez créer un principal de service avec le rôle Contributeur ou utiliser un rôle personnalisé :
- Rôle contributeur : le rôle Contributeur accorde un accès à l’échelle de l’abonnement. Veillez donc à protéger ces informations d’identification si vous attribuez ce rôle.
- Rôle personnalisé : si vous avez besoin d’un rôle plus restrictif, utilisez un rôle personnalisé.
Attribuez le rôle Contributeur :
Si vous utilisez Velero pour sauvegarder plusieurs clusters avec plusieurs conteneurs d’objets blob, vous pouvez créer un nom d’utilisateur unique pour chaque cluster au lieu d’utiliser le nom
velero
.Pour créer un principal de service avec le rôle Contributeur, utilisez la commande suivante. Remplacez votre propre ID d’abonnement et, éventuellement, votre propre nom de principal de service. Microsoft Entra ID génère un secret pour vous.
$AZURE_CLIENT_SECRET=(az ad sp create-for-rbac --name "velero" --role "Contributor" --query 'password' -o tsv --scopes /subscriptions/$AZURE_SUBSCRIPTION_ID)
Effectuez ces ajustements sur la commande si nécessaire :
Si vous envisagez d’utiliser différents abonnements pour votre cluster de charge de travail et vos fichiers de sauvegarde Velero, fournissez les deux ID d’abonnement, comme dans l’exemple suivant :
$AZURE_CLIENT_SECRET=(az ad sp create-for-rbac --name "velero" --role "Contributor" --query 'password' -o tsv --scopes /subscriptions/$AZURE_SUBSCRIPTION_ID /subscriptions/$AZURE_BACKUP_SUBSCRIPTION_ID)
Si vous ne souhaitez pas utiliser
velero
le nom de votre principal de service, vérifiez que le--name
choix est unique dans l’ID Microsoft Entra et qu’il n’est pas en conflit avec d’autres principaux de service ou inscriptions d’applications.
Important
Le secret est affiché uniquement pendant cette étape, lorsque le principal de service est créé. Veillez à noter le secret à utiliser dans les prochaines étapes.
Utilisez un rôle personnalisé :
Si vous souhaitez activer les actions minimales du fournisseur de ressources, créez un rôle personnalisé et attribuez ce rôle au principal de service.
Créez un fichier nommé azure-role.json avec le contenu suivant. Remplacez votre propre nom de rôle personnalisé et votre ID d’abonnement :
{ "Name": <CUSTOM_ROLE_NAME>, "Id": null, "IsCustom": true, "Description": "Velero related permissions to perform backups, restores and deletions", "Actions": [ "Microsoft.Compute/disks/read", "Microsoft.Compute/disks/write", "Microsoft.Compute/disks/endGetAccess/action", "Microsoft.Compute/disks/beginGetAccess/action", "Microsoft.Compute/snapshots/read", "Microsoft.Compute/snapshots/write", "Microsoft.Compute/snapshots/delete", "Microsoft.Storage/storageAccounts/listkeys/action", "Microsoft.Storage/storageAccounts/regeneratekey/action", "Microsoft.Storage/storageAccounts/read" ], "NotActions": [], "AssignableScopes": [ "<SUBSCRIPTION_ID>" ] }
Créez le rôle personnalisé et le principal de service :
az role definition create --role-definition azure-role.json $AZURE_CLIENT_SECRET=(az ad sp create-for-rbac --name "velero" --role "<CUSTOM_ROLE>" --query 'password' -o tsv --scopes /subscriptions/$AZURE_SUBSCRIPTION_ID)
Pour plus d’informations sur la création de rôles personnalisés, consultez Définir des autorisations pour Velero.
Obtenez le nom du principal de service et attribuez ce nom à la variable AZURE_CLIENT_ID :
$AZURE_CLIENT_ID=(az ad sp list --display-name "velero" --query '[0].appId' -o tsv)
Remarque
Les principaux de service expirent. Pour savoir quand votre nouveau principal de service expire, exécutez cette commande :
az ad sp show --id $AZURE_CLIENT_ID
.Créez un fichier qui contient les variables requises par l’installation de Velero. La commande ressemble à la commande suivante :
AZURE_SUBSCRIPTION_ID=${AZURE_SUBSCRIPTION_ID} AZURE_TENANT_ID=${AZURE_TENANT_ID} AZURE_CLIENT_ID=${AZURE_CLIENT_ID} AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET} AZURE_RESOURCE_GROUP=${AZURE_BACKUP_RESOURCE_GROUP} AZURE_CLOUD_NAME=AzurePublicCloud" | Out-File -FilePath ./credentials-velero.txt
Important
Supprimez ce fichier après avoir installé Velero. La clé secrète client est en texte clair, ce qui peut présenter un risque de sécurité.
Avant de continuer, vérifiez que le fichier est correctement mis en forme. L’extension de nom de fichier n’a pas d’importance.
- Supprimez les espaces ou onglets supplémentaires.
- Vérifiez que les noms des variables sont corrects.
Installez et démarrez Velero.
Installez Velero sur le cluster et démarrez le déploiement. Cette procédure crée un espace de noms appelé
velero
et ajoute un déploiement nommévelero
à l’espace de noms.Installez Velero à l’aide de la commande suivante. Vous devez personnaliser l’exemple de commande.
velero install --provider azure --plugins velero/velero-plugin-for-microsoft-azure:v1.5.0 --bucket $BLOB_CONTAINER --secret-file ./credentials-velero.txt --backup-location-config resourceGroup=$AZURE_BACKUP_RESOURCE_GROUP,storageAccount=$AZURE_STORAGE_ACCOUNT_ID,subscriptionId=$AZURE_BACKUP_SUBSCRIPTION_ID --use-restic
Définissez les variables suivantes en fonction des besoins :
La commande installe le plug-in Microsoft Azure, qui doit être compatible avec la version de Velero CLI que vous utilisez. L’exemple de commande utilise le plug-in Microsoft Azure version 1.5.0, qui est compatible avec la dernière version de l’interface CLI Velero, 1.9.0. Pour savoir quelle version du plug-in Microsoft Azure installer avec votre version de Valero CLI, consultez la matrice de compatibilité.
Veillez à inclure le paramètre pour activer la
--use-restic
sauvegarde des volumes Kubernetes au niveau du système de fichiers à l’aideRestic
de .Restic
peut être utilisé pour sauvegarder n’importe quel type de volume Kubernetes. Par défaut, Velero prend en charge la prise d’instantanés de volumes persistants pour les volumes Amazon EBS, Azure Disques managés et les disques persistants Google. Dans AKS Arc, les volumes Kubernetes utilisent des volumes partagés de cluster (CSV) pour stocker des données. Par conséquent,Restic
il est nécessaire d’activer les instantanés de volume persistant. AKS Arc ne prend actuellement pas en charge les instantanés de volume.subscriptionId=$AZURE_BACKUP_SUBSCRIPTION_ID
est facultatif. Vous devez uniquement l’inclure si Velero et le cluster de charge de travail ont des ID d’abonnement différents. S’ils utilisent le même abonnement Azure, vous pouvez supprimer lesubscriptionId
paramètre et le fichier credentials-velero.txt fournira ces informations.
Le service Velero démarre automatiquement lors de l’installation.
Vérifiez si le service Velero s’exécute correctement :
kubectl -n velero get pods kubectl logs deployment/velero -n velero
La
get pods
commande doit indiquer que les pods Velero sont en cours d’exécution.
Installer Velero avec le stockage MinIO
Les procédures de cette section décrivent comment installer Velero et utiliser le stockage MinIO pour les sauvegardes. Si vous préférez utiliser Stockage Blob Azure pour vos sauvegardes, accédez à Installer Velero avec Stockage Blob Azure.
Si vous ne souhaitez pas stocker vos sauvegardes dans MinIO, accédez à Configurer Velero pour utiliser Stockage Blob Azure.
Installez l’interface CLI Velero en exécutant la commande suivante. Installez
Chocolately
si vous ne l’avez pas déjà fait.choco install velero
Installez MinIO :
Créez un volume persistant pour stocker la sauvegarde MinIO. L’exemple crée un volume persistant dans la classe de stockage par défaut dans AKS Arc, qui existe déjà.
Créez un fichier YAML nommé minio-pvc-storage.yaml, avec le contenu suivant :
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: minio-pv-claim spec: storageClassName: default accessModes: - ReadWriteOnce resources: requests: storage: 100Gi
Créez le volume persistant en exécutant cette commande :
kubectl create -f minio-pvc-storage.yaml
Créez un fichier de déploiement, minio-deployment.yaml, pour démarrer MinIO. Incluez le contenu suivant. Le déploiement utilise le volume persistant que vous avez créé.
apiVersion: apps/v1 kind: Deployment metadata: name: minio-deployment spec: selector: matchLabels: app: minio strategy: type: Recreate template: metadata: labels: app: minio spec: volumes: - name: storage persistentVolumeClaim: claimName: minio-pv-claim containers: - name: minio image: minio/minio:latest args: - server - /storage env: - name: MINIO_ACCESS_KEY value: "<you can define this>" - name: MINIO_SECRET_KEY value: "<you can define this>" ports: - containerPort: 9000 hostPort: 9000 volumeMounts: - name: storage mountPath: "/storage"
Puis créez le déploiement :
kubectl create -f minio-deployment.yaml
Créez un service Kubernetes appelé minio-service.yaml. Ce service fournit des adresses IP externes au pod MinIO.
Créez un fichier YAML avec les paramètres suivants pour configurer le service :
apiVersion: v1 kind: Service metadata: name: minio-service spec: type: LoadBalancer ports: - port: 9000 targetPort: 9000 protocol: TCP selector: app: minio
Créez ensuite le service :
kubectl create -f mino-service.yaml
Obtenez l’adresse IP externe du pod MinIO en exécutant la commande suivante. Vous utiliserez cette adresse pour installer Velero.
kubectl get svc
Pour vérifier si MinIO est opérationnel, connectez-vous à l’adresse IP dans un navigateur ou utilisez le client MinIO, comme décrit ci-dessous.
Installez le client MinIO et parcourez les fichiers MinIO.
Téléchargez le client MinIO :
Invoke-WebRequest -Uri "https://dl.minio.io/client/mc/release/windows-amd64/mc.exe" -OutFile "C:\mc.exe
Ensuite, définissez un alias :
mc alias set minio http://10.10.77.6:9000 "minio_access_key" "minio_secret_key" --api s3v4
Enfin, parcourez l’installation de MinIO :
mc ls minio
Créez un compartiment pour stocker des fichiers Velero. Ce compartiment sera utilisé dans l’installation de Velero.
mc mb minio/velero-backup
Créez un fichier d’informations d’identification MinIO minio.credentials avec les informations suivantes :
[default] aws_access_key_id=<minio_access_key> aws_secret_access_key=<minio_secret_key>
Installer Velero :
velero install --provider aws --bucket velero-backup --secret-file .\minio.credentials --backup-location-config region=minio,s3ForcePathStyle=true,s3Url=http://10.10.77.6:9000 --plugins velero/velero-plugin-for-aws:v1.1.0 --use-restic
Avant d’exécuter cette commande, vérifiez le nom du compartiment, vos informations d’identification MinIO et l’adresse IP externe MinIO.
Vérifiez si le service Velero s’exécute correctement :
kubectl -n velero get pods kubectl logs deployment/velero -n Velero
La
get pods
commande doit indiquer que les pods Velero sont en cours d’exécution.
Sauvegarder un cluster
Vous pouvez sauvegarder ou restaurer tous les objets de votre cluster, ou filtrer des objets par type, espace de noms et/ou étiquette.
Création d'une sauvegarde
Utilisez la commande Velero backup create
pour créer des sauvegardes dans votre stockage choisi. Les exemples suivants utilisent l’indicateur --default-volumes-to-restic
, qui crée un instantané des volumes persistants. Pour obtenir d’autres options de sauvegarde, consultez la référence de sauvegarde Velero.
Sauvegarde à la demande de tous les espaces de noms de votre cluster :
velero backup create <BACKUP-NAME> --default-volumes-to-restic
Sauvegarde à la demande d’un espace de noms unique dans votre cluster :
velero backup create <BACKUP-NAME> --include-namespaces <NAMESPACE1> --default-volumes-to-restic
Sauvegarde à la demande de plusieurs espaces de noms sélectionnés dans votre cluster :
velero backup create <BACKUP-NAME> --include-namespaces <NAMESPACE-1>, <NAMESPACE-2> --default-volumes-to-restic
Vérifier la progression de la sauvegarde
Pour vérifier la progression d’une sauvegarde, exécutez cette commande :
velero backup describe <BACKUP-NAME>
Si vous utilisez Stockage Blob Azure pour vos sauvegardes, vous pouvez afficher votre sauvegarde dans votre compte de stockage Azure sous l’objet blob/conteneur que vous avez créé.
Restaurer un cluster
Pour restaurer un cluster, vous devez créer un cluster pour restaurer l’ancien cluster. Vous ne pouvez pas restaurer une sauvegarde de cluster sur un cluster existant.
La restore
commande vous permet de restaurer tous les objets et volumes persistants à partir d’une sauvegarde créée précédemment. Vous pouvez aussi restaurer uniquement un sous-ensemble filtré d’objets et de volumes persistants. Pour plus d’options de sauvegarde, consultez Filtrage des ressources.
Sur le cluster sur lequel vous souhaitez restaurer la sauvegarde (le cluster de destination) :
Déployez Velero à l’aide des instructions ci-dessus. Utilisez les mêmes informations d’identification Azure que celles que vous avez utilisées pour le cluster source.
Vérifiez que l’objet de sauvegarde Velero a été créé en exécutant la commande suivante. Les ressources Velero sont synchronisées avec les fichiers de sauvegarde dans le stockage cloud.
velero backup describe <BACKUP-NAME>
Une fois que vous avez confirmé que la sauvegarde appropriée (
BACKUP-NAME
) est présente, restaurez tous les objets de la sauvegarde :velero restore create --from-backup <BACKUP-NAME>
Obtenir de l’aide sur les commandes Velero
Pour afficher toutes les options associées à une commande Velero spécifique, utilisez l’indicateur --help
avec la commande. Par exemple, velero restore create --help
montre toutes les options associées à la commande velero restore create
.
Par exemple, pour répertorier toutes les options de velero restore
, exécuter velero restore --help
, qui retourne les informations suivantes :
velero restore [command]
Available Commands:
create Create a restore
delete Delete restores
describe Describe restores
get Get restores
logs Get restore logs
Désinstaller Velero
Pour désinstaller Velero de votre cluster et supprimer toutes les ressources créées par l’installation de Velero, exécutez les commandes suivantes :
kubectl delete namespace/velero clusterrolebinding/velero
kubectl delete crds -l component=velero