Tworzenie kopii zapasowej usługi Azure Kubernetes Service przy użyciu interfejsu wiersza polecenia platformy Azure

W tym artykule opisano sposób konfigurowania i tworzenia kopii zapasowej usługi Azure Kubernetes Service (AKS) 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.

Przed rozpoczęciem

  • Obecnie kopia zapasowa usługi AKS obsługuje woluminy trwałe oparte na dyskach platformy Azure (włączone tylko przez sterownik CSI). Kopie zapasowe są przechowywane tylko w operacyjnym magazynie danych (w dzierżawie) i nie są przenoszone do magazynu. Magazyn usługi Backup i klaster usługi AKS powinny znajdować się w tym samym regionie.

  • Kopia zapasowa usługi AKS używa kontenera obiektów blob i grupy zasobów do przechowywania kopii zapasowych. Kontener obiektów blob zawiera przechowywane w nim zasoby klastra usługi AKS, natomiast trwałe migawki woluminów są przechowywane w grupie zasobów. Klaster AKS i lokalizacje magazynu muszą znajdować się w tym samym regionie. Dowiedz się , jak utworzyć kontener obiektów blob.

  • Obecnie kopia zapasowa usługi AKS obsługuje tworzenie kopii zapasowych raz dziennie. Obsługuje również częstsze kopie zapasowe (w odstępach co 4, 8 i 12 godzin) dziennie. To rozwiązanie umożliwia przechowywanie danych na potrzeby przywracania przez maksymalnie 360 dni. Dowiedz się, jak utworzyć zasady tworzenia kopii zapasowych.

  • Należy zainstalować rozszerzenie kopii zapasowej, aby skonfigurować operacje tworzenia i przywracania kopii zapasowych w klastrze usługi AKS. Dowiedz się więcej o rozszerzeniu kopii zapasowej.

  • Przed zainicjowaniem operacji konfiguracji i przywracania kopii zapasowej upewnij się, że Microsoft.KubernetesConfigurationMicrosoft.DataProtectionflaga funkcji i flaga TrustedAccessPreview funkcji w Microsoft.ContainerService subskrypcji są zarejestrowane.

  • Przed zainicjowaniem operacji tworzenia kopii zapasowej lub przywracania kopii zapasowej usługi AKS upewnij się, że wszystkie wymagania wstępne są spełnione.

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

Tworzenie magazynu kopii zapasowych

Magazyn usługi Backup to jednostka zarządzania na platformie Azure, która przechowuje dane kopii zapasowej dla różnych nowszych obciążeń obsługiwanych przez usługę Azure Backup, takich jak serwery usługi Azure Database for PostgreSQL i dyski platformy Azure. Magazyny kopii zapasowych ułatwiają organizowanie danych kopii zapasowych, jednocześnie minimalizując obciążenie związane z zarządzaniem. Magazyny kopii zapasowych są oparte na modelu usługi Azure Resource Manager platformy Azure, który zapewnia rozszerzone możliwości ułatwiające zabezpieczanie danych kopii zapasowych.

Przed utworzeniem magazynu kopii zapasowych wybierz nadmiarowość magazynu danych w magazynie, a następnie utwórz magazyn kopii zapasowych z nadmiarowością magazynu i lokalizacją. Dowiedz się więcej o tworzeniu magazynu kopii zapasowych.

Uwaga

Chociaż wybrany magazyn może mieć ustawienie globalnej nadmiarowości , kopia zapasowa usługi AKS obecnie obsługuje tylko warstwę operacyjną. Wszystkie kopie zapasowe są przechowywane w ramach subskrypcji w tym samym regionie co klaster usługi AKS i nie są kopiowane do magazynu magazynu usługi Backup.

Aby utworzyć magazyn kopii zapasowych, uruchom następujące polecenie:

az dataprotection backup-vault create --resource-group $backupvaultresourcegroup --vault-name $backupvault --location $region --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"

Po zakończeniu tworzenia magazynu utwórz zasady tworzenia kopii zapasowych w celu ochrony klastrów usługi AKS.

Tworzenie zasad kopii zapasowych

Aby zrozumieć wewnętrzne składniki zasad kopii zapasowej dla kopii zapasowej usługi AKS, pobierz szablon zasad przy użyciu polecenia az dataprotection backup-policy get-default-policy-template. To polecenie zwraca domyślny szablon zasad dla danego typu źródła danych. Użyj tego szablonu zasad, aby utworzyć nowe zasady.

az dataprotection backup-policy get-default-policy-template --datasource-type AzureKubernetesService > akspolicy.json


{
  "datasourceTypes": [
    "Microsoft.ContainerService/managedClusters"
  ],
  "name": "AKSPolicy1",
  "objectType": "BackupPolicy",
  "policyRules": [
    {
      "backupParameters": {
        "backupType": "Incremental",
        "objectType": "AzureBackupParams"
      },
      "dataStore": {
        "dataStoreType": "OperationalStore",
        "objectType": "DataStoreInfoBase"
      },
      "name": "BackupHourly",
      "objectType": "AzureBackupRule",
      "trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2023-01-04T09:00:00+00:00/PT4H"
          ]
        },
        "taggingCriteria": [
          {
            "isDefault": true,
            "tagInfo": {
              "id": "Default_",
              "tagName": "Default"
            },
            "taggingPriority": 99
          }
        ]
      }
    },
    {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P7D",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "OperationalStore",
            "objectType": "DataStoreInfoBase"
          }
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    }
  ]
}

Szablon zasad składa się z kryteriów wyzwalacza (które decydują o czynnikach wyzwalania zadania tworzenia kopii zapasowej) i cyklu życia (który decyduje, kiedy usunąć, skopiować lub przenieść kopie zapasowe). W kopii zapasowej usługi AKS wartość domyślna wyzwalacza jest wyzwalaczem zaplanowanym co 4 godziny (PT4H), a przechowywanie każdej kopii zapasowej wynosi 365 dni.

Scheduled trigger:
      "trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2023-01-04T09:00:00+00:00/PT4H"
          ]
        },

Default retention lifecycle:
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P7D",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "OperationalStore",
            "objectType": "DataStoreInfoBase"
          }
        }
      ],


Tworzenie kopii zapasowej dla usługi AKS zapewnia wiele kopii zapasowych dziennie. Jeśli potrzebujesz częstszych kopii zapasowych, wybierz częstotliwość tworzenia kopii zapasowych godzin, która ma możliwość tworzenia kopii zapasowych z interwałami co 4, 6, 8 lub 12 godzin. Kopie zapasowe są zaplanowane na podstawie wybranego interwału czasu.

Jeśli na przykład wybierzesz co 4 godziny, kopie zapasowe są wykonywane w przybliżeniu w odstępie co 4 godziny, dzięki czemu kopie zapasowe są równomiernie dystrybuowane w ciągu dnia. Jeśli kopia zapasowa raz dziennie jest wystarczająca, wybierz częstotliwość tworzenia kopii zapasowych codziennie. W dziennej częstotliwości tworzenia kopii zapasowych można określić godzinę wykonania kopii zapasowych.

Ważne

Godzina dnia wskazuje godzinę rozpoczęcia tworzenia kopii zapasowej, a nie godzinę zakończenia tworzenia kopii zapasowej.

Uwaga

Mimo że wybrany magazyn ma globalne ustawienie nadmiarowości, kopia zapasowa usługi AKS obecnie obsługuje tylko magazyn danych migawek. Wszystkie kopie zapasowe są przechowywane w grupie zasobów w ramach subskrypcji i nie są kopiowane do magazynu magazynu kopii zapasowych.

Po pobraniu szablonu jako pliku JSON możesz go edytować do planowania i przechowywania zgodnie z potrzebami. Następnie utwórz nowe zasady z wynikowym kodem JSON. Jeśli chcesz edytować częstotliwość godzinną lub okres przechowywania, użyj az dataprotection backup-policy trigger set poleceń i/lub az dataprotection backup-policy retention-rule set . Gdy kod JSON zasad ma wszystkie wymagane wartości, przejdź do utworzenia nowych zasad z obiektu zasad przy użyciu az dataprotection backup-policy create polecenia .

az dataprotection backup-policy create -g testBkpVaultRG --vault-name TestBkpVault -n mypolicy --policy policy.json

Przygotowywanie klastra usługi AKS do tworzenia kopii zapasowej

Po zakończeniu tworzenia magazynu i zasad należy wykonać następujące wymagania wstępne, aby przygotować klaster usługi AKS do tworzenia kopii zapasowej:

  1. Utwórz konto magazynu i kontener obiektów blob.

    Kopia zapasowa usługi AKS przechowuje zasoby Kubernetes w kontenerze obiektów blob jako kopie zapasowe. Aby przygotować klaster usługi AKS do tworzenia kopii zapasowej, należy zainstalować rozszerzenie w klastrze. To rozszerzenie wymaga konta magazynu i kontenera obiektów blob jako danych wejściowych.

    Aby utworzyć nowe konto magazynu, uruchom następujące polecenie:

    az storage account create --name $storageaccount --resource-group $storageaccountresourcegroup --location $region --sku Standard_LRS
    

    Po zakończeniu tworzenia konta magazynu utwórz kontener obiektów blob wewnątrz, uruchamiając następujące polecenie:

    az storage container create --name $blobcontainer --account-name $storageaccount --auth-mode login
    

    Dowiedz się, jak włączać lub wyłączać określone funkcje, takie jak prywatny punkt końcowy, podczas tworzenia konta magazynu i kontenera obiektów blob.

    Uwaga

    1. Konto magazynu i klaster usługi AKS powinny znajdować się w tym samym regionie i subskrypcji.
    2. Kontener obiektów blob nie powinien zawierać żadnych wcześniej utworzonych systemów plików (z wyjątkiem utworzonych przez kopię zapasową usługi AKS).
    3. Jeśli źródłowy lub docelowy klaster usługi AKS znajduje się w prywatnej sieci wirtualnej, należy utworzyć prywatny punkt końcowy w celu połączenia konta magazynu z klastrem usługi AKS.
  2. Zainstaluj rozszerzenie kopii zapasowej.

    Rozszerzenie kopii zapasowej jest obowiązkowe do zainstalowania w klastrze usługi AKS w celu wykonywania dowolnych operacji tworzenia kopii zapasowych i przywracania. Rozszerzenie kopii zapasowej tworzy przestrzeń nazw dataprotection-microsoft w klastrze i używa jej do wdrażania zasobów. Rozszerzenie wymaga konta magazynu i kontenera obiektów blob jako danych wejściowych do instalacji.

    az k8s-extension create --name azure-aks-backup --extension-type microsoft.dataprotection.kubernetes --scope cluster --cluster-type managedClusters --cluster-name $akscluster --resource-group $aksclusterresourcegroup --release-train stable --configuration-settings blobContainer=$blobcontainer storageAccount=$storageaccount storageAccountResourceGroup=$storageaccountresourcegroup storageAccountSubscriptionId=$subscriptionId
    

    W ramach instalacji rozszerzenia tożsamość użytkownika jest tworzona w grupie zasobów puli węzłów klastra usługi AKS. Aby rozszerzenie uzyskiwało dostęp do konta magazynu, należy podać tę tożsamość rolę Współautor danych obiektu blob usługi Storage. Aby przypisać wymaganą rolę, uruchom następujące polecenie:

    az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $akscluster --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
    
  3. Włączanie zaufanego dostępu

    Aby magazyn kopii zapasowych mógł nawiązać połączenie z klastrem usługi AKS, należy włączyć zaufany dostęp , ponieważ umożliwia magazynowi usługi Backup bezpośredni dostęp do klastra usługi AKS.

    Aby włączyć zaufany dostęp, uruchom następujące polecenie:

    az aks trustedaccess rolebinding create --cluster-name $akscluster --name backuprolebinding --resource-group $aksclusterresourcegroup --roles Microsoft.DataProtection/backupVaults/backup-operator --source-resource-id /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/BackupVaults/$backupvault
    

Konfigurowanie kopii zapasowych

Po utworzeniu zasad magazynu kopii zapasowych i kopii zapasowych oraz klastra usługi AKS w stanie gotowej do utworzenia kopii zapasowej można teraz rozpocząć tworzenie kopii zapasowej klastra usługi AKS.

Przygotowywanie żądania

Konfiguracja kopii zapasowej jest wykonywana w dwóch krokach:

  1. Przygotuj konfigurację kopii zapasowej, aby zdefiniować, które zasoby klastra mają być tworzone przy użyciu az dataprotection backup-instance initialize-backupconfig polecenia . Polecenie generuje kod JSON, który można zaktualizować w celu zdefiniowania konfiguracji kopii zapasowej dla klastra usługi AKS zgodnie z potrzebami.

    az dataprotection backup-instance initialize-backupconfig --datasource-type AzureKubernetesService > aksbackupconfig.json
    
    {
     "excluded_namespaces": null,
     "excluded_resource_types": null,
     "include_cluster_scope_resources": true,
     "included_namespaces": null, 
     "included_resource_types": null,
     "label_selectors": null,
     "snapshot_volumes": true
    }
    
  2. Przygotuj odpowiednie żądanie przy użyciu odpowiedniego magazynu, zasad, klastra usługi AKS, konfiguracji kopii zapasowej i grupy zasobów migawki przy użyciu az dataprotection backup-instance initialize polecenia .

    az dataprotection backup-instance initialize --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --datasource-location $region --datasource-type AzureKubernetesService --policy-id /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupPolicies/$backuppolicy --backup-configuration ./aksbackupconfig.json --friendly-name ecommercebackup --snapshot-resource-group-name $snapshotresourcegroup > backupinstance.json
    

Teraz użyj danych wyjściowych JSON tego polecenia, aby skonfigurować kopię zapasową klastra usługi AKS.

Przypisywanie wymaganych uprawnień i weryfikowanie

Magazyn kopii zapasowych używa tożsamości zarządzanej do uzyskiwania dostępu do innych zasobów platformy Azure. Aby skonfigurować kopię zapasową klastra usługi AKS, tożsamość zarządzana magazynu kopii zapasowych wymaga zestawu uprawnień w klastrze I grupach zasobów usługi AKS, gdzie są tworzone i zarządzane migawki. Ponadto klaster usługi AKS wymaga uprawnień w grupie zasobów migawki.

Tylko tożsamość zarządzana przypisana przez system jest obecnie obsługiwana na potrzeby tworzenia kopii zapasowych (zarówno magazynu kopii zapasowych, jak i klastra usługi AKS). Tożsamość zarządzana przypisana przez system jest ograniczona do jednej na zasób i jest powiązana z cyklem życia tego zasobu. Uprawnienia do tożsamości zarządzanej można udzielić przy użyciu kontroli dostępu opartej na rolach (RBAC) platformy Azure. Tożsamość zarządzana to jednostka usługi specjalnego typu, która może być używana tylko z zasobami platformy Azure. Dowiedz się więcej o tożsamościach zarządzanych.

Po przygotowaniu żądania należy najpierw sprawdzić, czy wymagane role są przypisane do zasobów wymienionych powyżej, uruchamiając następujące polecenie:

az dataprotection backup-instance validate-for-backup --backup-instance ./backupinstance.json --ids /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault

Jeśli walidacja zakończy się niepowodzeniem i brakuje pewnych uprawnień, możesz je przypisać, uruchamiając następujące polecenie:

az dataprotection backup-instance update-msi-permissions command.
az dataprotection backup-instance update-msi-permissions --datasource-type AzureKubernetesService --operation Backup --permissions-scope ResourceGroup --vault-name $backupvault --resource-group $backupvaultresourcegroup --backup-instance backupinstance.json

Po przypisaniu uprawnień należy ponownie użyć następującego polecenia weryfikacji kopii zapasowej :

az dataprotection backup-instance create --backup-instance  backupinstance.json --resource-group $backupvaultresourcegroup --vault-name $backupvault

Uruchamianie tworzenia kopii zapasowej na żądanie

Aby pobrać odpowiednie wystąpienie kopii zapasowej, na którym chcesz wyzwolić kopię zapasową, uruchom az dataprotection backup-instance list-from-resourcegraph -- polecenie .

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

Teraz wyzwól kopię zapasową na żądanie dla wystąpienia kopii zapasowej, uruchamiając następujące polecenie:

az dataprotection backup-instance adhoc-backup --rule-name "BackupDaily" --ids /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstanceid

Śledzenie zadań

Śledzenie zadań tworzenia kopii zapasowej z uruchomionym poleceniem az dataprotection job . 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, uruchamiając az dataprotection job list-from-resourcegraph polecenie , aby uzyskać odpowiednie zadanie

W przypadku kopii zapasowej na żądanie:

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

W przypadku zaplanowanej kopii zapasowej:

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

Następne kroki