Sauvegarder Azure Kubernetes Service à l’aide d’Azure CLI

Cet article explique comment configurer et sauvegarder Azure Kubernetes Service (AKS) à l’aide d’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.

Avant de commencer

  • Actuellement, la sauvegarde AKS prend uniquement en charge les volumes persistants basés sur disque Azure (activés par le pilote CSI). Les sauvegardes sont stockées uniquement dans un magasin de données opérationnelles (dans votre locataire) et ne sont pas déplacées vers un coffre. Le coffre de sauvegarde et le cluster AKS doivent se trouver dans la même région.

  • La sauvegarde AKS utilise un conteneur d’objets blob et un groupe de ressources pour stocker les sauvegardes. Les ressources de cluster AKS sont stockées dans le conteneur d’objets blob, tandis que les instantanés de volume persistant sont stockés dans le groupe de ressources. Le cluster AKS et les emplacements de stockage doivent résider dans la même région. Découvrez comment créer un conteneur d’objets blob.

  • Actuellement, la sauvegarde AKS prend en charge la sauvegarde une fois par jour. Elle prend également en charge des sauvegardes plus fréquentes (toutes les 4, 8 et 12 heures) par jour. Cette solution vous permet de conserver vos données à des fins de restauration pendant jusqu’à 360 jours. Découvrez comment créer une stratégie de sauvegarde.

  • Vous devez installer l’extension de sauvegarde pour configurer les opérations de sauvegarde et de restauration sur un cluster AKS. En savoir plus sur l’extension de sauvegarde.

  • Assurez-vous que Microsoft.KubernetesConfiguration, Microsoft.DataProtection, et Microsoft.ContainerService sont enregistrés pour votre abonnement avant de lancer les opérations de configuration de sauvegarde et de restauration.

  • Veillez à respecter tous les prérequis avant de démarrer l’opération de sauvegarde ou de restauration pour la sauvegarde AKS.

Pour plus d’informations sur les scénarios pris en charge, les limitations et les disponibilités, consultez la matrice de prise en charge.

Créer un coffre de sauvegarde

Un coffre Sauvegarde est une entité de gestion dans Azure qui stocke les données de sauvegarde de diverses charges de travail plus récentes prises en charge par la Sauvegarde Azure, notamment des serveurs Azure Database pour PostgreSQL et des disques Azure. Les coffres de sauvegarde facilitent l’organisation de vos données de sauvegarde tout en réduisant le temps nécessaire à leur gestion. Les coffres Sauvegarde sont basés sur le modèle Azure Resource Manager, qui fournit des fonctionnalités améliorées pour sécuriser les données de sauvegarde.

Avant de créer un coffre de sauvegarde, choisissez la redondance de stockage des données dans le coffre, puis créez le coffre de sauvegarde avec cette redondance de stockage et l’emplacement. Pour plus d’informations, consultez Création d’un coffre Sauvegarde.

Notes

Bien que le coffre sélectionné puisse avoir le paramètre global-redundancy, la sauvegarde pour AKS ne prend actuellement en charge que le Niveau opérationnel. Toutes les sauvegardes sont stockées dans votre abonnement dans la même région que celle du cluster AKS, et elles ne sont pas copiées dans le stockage du coffre de sauvegarde.

Pour créer le coffre de sauvegarde, exécutez la commande suivante :

az dataprotection backup-vault create --resource-group $backupvaultresourcegroup --vault-name $backupvault --location $region --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"

Une fois la création du coffre terminée, créez une stratégie de sauvegarde pour protéger les clusters AKS.

Créer une stratégie de sauvegarde

Pour comprendre les composants internes d’une stratégie de sauvegarde pour la sauvegarde d’AKS, récupérez le modèle de stratégie à l’aide de la commande az dataprotection backup-policy get-default-policy-template. Cette commande retourne un modèle de stratégie par défaut pour un type de source de données donné. Utilisez ce modèle de stratégie pour créer une nouvelle stratégie.

az dataprotection backup-policy get-default-policy-template --datasource-type AzureKubernetesService > akspolicy.json


{
  "datasourceTypes": [
    "Microsoft.ContainerService/managedClusters"
  ],
  "name": "AKSPolicy1",
  "objectType": "BackupPolicy",
  "policyRules": [
    {
      "backupParameters": {
        "backupType": "Incremental",
        "objectType": "AzureBackupParams"
      },
      "dataStore": {
        "dataStoreType": "OperationalStore",
        "objectType": "DataStoreInfoBase"
      },
      "name": "BackupHourly",
      "objectType": "AzureBackupRule",
      "trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2023-01-04T09:00:00+00:00/PT4H"
          ]
        },
        "taggingCriteria": [
          {
            "isDefault": true,
            "tagInfo": {
              "id": "Default_",
              "tagName": "Default"
            },
            "taggingPriority": 99
          }
        ]
      }
    },
    {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P7D",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "OperationalStore",
            "objectType": "DataStoreInfoBase"
          }
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    }
  ]
}

Le modèle de stratégie se compose d’un critère de déclencheur (qui détermine les facteurs de déclenchement du travail de sauvegarde) et d’un cycle de vie (qui détermine quand supprimer, copier ou déplacer les sauvegardes). Dans la sauvegarde AKS, la valeur par défaut pour le déclencheur est un planifié pour toutes les 4 heures (PT4H) et pour conserver chaque sauvegarde pendant 365 jours.

Scheduled trigger:
      "trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2023-01-04T09:00:00+00:00/PT4H"
          ]
        },

Default retention lifecycle:
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P7D",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "OperationalStore",
            "objectType": "DataStoreInfoBase"
          }
        }
      ],


La sauvegarde pour AKS fournit plusieurs sauvegardes par jour. Si vous avez besoin de sauvegardes plus fréquentes, choisissez la fréquence de sauvegarde Horaire, qui permet d’effectuer des sauvegardes à intervalles de 4, 6, 8 ou 12 heures. Les sauvegardes sont planifiées en fonction de l’intervalle de temps sélectionné.

Par exemple, si vous sélectionnez Toutes les 4 heures, les sauvegardes sont effectuées à intervalles de 4 heures environ, de façon à être réparties équitablement sur la journée. Si une sauvegarde par jour suffit, choisissez la fréquence de sauvegarde Quotidienne. Dans la fréquence de sauvegarde quotidienne, vous pouvez spécifier l’heure de la journée à laquelle vos sauvegardes doivent s’effectuer.

Important

L’heure de la journée indique l’heure de début de la sauvegarde, et pas l’heure de fin.

Notes

Bien que le coffre sélectionné ait le paramètre global-redundancy, la sauvegarde pour AKS ne prend actuellement en charge que le magasin de stockage d’instantanés. Toutes les sauvegardes sont stockées dans l’un des groupes de ressources de l’abonnement. Elles ne sont pas copiées dans le stockage du coffre Sauvegarde.

Une fois que vous avez téléchargé le modèle en tant que fichier JSON, vous pouvez le modifier pour la planification et la rétention selon vos besoins. Créez ensuite une nouvelle stratégie avec le fichier JSON obtenu. Si vous souhaitez modifier la fréquence horaire ou la période de rétention, utilisez les commandes az dataprotection backup-policy trigger set et/ou az dataprotection backup-policy retention-rule set. Une fois que la stratégie JSON a toutes les valeurs souhaitées, passez à la création d’une nouvelle stratégie à partir de l’objet de stratégie à l’aide de la commande az dataprotection backup-policy create.

az dataprotection backup-policy create -g testBkpVaultRG --vault-name TestBkpVault -n mypolicy --policy policy.json

Préparer le cluster AKS pour la sauvegarde

Une fois la création du coffre et de la stratégie terminée, vous devez remplir les conditions préalables suivantes pour préparer le cluster AKS pour la sauvegarde :

  1. Créer un compte de stockage et un conteneur d’objets blob.

    La sauvegarde pour AKS stocke les ressources Kubernetes dans un conteneur d’objets blob sous la forme de sauvegardes. Pour préparer le cluster AKS pour la sauvegarde, vous devez installer une extension dans le cluster. Cette extension nécessite le compte de stockage et le conteneur d’objets blob comme entrées.

    Pour créer un nouveau compte de stockage, exécutez la commande suivante :

    az storage account create --name $storageaccount --resource-group $storageaccountresourcegroup --location $region --sku Standard_LRS
    

    Une fois la création du compte de stockage terminée, créez un conteneur d’objets blob à l’intérieur en exécutant la commande suivante :

    az storage container create --name $blobcontainer --account-name $storageaccount --auth-mode login
    

    Découvrez comment activer ou désactiver des fonctionnalités spécifiques, telles que le point de terminaison privé, lors de la création d’un compte de stockage et d’un conteneur d’objets blob.

    Notes

    1. Le compte de stockage et le cluster AKS doivent se trouver dans la même région et le même abonnement.
    2. Le conteneur d’objets blob ne doit pas contenir de systèmes de fichiers créés précédemment (sauf créés par sauvegarde pour AKS).
    3. Si votre cluster AKS source ou cible se trouve dans un réseau virtuel privé, vous devez créer un point de terminaison privé pour connecter le compte de stockage au cluster AKS.
  2. Installer l’extension de sauvegarde.

    L’extension de sauvegarde est obligatoire pour être installée dans le cluster AKS pour effectuer toutes les opérations de sauvegarde et de restauration. L’extension de sauvegarde crée un espace de noms dataprotection-microsoft dans le cluster et l’utilise pour déployer ses ressources. L’extension nécessite le compte de stockage et le conteneur d’objets blob comme entrées pour l’installation.

    az k8s-extension create --name azure-aks-backup --extension-type microsoft.dataprotection.kubernetes --scope cluster --cluster-type managedClusters --cluster-name $akscluster --resource-group $aksclusterresourcegroup --release-train stable --configuration-settings blobContainer=$blobcontainer storageAccount=$storageaccount storageAccountResourceGroup=$storageaccountresourcegroup storageAccountSubscriptionId=$subscriptionId
    

    Dans le cadre de l’installation de l’extension, une identité d’utilisateur est créée dans le groupe de ressources du pool de nœuds du cluster AKS. Pour que l’extension accède au compte de stockage, vous devez fournir à cette identité le rôle Contributeur aux données blob de stockage. Pour attribuer le rôle requis, exécutez la commande suivante :

    az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $akscluster --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
    
  3. Activer l’accès approuvé

    Pour que le coffre de sauvegarde se connecte au cluster AKS, vous devez activer l’Accès approuvé, car il permet au coffre de sauvegarde d’avoir une vue directe sur le cluster AKS.

    Pour activer l’Accès approuvé, exécutez la commande suivante :

    az aks trustedaccess rolebinding create --cluster-name $akscluster --name backuprolebinding --resource-group $aksclusterresourcegroup --roles Microsoft.DataProtection/backupVaults/backup-operator --source-resource-id /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/BackupVaults/$backupvault
    

Configurer des sauvegardes

Avec le coffre de sauvegarde et la stratégie de sauvegarde créés, et le cluster AKS à l’état prêt à être sauvegardé , vous pouvez maintenant commencer à sauvegarder votre cluster AKS.

Préparer la requête

La configuration de la sauvegarde s’effectue en deux étapes :

  1. Préparez la configuration de sauvegarde pour définir les ressources de cluster à sauvegarder à l’aide de la commande az dataprotection backup-instance initialize-backupconfig. La commande génère un JSON que vous pouvez mettre à jour pour définir la configuration de sauvegarde de votre cluster AKS en fonction des besoins.

    az dataprotection backup-instance initialize-backupconfig --datasource-type AzureKubernetesService > aksbackupconfig.json
    
    {
     "excluded_namespaces": null,
     "excluded_resource_types": null,
     "include_cluster_scope_resources": true,
     "included_namespaces": null, 
     "included_resource_types": null,
     "label_selectors": null,
     "snapshot_volumes": true
    }
    

Les espaces de noms suivants sont ignorés de la configuration de sauvegarde et ne sont pas configurés pour les sauvegardes : kube-system, kube-node-lease, kube-public.

  1. Préparez la requête appropriée à l’aide du coffre, de la stratégie, du cluster AKS, de la configuration de sauvegarde et du groupe de ressources d’instantanés appropriés à l’aide de la commande az dataprotection backup-instance initialize.

    az dataprotection backup-instance initialize --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --datasource-location $region --datasource-type AzureKubernetesService --policy-id /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupPolicies/$backuppolicy --backup-configuration ./aksbackupconfig.json --friendly-name ecommercebackup --snapshot-resource-group-name $snapshotresourcegroup > backupinstance.json
    

À présent, utilisez la sortie JSON de cette commande pour configurer la sauvegarde du cluster AKS.

Attribuer les autorisations requises et valider

Le coffre Sauvegarde utilise l’identité managée pour accéder à d’autres ressources Azure. Il est nécessaire, pour configurer la sauvegarde du cluster AKS, que l’identité managée du coffre Sauvegarde dispose d’un ensemble d’autorisations sur le cluster AKS et les groupes de ressources dans lesquels les instantanés sont créés et gérés. En outre, le cluster AKS nécessite une autorisation sur le Groupe de ressources d’instantanés.

Seulement, l’identité managée affectée par le système est actuellement prise en charge pour la sauvegarde (à la fois le coffre de sauvegarde et le cluster AKS). Une identité managée affectée par le système est limitée à une par ressource et liée au cycle de vie de celle-ci. Vous pouvez accorder des autorisations à l’identité managée à l’aide du contrôle d’accès en fonction du rôle Azure (RBAC Azure). L’identité managée est un principal de service d’un type spécial qui ne peut être utilisé qu’avec des ressources Azure. En savoir plus sur les identités managées.

Une fois la requête préparée, vous devez d’abord vérifier si les rôles requis sont attribués aux ressources mentionnées ci-dessus en exécutant la commande suivante :

az dataprotection backup-instance validate-for-backup --backup-instance ./backupinstance.json --ids /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault

Si la validation échoue et qu’il manque certaines autorisations, vous pouvez les attribuer en exécutant la commande suivante :

az dataprotection backup-instance update-msi-permissions command.
az dataprotection backup-instance update-msi-permissions --datasource-type AzureKubernetesService --operation Backup --permissions-scope ResourceGroup --vault-name $backupvault --resource-group $backupvaultresourcegroup --backup-instance backupinstance.json

Une fois les autorisations attribuées, revalidez à l’aide de la commande valider pour la sauvegarde suivante :

az dataprotection backup-instance create --backup-instance  backupinstance.json --resource-group $backupvaultresourcegroup --vault-name $backupvault

Exécuter une sauvegarde à la demande

Pour extraire l’instance de sauvegarde appropriée sur laquelle vous souhaitez déclencher une sauvegarde, exécutez la commande az dataprotection backup-instance list-from-resourcegraph --.

az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --query aksAssignedIdentity.id

Maintenant, déclenchez une sauvegarde à la demande pour l’instance de sauvegarde en exécutant la commande suivante :

az dataprotection backup-instance adhoc-backup --rule-name "BackupDaily" --ids /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstanceid

Suivi des travaux

Suivez les travaux de sauvegarde exécutant 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 dans tous les abonnements, groupes de ressources et coffres de sauvegarde en exécutant la commande az dataprotection job list-from-resourcegraph pour obtenir le travail approprié

Pour une sauvegarde à la demande :

az dataprotection job list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --operation OnDemandBackup

Pour une sauvegarde planifiée :

az dataprotection job list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --operation ScheduledBackup

Étapes suivantes