Condividi tramite


Eseguire il backup di servizio Azure Kubernetes usando l'interfaccia della riga di comando di Azure

Questo articolo descrive come configurare ed eseguire il backup di servizio Azure Kubernetes usando l'interfaccia della riga di comando di Azure.

Backup di Azure consente ora di eseguire il backup dei cluster del servizio Azure Kubernetes (risorse cluster e volumi permanenti collegati al cluster) usando un'estensione di backup, che deve essere installata nel cluster. L'insieme di credenziali di Backup comunica con il cluster tramite l'estensione Backup per eseguire operazioni di backup e ripristino.

Prima di iniziare

  • Attualmente, il backup del servizio Azure Kubernetes supporta solo i volumi persistenti basati su disco di Azure (abilitati dal driver CSI). I backup vengono archiviati solo nell'archivio dati operativo (nel tenant) e non vengono spostati in un insieme di credenziali. L'insieme di credenziali di backup e il cluster del servizio Azure Kubernetes devono trovarsi nella stessa area.

  • Il backup del servizio Azure Kubernetes usa un contenitore BLOB e un gruppo di risorse per archiviare i backup. Il contenitore BLOB contiene le risorse del cluster del servizio Azure Kubernetes archiviate, mentre gli snapshot del volume persistente vengono archiviati nel gruppo di risorse. Il cluster del servizio Azure Kubernetes e le posizioni di archiviazione devono trovarsi nella stessa area. Informazioni su come creare un contenitore BLOB.

  • Attualmente, il backup del servizio Azure Kubernetes supporta il backup una volta al giorno. Supporta anche backup più frequenti (ogni 4, 8e 12 ore) al giorno. Questa soluzione consente di conservare i dati per il ripristino per un periodo massimo di 360 giorni. Informazioni su come creare un criterio di backup.

  • È necessario installare l'estensione di backup per configurare le operazioni di backup e ripristino in un cluster del servizio Azure Kubernetes. Altre informazioni sull'estensione Backup.

  • Assicurarsi che , Microsoft.DataProtectione Microsoft.ContainerService siano registrati per la sottoscrizione prima di Microsoft.KubernetesConfigurationavviare le operazioni di configurazione e ripristino del backup.

  • Accertarsi di eseguire tutti i prerequisiti prima di avviare l'operazione di backup o ripristino per il backup del servizio Azure Kubernetes.

Per altre informazioni su scenari, limitazioni e disponibilità supportati, vedere la matrice di supporto.

Creare un insieme di credenziali per il backup

Un insieme di credenziali di Backup è un'entità di archiviazione in Azure che archivia i dati di backup per vari carichi di lavoro più recenti supportati da Backup di Azure, ad esempio i server di Database di Azure per PostgreSQL e i dischi di Azure. Gli insiemi di credenziali di backup semplificano l'organizzazione dei dati di backup, riducendo al minimo il carico di gestione. Gli insiemi di credenziali di Backup si basano sul modello di Azure Resource Manager di Azure, che offre funzionalità avanzate per proteggere i dati di backup.

Prima di creare un insieme di credenziali di backup, scegliere la ridondanza di archiviazione dei dati nell'insieme di credenziali, quindi creare l'insieme di credenziali di backup con tale ridondanza di archiviazione e la posizione. Altre informazioni sulla creazione di un insieme di credenziali di backup.

Nota

Anche se l'insieme di credenziali selezionato può avere l'impostazione di ridondanza globale, il backup per il servizio Azure Kubernetes attualmente supporta solo il livello operativo. Tutti i backup vengono archiviati nella sottoscrizione nella stessa area del cluster del servizio Azure Kubernetes e non vengono copiati nell'archivio dell'insieme di credenziali di backup.

Per creare l'insieme di credenziali di Backup, eseguire il comando seguente:

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

Al termine della creazione dell'insieme di credenziali, creare un criterio di backup per proteggere i cluster del servizio Azure Kubernetes.

Creare un criterio di backup

Per comprendere i componenti interni di un criterio di backup per il backup del servizio Azure Kubernetes, recuperare il modello di criteri usando il comando az dataprotection backup-policy get-default-policy-template. Questo comando restituisce un modello di criteri predefinito per un determinato tipo di origine dati. Usare questo modello di criteri per creare un nuovo criterio.

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"
    }
  ]
}

Il modello di criteri è costituito da un criterio trigger (che determina i fattori per attivare il processo di backup) e un ciclo di vita (che decide quando eliminare, copiare o spostare i backup). Nel backup del servizio Azure Kubernetes il valore predefinito per il trigger è un trigger orario pianificato ogni 4 ore (PT4H) e la conservazione di ogni backup è di sette giorni.

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"
          }
        }
      ]


Il backup per il servizio Azure Kubernetes offre più backup al giorno. Se sono necessari backup più frequenti, scegliere la frequenza di backup oraria con la possibilità di eseguire backup con intervalli di ogni 4, 6, 8 o 12 ore. I backup vengono pianificati in base all'intervallo di tempo selezionato.

Importante

L'ora del giorno indica l'ora di inizio e non l'ora di completamento del backup.

Dopo aver scaricato il modello come file JSON, è possibile modificarlo per la pianificazione e la conservazione in base alle esigenze. Creare quindi un nuovo criterio con il codice JSON risultante. Se si desidera modificare la frequenza oraria o il periodo di conservazione, usare i az dataprotection backup-policy trigger set comandi e/o az dataprotection backup-policy retention-rule set .

Nota

Per archiviare i dati di backup nel livello Insieme di credenziali per conservare per scopi di conformità a lungo termine o per il ripristino di emergenza a livello di area tramite il ripristino tra aree, è necessario definire una nuova regola di conservazione nel modello predefinito che definisce per quanto tempo deve essere archiviato nel vault.

Si prenda un esempio in cui si aggiornerà il modello predefinito per i criteri di backup e si aggiungerà una regola di conservazione per conservare il primo backup riuscito al giorno nel livello Vault per 30 giorni.

Usare il comando az dataprotection backup-policy retention-rule create-lifecycle per creare una regola di conservazione e quindi aggiungere la regola di conservazione al modello di criteri di backup con il comando ''


az dataprotection backup-policy retention-rule create-lifecycle  --count 30 --retention-duration-type Days --copy-option ImmediateCopyOption --target-datastore VaultStore --source-datastore OperationalStore > ./retentionrule.json

az dataprotection backup-policy retention-rule set --lifecycles ./retentionrule.json --name Daily --policy ./akspolicy.json > ./akspolicy.json

Dopo che il codice JSON dei criteri ha tutti i valori necessari, procedere con la creazione di un nuovo criterio dall'oggetto criteri usando il az dataprotection backup-policy create comando .

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

Preparare il cluster del servizio Azure Kubernetes per il backup

Al termine della creazione dell’insieme di credenziali e dei criteri, è necessario eseguire i prerequisiti seguenti per preparare il cluster del servizio Azure Kubernetes per il backup:

  1. Creare un account di archiviazione e un contenitore BLOB.

    Il backup per il servizio Azure Kubernetes archivia le risorse Kubernetes in un contenitore BLOB come backup. Per preparare il cluster del servizio Azure Kubernetes per il backup, è necessario installare un'estensione nel cluster. Questa estensione richiede l'account di archiviazione e il contenitore BLOB come input.

    Per creare un nuovo account di archiviazione, eseguire il comando seguente:

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

    Al termine della creazione dell'account di archiviazione, creare un contenitore BLOB all'interno eseguendo il comando seguente:

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

    Informazioni su come abilitare o disabilitare funzionalità specifiche, ad esempio l'endpoint privato, durante la creazione dell'account di archiviazione e del contenitore BLOB.

    Nota

    1. L'account di archiviazione e il cluster del servizio Azure Kubernetes devono trovarsi nella stessa area e nella stessa sottoscrizione.
    2. Il contenitore BLOB non deve contenere file system creati in precedenza (tranne quelli creati dal backup per il servizio Azure Kubernetes).
    3. Se il cluster del servizio Azure Kubernetes di origine o di destinazione si trova in una rete virtuale privata, è necessario creare un endpoint privato per connettere l'account di archiviazione con il cluster del servizio Azure Kubernetes.
  2. Installare l'estensione di backup.

    L'estensione di backup deve obbligatoriamente essere installata nel cluster del servizio Azure Kubernetes per eseguire tutte le operazioni di backup e ripristino. L'estensione di backup crea uno spazio dei nomi dataprotection-microsoft nel cluster e usa lo stesso per distribuire le risorse. L'estensione richiede l'account di archiviazione e il contenitore BLOB come input per l'installazione.

    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
    

    Come parte dell'installazione dell'estensione, viene creata un'identità utente nel gruppo di risorse pool di nodi del cluster del servizio Azure Kubernetes. Per consentire all'estensione di accedere all'account di archiviazione, è necessario specificare questa identità il ruolo Collaboratore ai dati dei BLOB di archiviazione. Per assegnare il ruolo richiesto, eseguire il comando seguente:

    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. Abilitare l'accesso attendibile

    Affinché l'insieme di credenziali di backup si connetta al cluster del servizio Azure Kubernetes, è necessario abilitare l'accesso attendibile perché consente all'insieme di credenziali di backup di avere una linea diretta di vista per il cluster del servizio Azure Kubernetes.

    Per abilitare l'accesso attendibile, eseguire il comando seguente:

    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
    

Configurare i backup

Con l'insieme di credenziali di backup, i criteri di backup creati e il cluster del servizio Azure Kubernetes nello stato pronto per il backup, è ora possibile iniziare a eseguire il backup del cluster del servizio Azure Kubernetes.

Preparare la richiesta

La configurazione del backup viene eseguita in due passaggi:

  1. Preparare la configurazione del backup per definire le risorse del cluster di cui eseguire il backup usando il az dataprotection backup-instance initialize-backupconfig comando . Il comando genera un file JSON, che è possibile aggiornare per definire la configurazione di backup per il cluster del servizio Azure Kubernetes in base alle esigenze.

    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
    }
    

Gli spazi dei nomi seguenti vengono ignorati dalla configurazione di backup e non configurati per i backup: kube-system, kube-node-lease, kube-public.

  1. Preparare la richiesta pertinente usando l'insieme di credenziali, i criteri, il cluster del servizio Azure Kubernetes, la configurazione del backup e il gruppo di risorse snapshot usando il az dataprotection backup-instance initialize comando .

    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
    

Usare ora l'output JSON di questo comando per configurare il backup per il cluster del servizio Azure Kubernetes.

Assegnare le autorizzazioni necessarie e convalidare

L'insieme di credenziali di Backup usa un'identità gestita per accedere ad altre risorse di Azure. Per configurare il backup del cluster del servizio Azure Kubernetes, l'identità gestita dell'insieme di credenziali di backup richiede un set di autorizzazioni per il cluster del servizio Azure Kubernetes e i gruppi di risorse, in cui vengono creati e gestiti gli snapshot. Il cluster del servizio Azure Kubernetes richiede anche l'autorizzazione per il gruppo di risorse snapshot.

Solo l'identità gestita assegnata dal sistema è attualmente supportata per il backup (insieme di credenziali di backup e cluster del servizio Azure Kubernetes). Un'identità gestita assegnata dal sistema è limitata a una per risorsa ed è legata al ciclo di vita di tale risorsa. È possibile concedere autorizzazioni all'identità gestita usando il controllo degli accessi in base al ruolo di Azure. Un'identità gestita è un'entità servizio di un tipo speciale che è possibile usare solo con le risorse di Azure. Vedere altre informazioni sulle identità gestite.

Dopo aver preparato la richiesta, è prima necessario verificare se i ruoli necessari vengono assegnati alle risorse indicate in precedenza eseguendo il comando seguente:

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

Se la convalida non riesce e mancano determinate autorizzazioni, è possibile assegnarle eseguendo il comando seguente:

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

Dopo aver assegnato le autorizzazioni, riconvalidare usando la convalida seguente per il comando di backup :

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

Eseguire un backup su richiesta

Per recuperare l'istanza di backup pertinente in cui si vuole attivare un backup, eseguire il az dataprotection backup-instance list-from-resourcegraph -- comando .

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

Attivare ora un backup su richiesta per l'istanza di backup eseguendo il comando seguente:

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

Rilevamento dei processi

Tenere traccia dei processi di backup che eseguono il az dataprotection job comando . È possibile elencare tutti i processi e recuperare un dettaglio specifico del processo.

È anche possibile usare Resource Graph per tenere traccia di tutti i processi in tutte le sottoscrizioni, i gruppi di risorse e gli insiemi di credenziali di backup eseguendo il az dataprotection job list-from-resourcegraph comando per ottenere il processo pertinente

Per il backup su richiesta:

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

Per il backup pianificato:

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

Passaggi successivi