Partager via


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 sont à restaurer.

  • 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.

  • Si la version cible du cluster AKS diffère de la version utilisée lors de la sauvegarde, l’opération de restauration peut échouer ou se terminer par des avertissements pour différents scénarios tels que des ressources déconseillées dans la version plus récente du cluster. En cas de restauration à partir du niveau Coffre, vous pouvez utiliser les ressources hydratées dans l’emplacement intermédiaire pour restaurer les ressources d’application sur le cluster cible.

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 de stockage où les sauvegardes sont stockées/hydratées ainsi que l’activation de l’accès approuvé entre le cluster AKS cible et le coffre 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 Blob Data 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

Si ce n’est pas le cas, l’accès approuvé peut être activé avec la commande suivante :

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 

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

Si vous souhaitez restaurer des sauvegardes dans la région secondaire, utilisez l’indicateur --use-secondary-region pour identifier les points de récupération disponibles dans cette région.

az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvault --use-secondary-region true

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",
  "resource_modifier_reference": null,
  "restore_hook_references": null,
  "staging_resource_group_id": null,
  "staging_storage_account_id": null
}

La configuration de restauration se compose des éléments suivants :

  • conflict_policy : lors d’une restauration, si une ressource portant le même nom existe dans le cluster et dans la sauvegarde, vous pouvez choisir comment gérer le conflit. Vous avez deux options : Ignorer, qui ne restaure pas l’élément de sauvegarde ou Mettre à jour, qui remplace les champs mutables de la ressource dans le cluster par la ressource stockée dans la sauvegarde.

  • excluded_namespace : vous pouvez répertorier les espaces de noms à exclure de la restauration dans le cluster. Les ressources sous-jacentes à ces espaces de noms ne seront pas restaurées.

  • excluded_resource_types : vous pouvez répertorier les types de ressources à exclure de la restauration dans le cluster. Les valeurs de l’entrée doivent être fournies en tant que type de groupe d’API en tant que paire valeur clé.

  • include_cluster_scope_resources : vous pouvez décider si vous souhaitez restaurer les ressources délimitées au cluster ou non en définissant la valeur sur true ou false.

  • included_namespaces : vous pouvez répertorier les espaces de noms à inclure uniquement dans le cadre de la restauration du cluster. Les ressources sous-jacentes à ces espaces de noms doivent être restaurées.

  • excluded_resource_types : vous pouvez répertorier les types de ressources à inclure uniquement pour la restauration dans le cluster. Les valeurs de l’entrée doivent être fournies en tant que type de groupe d’API en tant que paire valeur clé.

  • label_selectors : vous pouvez sélectionner des ressources à restaurer avec des étiquettes spécifiques. La valeur d’entrée doit être fournie en tant que paire clé-valeur.

  • namespace_mappings : vous pouvez mapper l’espace de noms (et les ressources sous-jacentes) à un autre espace de noms dans le cluster cible. Si l’espace de noms cible n’existe pas dans le cluster, un nouvel espace de noms est créé par l’extension. La valeur d’entrée doit être fournie en tant que paire clé-valeur.

  • persistent_volume_restore_mode : vous pouvez utiliser cette variable pour décider si vous souhaitez restaurer les volumes persistants sauvegardés ou non. Les valeurs acceptées sont RestoreWithVolumeData, RestoreWithoutVolumeData

  • resource_modifier_reference : vous pouvez faire référence à la ressource de modificateur de ressources déployée dans le cluster avec cette variable. La valeur d’entrée est une paire clé valeur avec l’espace de noms dans lequel la ressource est déployée et le nom du fichier yaml.

  • restore_hook_references : vous pouvez faire référence à la ressource de crochet de restauration déployée dans le cluster avec cette variable. La valeur d’entrée est une paire clé valeur avec l’espace de noms dans lequel la ressource est déployée et le nom des fichiers yaml.

  • staging_resource_group_id : si vous restaurez la sauvegarde stockée dans le niveau Coffre, vous devez fournir un ID de groupe de ressources en tant qu’emplacement intermédiaire. Dans ce groupe de ressources, les volumes persistants sauvegardés sont hydratés avant d’être restaurés sur le cluster cible.

  • staging_storage_account_id : si vous restaurez la sauvegarde stockée dans le niveau Coffre, vous devez fournir un ID de compte de stockage en tant qu’emplacement intermédiaire. Dans ce groupe de ressources, les ressources Kubernetes sauvegardées sont hydratées avant d’être restaurées sur le cluster cible.

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

Remarque

Si vous avez choisi un point de récupération à partir du niveau Coffre avec --source-datastore comme VaultStore, fournissez ensuite un compte de stockage et un groupe de ressources d’instantané dans la configuration de restauration.

Si vous essayez de restaurer le cluster dans la région secondaire, définissez l’indicateur --restore-location comme nom de la région secondaire et --source-datastore comme VaultStore.

À 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 de sauvegarde disposent des rôles requis sur différentes ressources nécessaires pour effectuer la 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

Remarque

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 Collaborateur aux données Blob de stockage sur le compte de stockage où les sauvegardes sont stockées pour le niveau Opérationnel et sur le *compte de stockage intermédiaire pour le niveau Coffre.
  • Le coffre de sauvegarde doit avoir un rôle Lecteur sur le cluster AKS cible et le groupe de ressources d’instantané en cas de restauration à partir du niveau Opérationnel.
  • Le coffre de sauvegarde doit avoir un rôle Collaborateur sur le groupe de ressources intermédiaire en cas de restauration de la sauvegarde à partir du niveau Coffre.
  • Le coffre de sauvegarde doit avoir un rôle Collaborateur de compte de stockage et Propriétaire des données blob de stockage sur le groupe de ressources intermédiaire en cas de restauration de la sauvegarde à partir du niveau Coffre.

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 --backup-instance-name $backupinstancename --restore-request-object restorerequestobject.json 

Remarque

Les ressources hydratées dans le groupe de ressources intermédiaire et le compte de stockage ne sont pas automatiquement nettoyées une fois le travail de restauration terminé et doivent être supprimées manuellement.

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

Étapes suivantes