Share via


Ripristinare servizio Azure Kubernetes usando l'interfaccia della riga di comando di Azure

Questo articolo descrive come ripristinare il cluster Azure Kubernetes da un punto di ripristino creato da Backup di Azure usando l'interfaccia della riga di comando di Azure.

Backup di Azure ora consente di eseguire il backup di 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 questa estensione di backup per eseguire operazioni di backup e ripristino.

È possibile eseguire sia il ripristino OLR (Original-Location Recovery) (ripristino nel cluster del servizio Azure Kubernetes di cui è stato eseguito il backup) che il ripristino in un cluster del servizio Azure Kubernetes diverso. È anche possibile selezionare gli elementi da ripristinare dal backup con ripristino a livello di elemento.

Nota

Prima di avviare un'operazione di ripristino, nel cluster di destinazione deve essere installata l'estensione di backup e l'accesso attendibile abilitato per l'insieme di credenziali di backup. Ulteriori informazioni.

Prima di iniziare

  • Il backup del servizio Azure Kubernetes consente di eseguire il ripristino nel cluster del servizio Azure Kubernetes originale (di cui è stato eseguito il backup) e in un cluster del servizio Azure Kubernetes alternativo. Il backup del servizio Azure Kubernetes consente di eseguire un ripristino completo e un ripristino a livello di elemento. È possibile usare le configurazioni di ripristino per definire i parametri in base alle risorse del cluster che verranno prelevate durante il ripristino.

  • È necessario installare l'estensione di backup nel cluster del servizio Azure Kubernetes di destinazione. È inoltre necessario abilitare l'accesso attendibile tra l'insieme di credenziali di backup e il cluster del servizio Azure Kubernetes.

Per altre informazioni sulle limitazioni e sugli scenari supportati, vedere la matrice di supporto.

Convalidare e preparare il cluster del servizio Azure Kubernetes di destinazione

Prima di avviare un processo di ripristino, è necessario verificare che il cluster del servizio Azure Kubernetes sia preparato per il ripristino. Ciò include l'estensione di backup da installare con l'estensione che dispone dell'autorizzazione per l'account di archiviazione in cui sono archiviati i backup e l'accesso attendibile da abilitare tra il cluster del servizio Azure Kubernetes e l'insieme di credenziali di backup.

Prima di tutto, verificare se l'estensione di backup è installata nel cluster eseguendo il comando seguente:

az k8s-extension show --name azure-aks-backup --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup

Se l'estensione è installata, verificare se dispone delle autorizzazioni appropriate per l'account di archiviazione in cui sono archiviati i backup:

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)

Se il ruolo non è assegnato, è possibile assegnare il ruolo eseguendo il comando seguente:

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

Se l'estensione di backup non è installata, eseguire il comando di installazione dell'estensione seguente con l'account di archiviazione e il contenitore BLOB in cui i backup vengono archiviati come input.

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

Assegnare quindi il ruolo necessario all'estensione nell'account di archiviazione eseguendo il comando seguente:

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

Controllare l'accesso attendibile

Per verificare se l'accesso attendibile è abilitato tra l'insieme di credenziali di backup e il cluster del servizio Azure Kubernetes di destinazione, eseguire il comando seguente:

az aks trustedaccess rolebinding list --resource-group $aksclusterresourcegroup --cluster-name $targetakscluster

Se non è abilitata, eseguire il comando seguente per abilitare l'accesso attendibile:

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

Eseguire il ripristino in un cluster del servizio Azure Kubernetes

Recuperare il punto di ripristino pertinente

Recuperare tutte le istanze associate al cluster del servizio Azure Kubernetes e identificare l'istanza pertinente.

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

Dopo aver identificato l'istanza di , recuperare il punto di ripristino pertinente.

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

Preparare la richiesta di ripristino

Per preparare la configurazione di ripristino che definisce gli elementi da ripristinare nel cluster del servizio Azure Kubernetes di destinazione, eseguire il az dataprotection backup-instance initialize-restoreconfig comando .

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

Preparare ora la richiesta di ripristino con tutti i dettagli pertinenti. Se si ripristina il backup nel cluster originale, eseguire il comando seguente:

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

Se il cluster del servizio Azure Kubernetes di destinazione per il ripristino è diverso dal cluster originale, eseguire il comando seguente:

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

È ora possibile aggiornare l'oggetto JSON in base ai requisiti e quindi convalidare l'oggetto eseguendo il comando seguente:

az dataprotection backup-instance validate-for-restore --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --restore-request-object restorerequestobject.json --vault-name $backupvault

Questo comando controlla se il cluster del servizio Azure Kubernetes e l'insieme di credenziali di backup hanno le autorizzazioni necessarie l'una per l'altra e il gruppo di risorse Snapshot per eseguire il ripristino. Se la convalida non riesce a causa di autorizzazioni mancanti, è possibile assegnarle eseguendo il comando seguente:

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

Attivare il ripristino

Al termine dell'assegnazione di ruolo, è necessario convalidare l'oggetto di ripristino ancora una volta. Successivamente, è possibile attivare un'operazione di ripristino eseguendo il comando seguente:

az dataprotection backup-instance restore trigger --restore-request-object restorerequestobject.json --ids /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstancename 

Nota

Durante l'operazione di ripristino, l'insieme di credenziali di backup e il cluster del servizio Azure Kubernetes devono avere determinati ruoli assegnati per eseguire il ripristino:

  1. Il cluster del servizio Azure Kubernetes di destinazione deve avere il ruolo Collaboratore nel gruppo di risorse snapshot.
  2. L'identità utente associata all'estensione di backup deve avere Archiviazione ruoli Collaboratore account nell'account di archiviazione in cui sono archiviati i backup.
  3. L'insieme di credenziali di backup deve avere un ruolo lettore nel cluster del servizio Azure Kubernetes di destinazione e nel gruppo di risorse snapshot.

Processo di rilevamento

È possibile tenere traccia dei processi di ripristino usando il az dataprotection job comando . È possibile elencare tutti i processi e recuperare un particolare dettaglio 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. Usare il az dataprotection job list-from-resourcegraph comando per ottenere il processo pertinente.

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

Passaggi successivi