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:
- 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 Archiviazione ruoli Collaboratore account nell'account di archiviazione in cui sono archiviati i backup.
- 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