Przywracanie usługi Azure Kubernetes Service przy użyciu interfejsu wiersza polecenia platformy Azure

W tym artykule opisano sposób przywracania klastra Usługi Azure Kubernetes z punktu przywracania utworzonego przez usługę Azure Backup przy użyciu interfejsu wiersza polecenia platformy Azure.

Usługa Azure Backup umożliwia teraz tworzenie kopii zapasowych klastrów usługi AKS (zasobów klastra i trwałych woluminów dołączonych do klastra) przy użyciu rozszerzenia kopii zapasowej, które należy zainstalować w klastrze. Magazyn kopii zapasowych komunikuje się z klastrem za pośrednictwem tego rozszerzenia kopii zapasowej w celu wykonywania operacji tworzenia kopii zapasowych i przywracania.

Odzyskiwanie oryginalnej lokalizacji (OLR) ( przywracanie w klastrze usługi AKS, którego kopia zapasowa została utworzona) i odzyskiwanie alternatywnej lokalizacji (ALR) (przywracanie w innym klastrze usługi AKS). Możesz również wybrać elementy do przywrócenia z kopii zapasowej, która jest odzyskiwaniem na poziomie elementu (ILR).

Uwaga

Przed zainicjowaniem operacji przywracania klaster docelowy powinien mieć zainstalowane rozszerzenie kopii zapasowej i włączony zaufany dostęp dla magazynu kopii zapasowych. Dowiedz się więcej.

Przed rozpoczęciem

  • Tworzenie kopii zapasowej usługi AKS umożliwia przywracanie do oryginalnego klastra usługi AKS (kopii zapasowej) i do alternatywnego klastra usługi AKS. Kopia zapasowa usługi AKS umożliwia wykonywanie pełnego przywracania i przywracania na poziomie elementu. Konfiguracje przywracania umożliwiają definiowanie parametrów na podstawie zasobów klastra, które zostaną pobrane podczas przywracania.

  • Należy zainstalować rozszerzenie kopii zapasowej w docelowym klastrze usługi AKS. Ponadto należy włączyć zaufany dostęp między magazynem kopii zapasowych a klastrem usługi AKS.

Aby uzyskać więcej informacji na temat ograniczeń i obsługiwanych scenariuszy, zobacz macierz obsługi.

Weryfikowanie i przygotowywanie docelowego klastra usługi AKS

Przed zainicjowaniem procesu przywracania należy sprawdzić, czy klaster usługi AKS jest przygotowany do przywrócenia. Obejmuje to rozszerzenie kopii zapasowej, które ma zostać zainstalowane z rozszerzeniem z uprawnieniem na koncie magazynu, na którym są przechowywane kopie zapasowe, a zaufany dostęp do włączenia między klastrem AKS i magazynem kopii zapasowych.

Najpierw sprawdź, czy rozszerzenie kopii zapasowej jest zainstalowane w klastrze, uruchamiając następujące polecenie:

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

Jeśli rozszerzenie jest zainstalowane, sprawdź, czy ma odpowiednie uprawnienia na koncie magazynu, na którym są przechowywane kopie zapasowe:

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)

Jeśli rola nie jest przypisana, możesz przypisać rolę, uruchamiając następujące polecenie:

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

Jeśli rozszerzenie kopii zapasowej nie jest zainstalowane, uruchom następujące polecenie instalacji rozszerzenia przy użyciu konta magazynu i kontenera obiektów blob, w którym kopie zapasowe są przechowywane jako dane wejściowe.

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

Następnie przypisz wymaganą rolę do rozszerzenia na koncie magazynu, uruchamiając następujące polecenie:

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

Sprawdzanie zaufanego dostępu

Aby sprawdzić, czy zaufany dostęp jest włączony między magazynem kopii zapasowych i docelowym klastrem usługi AKS, uruchom następujące polecenie:

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

Jeśli nie jest włączona, uruchom następujące polecenie, aby włączyć zaufany dostęp:

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

Przywracanie do klastra usługi AKS

Pobieranie odpowiedniego punktu odzyskiwania

Pobierz wszystkie wystąpienia skojarzone z klastrem usługi AKS i zidentyfikuj odpowiednie wystąpienie.

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

Po zidentyfikowaniu wystąpienia pobierz odpowiedni punkt odzyskiwania.

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

Przygotowywanie żądania przywracania

Aby przygotować konfigurację przywracania definiującą elementy do przywrócenia do docelowego klastra usługi AKS, uruchom az dataprotection backup-instance initialize-restoreconfig polecenie .

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

Teraz przygotuj żądanie przywrócenia ze wszystkimi odpowiednimi szczegółami. Jeśli przywracasz kopię zapasową do oryginalnego klastra, uruchom następujące polecenie:

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

Jeśli docelowy klaster AKS do przywracania różni się od oryginalnego klastra, uruchom następujące polecenie:

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

Teraz możesz zaktualizować obiekt JSON zgodnie z wymaganiami, a następnie zweryfikować obiekt, uruchamiając następujące polecenie:

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

To polecenie sprawdza, czy klaster AKS i magazyn kopii zapasowych mają wymagane uprawnienia do siebie i grupy zasobów Migawka do wykonania przywracania. Jeśli walidacja nie powiedzie się z powodu braku uprawnień, możesz je przypisać, uruchamiając następujące polecenie:

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

Wyzwalanie przywracania

Po zakończeniu przypisywania roli należy ponownie zweryfikować obiekt przywracania. Następnie można wyzwolić operację przywracania, uruchamiając następujące polecenie:

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

Uwaga

Podczas operacji przywracania magazyn kopii zapasowych i klaster usługi AKS muszą mieć przypisane określone role w celu wykonania przywracania:

  1. Docelowy klaster usługi AKS powinien mieć rolę Współautor w grupie zasobów migawki.
  2. Tożsamość użytkownika dołączona z rozszerzeniem kopii zapasowej powinna mieć role Współautor konta magazynu na koncie magazynu, na którym są przechowywane kopie zapasowe.
  3. Magazyn kopii zapasowych powinien mieć rolę Czytelnik w docelowym klastrze usługi AKS i grupie zasobów migawki.

Zadanie śledzenia

Zadania przywracania można śledzić za pomocą az dataprotection job polecenia . Możesz wyświetlić listę wszystkich zadań i pobrać szczegóły określonego zadania.

Możesz również użyć usługi Resource Graph do śledzenia wszystkich zadań we wszystkich subskrypcjach, grupach zasobów i magazynach kopii zapasowych. Użyj polecenia , az dataprotection job list-from-resourcegraph aby pobrać odpowiednie zadanie.

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

Następne kroki