Sdílet prostřednictvím


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 mají obnovit.

  • 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.

  • Pokud se cílová verze clusteru AKS liší od verze použité během zálohování, operace obnovení může selhat nebo dokončit upozornění pro různé scénáře, jako jsou zastaralé prostředky v novější verzi clusteru. Při obnovování z úrovně trezoru můžete k obnovení prostředků aplikace do cílového clusteru použít hydratované prostředky v přípravném umístění.

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í. Zahrnuje rozšíření zálohování, které se má nainstalovat s rozšířením s oprávněním k účtu úložiště, kde se zálohy ukládají nebo hydratují s důvěryhodným přístupem povoleným mezi cílovým clusterem AKS a trezorem služby Backup.

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 Blob Data 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 ne, dá se důvěryhodný přístup povolit pomocí následujícího příkazu:

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 

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

Pokud chcete obnovit zálohy do sekundární oblasti, použijte příznak --use-secondary-region k identifikaci bodů obnovení dostupných v dané oblasti.

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

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",
  "resource_modifier_reference": null,
  "restore_hook_references": null,
  "staging_resource_group_id": null,
  "staging_storage_account_id": null
}

Konfigurace obnovení se skládá z následujících položek:

  • conflict_policy: Pokud během obnovení existuje prostředek se stejným názvem v clusteru jako v zálohování, můžete zvolit, jak konflikt zpracovat. Máte dvě možnosti: Přeskočte, což neobnoví zálohovanou položku nebo aktualizaci, která upraví proměnlivá pole prostředku v clusteru s prostředkem uloženým v zálohování.

  • excluded_namespace: Můžete zobrazit seznam oborů názvů, které se mají vyloučit z obnovení do clusteru. Prostředky, které tyto obory názvů tvoří, se neobnoví.

  • excluded_resource_types: Můžete zobrazit seznam typů prostředků, které se mají vyloučit z obnovení do clusteru. Hodnoty ve vstupu by měly být zadané jako typ skupiny rozhraní API jako pár hodnot klíče.

  • include_cluster_scope_resources: Můžete se rozhodnout, jestli chcete obnovit prostředky s vymezeným oborem clusteru, nebo ne, nastavením hodnoty true nebo false.

  • included_namespaces : Můžete zobrazit seznam oborů názvů, které se mají zahrnout pouze jako součást obnovení clusteru. Prostředky, které jsou základem těchto oborů názvů, se mají obnovit.

  • excluded_resource_types: Můžete zobrazit seznam typů prostředků, které se mají zahrnout pouze pro obnovení do clusteru. Hodnoty ve vstupu by měly být zadané jako typ skupiny rozhraní API jako pár hodnot klíče.

  • label_selectors: Můžete vybrat prostředky, které se mají obnovit s určitými popisky. Vstupní hodnota by měla být zadaná jako pár klíč-hodnota.

  • namespace_mappings: Obor názvů (a základní prostředky) můžete mapovat na jiný obor názvů v cílovém clusteru. Pokud cílový obor názvů v clusteru neexistuje, rozšíření vytvoří nový obor názvů. Vstupní hodnota by měla být zadaná jako pár klíč-hodnota.

  • persistent_volume_restore_mode: Tuto proměnnou můžete použít k rozhodnutí, jestli chcete obnovit trvalé svazky zálohované nebo ne. Přijaté hodnoty jsou RestoreWithVolumeData, RestoreWithoutVolumeData

  • resource_modifier_reference: Pomocí této proměnné můžete odkazovat na prostředek modifikátoru prostředků nasazený v clusteru. Vstupní hodnota je dvojice klíč-hodnota oboru názvů, ve kterém je prostředek nasazen a název souboru yaml.

  • restore_hook_references: Pomocí této proměnné můžete odkazovat na prostředek Restore Hook nasazený v clusteru. Vstupní hodnota je dvojice klíč-hodnota oboru názvů, ve kterém je prostředek nasazen a název souborů yaml.

  • staging_resource_group_id: Pokud obnovujete zálohu uloženou ve vrstvě trezoru, musíte jako pracovní umístění zadat ID skupiny prostředků. V této skupině prostředků se zálohované trvalé svazky před obnovením do cílového clusteru hydratují.

  • staging_storage_account_id: Pokud obnovujete zálohu uloženou ve vrstvě trezoru, musíte jako pracovní umístění zadat ID účtu úložiště. V této skupině prostředků se zálohované prostředky Kubernetes před obnovením do cílového clusteru hydratují.

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

Poznámka:

V případě, že jste jako VaultStore vybrali bod obnovení, --source-datastore pak v konfiguraci obnovení zadejte účet úložiště a skupinu prostředků snímku.

Pokud se pokoušíte provést obnovení do clusteru v sekundární oblasti, nastavte příznak --restore-location jako název sekundární oblasti a --source-datastore jako VaultStore.

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é role pro různé prostředky potřebné k obnovení. Pokud ověření selže kvůli chybějícím rolí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

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í:

  • Cílový cluster AKS by měl mít roli Přispěvatel ve skupině prostředků snímku.
  • Identita uživatele připojená k rozšíření zálohování by měla mít role Přispěvatel dat objektů blob úložiště v účtu úložiště, kde se zálohy ukládají v případě provozní úrovně a v *přípravném účtu úložiště v případě úrovně trezoru.
  • Trezor služby Backup by měl mít v cílovém clusteru AKS roli Čtenář a skupina prostředků snímků v případě obnovení z provozní vrstvy.
  • Trezor služby Backup by měl mít roli Přispěvatel pro přípravnou skupinu prostředků v případě obnovení zálohy z úrovně trezoru.
  • Trezor služby Backup by měl mít v případě obnovení zálohy z úrovně trezoru roli Přispěvatel účtu úložiště a Vlastník dat objektů blob úložiště v přípravné skupině prostředků.

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 --backup-instance-name $backupinstancename --restore-request-object restorerequestobject.json 

Poznámka:

Prostředky hydratované v přípravné skupině prostředků a účtu úložiště se po dokončení úlohy obnovení automaticky nevyčistí a odstraní se ručně.

Ú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