Restaurer Azure Kubernetes Service à l’aide de Azure CLI
Cet article explique comment restaurer un cluster Azure Kubernetes à partir d’un point de restauration créé par la Sauvegarde Azure à l’aide de Azure CLI.
Sauvegarde Azure vous permet désormais de sauvegarder des clusters AKS (ressources de cluster et volumes persistants attachés au cluster) à l’aide d’une extension de sauvegarde, qui doit être installée dans le cluster. Le coffre de sauvegarde communique avec le cluster via cette extension de sauvegarde pour effectuer des opérations de sauvegarde et de restauration.
Vous pouvez effectuer à la fois la récupération à l’emplacement d’origine (OLR) (restauration dans le cluster AKS sauvegardé) et la récupération à l’emplacement alternatif (ALR) (restauration dans un autre cluster AKS). Vous pouvez également sélectionner les éléments à restaurer à partir de la sauvegarde Item-Level Recovery (ILR).
Notes
Avant de lancer une opération de restauration, l’extension de sauvegarde du cluster cible doit être installée et l’accès approuvé doit être activé pour le coffre de sauvegarde. Plus d’informations
Avant de commencer
La sauvegarde AKS vous permet de restaurer sur un cluster AKS d’origine (qui a été sauvegardé) et sur un autre cluster AKS. La sauvegarde AKS vous permet d’effectuer une restauration complète et une restauration au niveau de l’élément. Vous pouvez utiliser des configurations de restauration pour définir des paramètres en fonction des ressources de cluster qui seront récupérées pendant la restauration.
Vous devez installer l’extension de sauvegarde dans le cluster AKS cible. En outre, vous devez activer l’accès approuvé entre le coffre de sauvegarde et le cluster AKS.
Pour plus d’informations sur les scénarios pris en charge et les limitations, consultez la matrice de prise en charge.
Valider et préparer le cluster AKS cible
Avant de lancer un processus de restauration, vous devez vérifier que le cluster AKS est prêt pour la restauration. Cela inclut l'installation de l'extension de sauvegarde avec l'autorisation sur le compte où les sauvegardes sont stockées ainsi que l'activation de l'accès de confiance entre le cluster AKS et le coffre-fort de sauvegarde.
Tout d’abord, vérifiez si l’extension de sauvegarde est installée dans le cluster en exécutant la commande suivante :
az k8s-extension show --name azure-aks-backup --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup
Si l’extension est installée, vérifiez si elle dispose des autorisations appropriées sur le compte où sont stockées les sauvegardes :
az role assignment list --all --assignee $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv)
Si le rôle n’est pas attribué, vous pouvez l’attribuer en exécutant la commande suivante :
az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Account Contributor' --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccount
Si l’extension de sauvegarde n’est pas installée, exécutez la commande d’installation d’extension suivante avec le compte de stockage et le conteneur d’objets blob où les sauvegardes sont stockées en tant qu’entrées.
az k8s-extension create --name azure-aks-backup --extension-type microsoft.dataprotection.kubernetes --scope cluster --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --release-train stable --configuration-settings blobContainer=$blobcontainer storageAccount=$storageaccount storageAccountResourceGroup=$storageaccountresourcegroup storageAccountSubscriptionId=$subscriptionId
Attribuez ensuite le rôle requis à l’extension sur le compte de stockage en exécutant la commande suivante :
az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Account Contributor' --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccount
Vérifiez l'accès sécurisé
Pour vérifier si l’accès sécurisé est activé entre le coffre-fort de sauvegarde et le cluster AKS cible, exécutez la commande suivante :
az aks trustedaccess rolebinding list --resource-group $aksclusterresourcegroup --cluster-name $targetakscluster
S’il n’est pas activé, exécutez la commande suivante pour activer l’accès sécurisé :
az aks trustedaccess rolebinding create --cluster-name $targetakscluster --name backuprolebinding --resource-group $aksclusterresourcegroup --roles Microsoft.DataProtection/backupVaults/backup-operator --source-resource-id /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/BackupVaults/$backupvault
Restaurer sur un cluster AKS
Récupérer le point de récupération approprié
Récupérez toutes les instances associées au cluster AKS et identifiez les instances appropriées.
az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --query aksAssignedIdentity.id
Une fois l’instance identifiée, extrayez le point de récupération approprié.
az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvault
Préparer la demande de restauration
Utilisez la commande az dataprotection backup-instance initialize-restoreconfig
pour préparer la configuration de restauration et définir les éléments à restaurer sur le cluster AKS cible.
az dataprotection backup-instance initialize-restoreconfig --datasource-type AzureKubernetesService >restoreconfig.json
{
"conflict_policy": "Skip",
"excluded_namespaces": null,
"excluded_resource_types": null,
"include_cluster_scope_resources": true,
"included_namespaces": null,
"included_resource_types": null,
"label_selectors": null,
"namespace_mappings": null,
"object_type": "KubernetesClusterRestoreCriteria",
"persistent_volume_restore_mode": "RestoreWithVolumeData"
}
Préparez maintenant la demande de restauration avec tous les détails pertinents. Si vous restaurez la sauvegarde sur le cluster d’origine, exécutez la commande suivante :
az dataprotection backup-instance restore initialize-for-item-recovery --datasource-type AzureKubernetesService --restore-location $region --source-datastore OperationalStore --recovery-point-id $recoverypointid --restore-configuration restoreconfig.json --backup-instance-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstanceid >restorerequestobject.json
Si le cluster AKS cible pour la restauration est différent de celui d’origine, exécutez la commande suivante :
az dataprotection backup-instance restore initialize-for-data-recovery --datasource-type AzureKubernetesService --restore-location $region --source-datastore OperationalStore --recovery-point-id $recoverypointid --restore-configuration restoreconfig.json --target-resource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$targetakscluster >restorerequestobject.json
À présent, vous pouvez mettre à jour l’objet JSON en fonction de vos besoins, puis valider l’objet en exécutant la commande suivante :
az dataprotection backup-instance validate-for-restore --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --restore-request-object restorerequestobject.json --vault-name $backupvault
Cette commande vérifie si le cluster AKS et le coffre-fort de sauvegarde disposent des autorisations nécessaires l'un sur l'autre ainsi que sur le groupe de ressources Snapshot pour effectuer une restauration. Si la validation échoue en raison d’autorisations manquantes, vous pouvez les affecter en exécutant la commande suivante :
az dataprotection backup-instance update-msi-permissions --datasource-type AzureKubernetesService --operation Restore --permissions-scope Resource --resource-group $backupvaultresourcegroup --vault-name $backupvault --restore-request-object restorerequestobject.json --snapshot-resource-group-id /subscriptions/$subscriptionId/resourceGroups/$snapshotresourcegroup
Déclencher la restauration
Une fois l’attribution de rôle terminée, vous devez à nouveau valider l’objet de restauration. Après cela, vous pouvez déclencher une opération de restauration en exécutant la commande suivante :
az dataprotection backup-instance restore trigger --restore-request-object restorerequestobject.json --ids /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstancename
Notes
Pendant l’opération de restauration, le coffre de sauvegarde et le cluster AKS doivent avoir certains rôles attribués pour effectuer la restauration :
- Le cluster AKS cible doit avoir le rôle Contributeur sur le groupe de ressources d’instantané.
- L’identité utilisateur attachée à l’extension de sauvegarde doit avoir des rôles Contributeur de compte de stockage sur le compte de stockage où sont stockées les sauvegardes.
- Le coffre de sauvegarde doit avoir un rôle Lecteur sur le cluster AKS cible et le groupe de ressources d’instantané.
Suivi des travaux
Vous pouvez suivre les travaux de restauration à l’aide de la commande az dataprotection job
. Vous pouvez répertorier tous les travaux et extraire le détail d’un travail particulier.
Vous pouvez également utiliser Resource Graph pour suivre tous les travaux sur tous les abonnements, groupes de ressources et coffres-forts de sauvegarde. Utilisez la commande az dataprotection job list-from-resourcegraph
pour obtenir le travail approprié.
az dataprotection job list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --operation Restore