Obnovení služby Azure Kubernetes Service pomocí Azure CLI

Tento článek popisuje, jak obnovit cluster Azure Kubernetes z bodu obnovení vytvořeného službou Azure Backup pomocí Azure CLI.

Azure Backup teď umožňuje zálohovat clustery AKS (prostředky clusteru a trvalé svazky připojené ke clusteru) pomocí rozšíření zálohování, které se musí nainstalovat do clusteru. Trezor služby Backup komunikuje s clusterem prostřednictvím tohoto rozšíření zálohování za účelem provádění operací zálohování a obnovení.

Můžete provést obnovení původního umístění (OLR) (obnovení v clusteru AKS, který byl zálohován) a obnovení alternativního umístění (ALR) (obnovení v jiném clusteru AKS). Můžete také vybrat položky, které se mají obnovit ze zálohy, která je obnovení na úrovni položky (ILR).

Poznámka:

Před zahájením operace obnovení by měl mít cílový cluster nainstalované rozšíření zálohování a povolený důvěryhodný přístup pro trezor záloh. Další informace.

Než začnete

  • Zálohování AKS umožňuje obnovit původní cluster AKS (zálohovaný) a do alternativního clusteru AKS. Zálohování AKS umožňuje provést úplné obnovení a obnovení na úrovni položek. Konfigurace obnovení můžete využít k definování parametrů na základě prostředků clusteru, které se při obnovení vyberou.

  • Rozšíření zálohování musíte nainstalovat do cílového clusteru AKS. Musíte také povolit důvěryhodný přístup mezi trezorem služby Backup a clusterem AKS.

Další informace o omezeních a podporovaných scénářích najdete v matici podpory.

Ověření a příprava cílového clusteru AKS

Než zahájíte proces obnovení, musíte ověřit, že je cluster AKS připravený k obnovení. To zahrnuje rozšíření zálohování, které se má nainstalovat s rozšířením, které má oprávnění k účtu úložiště, kde se ukládají zálohy, a důvěryhodný přístup, který se má povolit mezi clusterem AKS a trezorem záloh.

Nejprve zkontrolujte, jestli je v clusteru nainstalované rozšíření zálohování spuštěním následujícího příkazu:

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

Pokud je rozšíření nainstalované, zkontrolujte, jestli má správná oprávnění k účtu úložiště, kde se ukládají zálohy:

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)

Pokud tato role není přiřazená, můžete ji přiřadit spuštěním následujícího příkazu:

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

Pokud rozšíření zálohování není nainstalované, spusťte následující příkaz instalace rozšíření s účtem úložiště a kontejnerem objektů blob, kde se zálohy ukládají jako vstup.

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

Potom k rozšíření účtu úložiště přiřaďte požadovanou roli spuštěním následujícího příkazu:

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

Kontrola důvěryhodného přístupu

Pokud chcete zkontrolovat, jestli je mezi trezorem služby Backup a cílovým clusterem AKS povolený důvěryhodný přístup, spusťte následující příkaz:

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

Pokud není povolený, spusťte následující příkaz a povolte důvěryhodný přístup:

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

Obnovení do clusteru AKS

Načtení příslušného bodu obnovení

Načtěte všechny instance přidružené ke clusteru AKS a identifikujte příslušnou instanci.

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

Jakmile je instance identifikovaná, načtěte příslušný bod obnovení.

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

Příprava žádosti o obnovení

Pokud chcete připravit konfiguraci obnovení definující položky, které se mají obnovit do cílového clusteru AKS, spusťte az dataprotection backup-instance initialize-restoreconfig příkaz.

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

Teď připravte žádost o obnovení se všemi relevantními podrobnostmi. Pokud obnovujete zálohu do původního clusteru, spusťte následující příkaz:

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

Pokud se cílový cluster AKS pro obnovení liší od původního clusteru, spusťte následující příkaz:

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

Teď můžete objekt JSON aktualizovat podle svých požadavků a pak ho ověřit spuštěním následujícího příkazu:

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

Tento příkaz zkontroluje, jestli cluster AKS a trezor služby Backup mají požadovaná oprávnění k sobě navzájem a skupinu prostředků snímku k provedení obnovení. Pokud ověření selže kvůli chybějícím oprávněním, můžete je přiřadit spuštěním následujícího příkazu:

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

Aktivace obnovení

Po dokončení přiřazení role byste měli znovu ověřit objekt obnovení. Potom můžete aktivovat operaci obnovení spuštěním následujícího příkazu:

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

Poznámka:

Během operace obnovení musí mít trezor služby Backup a cluster AKS přiřazené určité role k provedení obnovení:

  1. Cílový cluster AKS by měl mít roli Přispěvatel ve skupině prostředků snímku.
  2. Identita uživatele připojená k rozšíření zálohování by měla mít role Přispěvatel účtu úložiště v účtu úložiště, kde jsou uložené zálohy.
  3. Trezor služby Backup by měl mít roli Čtenář v cílovém clusteru AKS a skupině prostředků snímků.

Úloha sledování

Úlohy obnovení můžete sledovat pomocí az dataprotection job příkazu. Můžete zobrazit seznam všech úloh a načíst konkrétní podrobnosti úlohy.

Pomocí Resource Graphu můžete také sledovat všechny úlohy napříč všemi předplatnými, skupinami prostředků a trezory služby Backup. az dataprotection job list-from-resourcegraph Pomocí příkazu získáte příslušnou úlohu.

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

Další kroky