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, RestoreWithoutVolumeDataresource_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