Zálohování služby Azure Kubernetes Service pomocí Azure CLI

Tento článek popisuje, jak nakonfigurovat a zálohovat službu Azure Kubernetes Service (AKS) 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í.

Než začnete

  • Zálohování AKS v současné době podporuje pouze trvalé svazky založené na disku Azure (povolené ovladačem CSI). Zálohy se ukládají jenom v provozním úložišti dat (ve vašem tenantovi) a nepřesouvají se do trezoru. Trezor služby Backup a cluster AKS by měly být ve stejné oblasti.

  • Zálohování AKS používá k ukládání záloh kontejner objektů blob a skupinu prostředků. Kontejner objektů blob obsahuje prostředky clusteru AKS uložené v něm, zatímco snímky trvalých svazků jsou uložené ve skupině prostředků. Cluster AKS a umístění úložiště se musí nacházet ve stejné oblasti. Zjistěte , jak vytvořit kontejner objektů blob.

  • Zálohování AKS v současné době podporuje jednorázové zálohování. Podporuje také častější zálohování (v intervalech každých 4, 8 a 12 hodin) za den. Toto řešení umožňuje uchovávat data pro obnovení po dobu až 360 dnů. Naučte se vytvářet zásady zálohování.

  • Pokud chcete nakonfigurovat operace zálohování a obnovení v clusteru AKS, musíte nainstalovat rozšíření zálohování. Přečtěte si další informace o rozšíření zálohování.

  • Před zahájením operací konfigurace zálohování a TrustedAccessPreview obnovení se ujistěte, že Microsoft.KubernetesConfigurationMicrosoft.DataProtectionjsou pro vaše předplatné zaregistrované příznaky Microsoft.ContainerService funkce a že jsou zapnuté.

  • Před zahájením operace zálohování nebo obnovení pro zálohování AKS nezapomeňte provést všechny požadavky .

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

Vytvoření trezoru služby Backup

Trezor služby Backup je entita správy v Azure, která ukládá zálohovaná data pro různé novější úlohy, které Azure Backup podporuje, například servery Azure Database for PostgreSQL a disky Azure. Trezory záloh usnadňují uspořádání zálohovaných dat a zároveň minimalizují režijní náklady na správu. Trezory záloh jsou založené na modelu Azure Resource Manageru v Azure, který poskytuje vylepšené možnosti, které pomáhají zabezpečit zálohovaná data.

Před vytvořením trezoru služby Backup zvolte redundanci úložiště dat v trezoru a pak vytvořte trezor služby Backup s danou redundancí úložiště a umístěním. Přečtěte si další informace o vytváření trezoru služby Backup.

Poznámka:

I když vybraný trezor může mít nastavení globální redundance , zálohování pro AKS aktuálně podporuje pouze provozní úroveň . Všechny zálohy se ukládají ve vašem předplatném ve stejné oblasti jako cluster AKS a nekopírují se do úložiště trezoru služby Backup.

Pokud chcete vytvořit trezor služby Backup, spusťte následující příkaz:

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

Po vytvoření trezoru vytvořte zásadu zálohování pro ochranu clusterů AKS.

Vytvoření zásad zálohování

Pokud chcete porozumět vnitřním komponentám zásad zálohování pro zálohování AKS, načtěte šablonu zásad pomocí příkazu az dataprotection backup-policy get-default-policy-template. Tento příkaz vrátí výchozí šablonu zásad pro daný typ zdroje dat. Pomocí této šablony zásad můžete vytvořit novou zásadu.

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

Šablona zásad se skládá z kritérií triggeru (která rozhoduje o faktorech pro aktivaci úlohy zálohování) a životního cyklu (který se rozhodne, kdy se mají zálohy odstranit, zkopírovat nebo přesunout). V zálohování AKS je výchozí hodnota triggeru naplánovaná hodinová aktivační událost každých 4 hodiny (PT4H) a uchovávání jednotlivých záloh je 365 dnů.

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


Zálohování pro AKS poskytuje více záloh za den. Pokud požadujete častější zálohování, zvolte frekvenci zálohování po hodinách, která má možnost provádět zálohování s intervaly každých 4, 6, 8 nebo 12 hodin. Zálohy se plánují na základě vybraného časového intervalu .

Pokud například vyberete každých 4 hodiny, zálohy se provádějí přibližně v intervalu každých 4 hodin , aby se zálohy rovnoměrně distribuoval v rámci dne. Pokud stačí zálohování jednou denně , zvolte frekvenci denního zálohování. V denní frekvenci zálohování můžete určit dobu, kdy se mají zálohy provést.

Důležité

Čas dne označuje čas spuštění zálohování, nikoli čas dokončení zálohování.

Poznámka:

I když má vybraný trezor nastavení globální redundance, zálohování pro AKS aktuálně podporuje pouze úložiště dat snímků. Všechny zálohy se ukládají ve skupině prostředků ve vašem předplatném a nekopírují se do úložiště trezoru služby Backup.

Jakmile šablonu stáhnete jako soubor JSON, můžete ji upravit pro plánování a uchovávání podle potřeby. Pak vytvořte novou zásadu s výsledným kódem JSON. Pokud chcete upravit hodinovou frekvenci nebo dobu uchovávání, použijte az dataprotection backup-policy trigger set příkazy a/nebo az dataprotection backup-policy retention-rule set . Jakmile json zásady obsahuje všechny požadované hodnoty, pokračujte vytvořením nové zásady z objektu az dataprotection backup-policy create zásad pomocí příkazu.

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

Příprava clusteru AKS na zálohování

Po dokončení vytváření trezoru a zásad musíte provést následující požadavky, abyste cluster AKS připravili na zálohování:

  1. Vytvořte účet úložiště a kontejner objektů blob.

    Zálohování pro AKS ukládá prostředky Kubernetes do kontejneru objektů blob jako zálohy. Pokud chcete cluster AKS připravit na zálohování, musíte do clusteru nainstalovat rozšíření. Toto rozšíření vyžaduje jako vstupy účet úložiště a kontejner objektů blob.

    Pokud chcete vytvořit nový účet úložiště, spusťte následující příkaz:

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

    Po vytvoření účtu úložiště vytvořte kontejner objektů blob uvnitř spuštěním následujícího příkazu:

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

    Zjistěte, jak povolit nebo zakázat konkrétní funkce, jako je privátní koncový bod, při vytváření účtu úložiště a kontejneru objektů blob.

    Poznámka:

    1. Účet úložiště a cluster AKS by měly být ve stejné oblasti a předplatném.
    2. Kontejner objektů blob by neměl obsahovat žádné dříve vytvořené systémy souborů (s výjimkou zálohování pro AKS).
    3. Pokud je váš zdrojový nebo cílový cluster AKS v privátní virtuální síti, musíte vytvořit privátní koncový bod pro připojení účtu úložiště ke clusteru AKS.
  2. Nainstalujte rozšíření zálohování.

    Rozšíření zálohování je povinné nainstalovat v clusteru AKS, aby bylo možné provádět všechny operace zálohování a obnovení. Rozšíření zálohování vytvoří v clusteru obor názvů a použije stejný obor názvů dataprotection-microsoft k nasazení prostředků. Rozšíření vyžaduje účet úložiště a kontejner objektů blob jako vstupy pro instalaci.

    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
    

    V rámci instalace rozšíření se identita uživatele vytvoří ve skupině prostředků fondu uzlů clusteru AKS. Aby rozšíření získalo přístup k účtu úložiště, musíte tuto identitu poskytnout roli Přispěvatel dat v objektech blob služby Storage. Pokud chcete přiřadit požadovanou roli, spusťte následující příkaz:

    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. Povolení důvěryhodného přístupu

    Aby se trezor služby Backup mohl připojit ke clusteru AKS, musíte povolit důvěryhodný přístup , protože trezor záloh může mít přímý pohled na cluster AKS.

    Pokud chcete povolit důvěryhodný přístup, spusťte následující příkaz:

    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
    

Konfigurace záloh

S vytvořeným trezorem služby Backup a zásadami zálohování a clusterem AKS v připraveném stavu zálohování teď můžete začít zálohovat cluster AKS.

Příprava požadavku

Konfigurace zálohování se provádí ve dvou krocích:

  1. Připravte konfiguraci zálohování, která definuje, které prostředky clusteru az dataprotection backup-instance initialize-backupconfig se mají zálohovat pomocí příkazu. Příkaz vygeneruje JSON, který můžete podle potřeby aktualizovat a definovat konfiguraci zálohování pro cluster AKS.

    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. Pomocí příkazu připravte příslušný požadavek pomocí příslušného trezoru, zásad, clusteru AKS, konfigurace zálohování a skupiny az dataprotection backup-instance initialize prostředků snímků.

    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
    

Teď pomocí výstupu JSON tohoto příkazu nakonfigurujte zálohování clusteru AKS.

Přiřazení požadovaných oprávnění a ověření

Trezor služby Backup používá spravovanou identitu pro přístup k dalším prostředkům Azure. Ke konfiguraci zálohování clusteru AKS vyžaduje spravovaná identita trezoru služby Backup sadu oprávnění ke clusteru AKS a skupinám prostředků, kde se vytvářejí a spravují snímky. Cluster AKS také vyžaduje oprávnění ke skupině prostředků snímku.

Pouze spravovaná identita přiřazená systémem je aktuálně podporována pro zálohování (trezor služby Backup i cluster AKS). Spravovaná identita přiřazená systémem je omezena na jeden prostředek a je svázaná s životním cyklem tohoto prostředku. Oprávnění ke spravované identitě můžete udělit pomocí řízení přístupu na základě role v Azure (Azure RBAC). Spravovaná identita je instanční objekt speciálního typu, který se dá použít jenom s prostředky Azure. Přečtěte si další informace o spravovaných identitách.

Při připraveném požadavku nejprve musíte ověřit, jestli jsou požadované role přiřazené k prostředkům uvedeným výše, spuštěním následujícího příkazu:

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

Pokud ověření selže a chybí určitá oprávnění, můžete je přiřadit spuštěním následujícího příkazu:

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

Jakmile jsou oprávnění přiřazená, znovu proveďte ověření pomocí následujícího příkazu pro zálohování :

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

Spuštění zálohování na vyžádání

Pokud chcete načíst příslušnou instanci zálohování, na které chcete aktivovat zálohování, spusťte az dataprotection backup-instance list-from-resourcegraph -- příkaz.

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

Teď aktivujte zálohování instance zálohování na vyžádání spuštěním následujícího příkazu:

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

Sledování úloh

Sledujte úlohy zálohování, na kterých je spuštěný az dataprotection job příkaz. Můžete zobrazit seznam všech úloh a načíst konkrétní podrobnosti úlohy.

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

Zálohování na vyžádání:

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

Pro plánované zálohování:

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

Další kroky