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 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 del servizio Azure Kubernetes tramite l'estensione 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 ALR (Alternate-Location Recovery) (ripristino in un cluster del servizio Azure Kubernetes diverso). È anche possibile selezionare gli elementi da ripristinare dal backup con ripristino a livello di elemento (ILR).
Nota
Prima di avviare un'operazione di ripristino, nel cluster di destinazione devono essere installati l'estensione Backup e l'Accesso attendibile abilitato per l'insieme di credenziali di Backup. Altre informazioni.
Prima di iniziare
Prima di iniziare a ripristinare un cluster del servizio Azure Kubernetes, esaminare i dettagli seguenti:
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 da ripristinare.
È necessario installare l'estensione 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.
Se la versione del cluster del servizio Azure Kubernetes di destinazione è diversa dalla versione usata durante il backup, l'operazione di ripristino potrebbe non riuscire o completare con avvisi per vari scenari come le risorse deprecate nella versione più recente del cluster. Se si esegue il ripristino dal livello Vault, è possibile usare le risorse idratate nel percorso di gestione temporanea per ripristinare le risorse dell'applicazione nel cluster di destinazione.
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. Include l'estensione di backup da installare con l'estensione che dispone dell'autorizzazione per l'account di archiviazione in cui i backup vengono archiviati/idratati con l'accesso attendibile abilitato tra il cluster del servizio Azure Kubernetes di destinazione e l'insieme di credenziali di backup.
Per convalidare e preparare il cluster del servizio Azure Kubernetes per il ripristino, eseguire i comandi seguenti:
Controllare se l'estensione di backup è installata nel cluster.
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, assegnare il ruolo.
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 il ruolo necessario all'estensione nell'account di archiviazione.
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
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
In caso contrario, è possibile abilitare l'accesso attendibile con il comando seguente:
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
Per eseguire il ripristino in un cluster del servizio Azure Kubernetes, vedere le sezioni seguenti.
Recupero del punto di ripristino pertinente
Per recuperare il punto di ripristino pertinente, eseguire i comandi seguenti:
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
Dopo aver identificato l'istanza, recuperare il punto di ripristino pertinente.
az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvault
Se si vuole ripristinare i backup nell'area secondaria, usare il flag
--use-secondary-region
per identificare i punti di ripristino disponibili in tale area.az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvault --use-secondary-region true
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",
"resource_modifier_reference": null,
"restore_hook_references": null,
"staging_resource_group_id": null,
"staging_storage_account_id": null
}
La configurazione di ripristino è costituita da elementi seguenti:
conflict_policy
: durante un ripristino, se nel cluster esiste una risorsa con lo stesso nome del backup, è possibile scegliere come gestire il conflitto. Sono disponibili due opzioni: Ignora, che non ripristina l'elemento di backup o Aggiorna, che modifica i campi modificabili della risorsa nel cluster con la risorsa archiviata nel backup.excluded_namespace
: è possibile elencare gli spazi dei nomi da escludere dal ripristino nel cluster. La risorsa sottostante a tali spazi dei nomi non verrà ripristinata.excluded_resource_types
: è possibile elencare i tipi di risorse da escludere dal ripristino nel cluster. I valori nell'input devono essere specificati come coppia chiave tipo gruppo API.include_cluster_scope_resources
: è possibile decidere se ripristinare le risorse con ambito cluster o meno impostando il valore su true o false.included_namespaces
: è possibile elencare gli spazi dei nomi da includere solo come parte del ripristino nel cluster. La risorsa sottostante a tali spazi dei nomi deve essere ripristinata.excluded_resource_types
: è possibile elencare i tipi di risorse da includere solo per il ripristino nel cluster. I valori nell'input devono essere specificati come coppia chiave tipo gruppo API.label_selectors
: è possibile selezionare le risorse da ripristinare con etichette specifiche. Il valore di input deve essere fornito come coppia chiave-valore.namespace_mappings
: è possibile eseguire il mapping dello spazio dei nomi (e delle risorse sottostanti) a uno spazio dei nomi diverso nel cluster di destinazione. Se lo spazio dei nomi di destinazione non esiste nel cluster, viene creato un nuovo spazio dei nomi dall'estensione. Il valore di input deve essere fornito come coppia chiave-valore.persistent_volume_restore_mode
: è possibile usare questa variabile per decidere se ripristinare o meno i volumi persistenti di cui è stato eseguito il backup. I valori accettati sono RestoreWithVolumeData, RestoreWithoutVolumeDataresource_modifier_reference
: è possibile fare riferimento alla risorsa Modificatore di risorse distribuita nel cluster con questa variabile. Il valore di input è una coppia chiave-valore dello spazio dei nomi in cui viene distribuita la risorsa e il nome del file yaml.restore_hook_references
: è possibile fare riferimento alla risorsa Restore Hook distribuita nel cluster con questa variabile. Il valore di input è una coppia chiave-valore dello spazio dei nomi in cui viene distribuita la risorsa e il nome dei file yaml.staging_resource_group_id
: nel caso in cui si stia ripristinando il backup archiviato nel livello dell'insieme di credenziali, è necessario specificare un ID del gruppo di risorse come percorso di gestione temporanea. In questo gruppo di risorse i volumi persistenti sottoposti a backup vengono idratati prima di essere ripristinati nel cluster di destinazione.staging_storage_account_id
: nel caso in cui si stia ripristinando il backup archiviato nel livello dell'insieme di credenziali, è necessario specificare un ID dell'account di archiviazione come percorso di gestione temporanea. In questo gruppo di risorse le risorse kubernetes di cui è stato eseguito il backup vengono idratate prima di essere ripristinate nel cluster di destinazione.
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
Nota
Nel caso in cui sia stato scelto un punto di ripristino dal livello dell'insieme di credenziali con --source-datastore
come VaultStore, fornire quindi un account di archiviazione e un gruppo di risorse snapshot nella configurazione di ripristino.
Nel caso in cui si stia tentando di eseguire il ripristino nel cluster nell'area secondaria, impostare il flag --restore-location
come nome dell'area secondaria e --source-datastore
come VaultStore.
È 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 i ruoli necessari in risorse diverse necessarie per eseguire il ripristino. Se la convalida non riesce a causa di ruoli mancanti, è possibile assegnarli 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
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:
- Il cluster del servizio Azure Kubernetes di destinazione deve avere il ruolo Collaboratore nel gruppo di risorse snapshot.
- L'identità utente associata all'estensione di backup deve avere ruoli collaboratore ai dati dei BLOB di archiviazione nell'account di archiviazione in cui i backup vengono archiviati nel caso del livello operativo e nell'account di archiviazione *staging nel caso del livello dell'insieme di credenziali.
- 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 in caso di ripristino dal livello operativo.
- L'insieme di credenziali di Backup deve avere un ruolo Collaboratore nel gruppo di risorse di staging in caso di ripristino del backup dal livello dell'insieme di credenziali.
- L'insieme di credenziali di backup deve avere un ruolo di collaboratore dell'account di archiviazione e proprietario dei dati del BLOB di archiviazione nel gruppo di risorse di gestione temporanea in caso di ripristino del backup dal livello dell'insieme di credenziali.
Attivare il processo di 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 --backup-instance-name $backupinstancename --restore-request-object restorerequestobject.json
Nota
Le risorse idratate nel gruppo di risorse di staging e nell'account di archiviazione non vengono eliminate automaticamente dopo il completamento del processo di ripristino e devono essere eliminate manualmente.
Tracciamento del processo
È possibile tenere traccia dei processi di ripristino usando 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. 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