Delen via


Maak een back-up van Azure Kubernetes Service met behulp van Azure CLI

Dit artikel beschrijft hoe u Azure Kubernetes Service (AKS) kunt configureren en back-uppen met behulp van Azure CLI. U kunt AKS ook back-uppen met Azure PowerShell.

Met Azure Backup kunt u nu een back-up maken van AKS-clusters (clusterbronnen en permanente volumes die aan het cluster zijn gekoppeld) met behulp van een back-upextensie die in het cluster moet worden geïnstalleerd. De back-upkluis communiceert met het cluster via deze back-upextensie om back-up- en herstelbewerkingen uit te voeren.

Voordat je begint

  • Momenteel ondersteunt AKS-back-up alleen permanente volumes op basis van Azure Disk (ingeschakeld door CSI-stuurprogramma). De back-ups worden alleen opgeslagen in het operationele gegevensarchief (in uw tenant) en worden niet verplaatst naar een kluis. De back-upkluis en AKS-cluster moeten in dezelfde regio zijn.

  • AKS-back-ups gebruiken een blobcontainer en een resourcegroep om de back-ups op te slaan. De blobcontainer heeft de AKS clusterresources opgeslagen, terwijl de snapshots van het persistente volume zijn opgeslagen in de resourcegroep. Het AKS-cluster en de opslaglocaties moeten zich in dezelfde regio bevinden. Meer informatie over het maken van een blobcontainer.

  • Op dit moment ondersteunt AKS back-up één keer per dag een back-up. Het ondersteunt ook vaker back-ups (elke 4, 8 en 12 uur) per dag. Deze oplossing stelt u in staat uw gegevens tot 360 dagen te behouden voor herstel. Leer om een back-upbeleid maken.

  • Je moet de Backup Extension installeren om back-up- en herstelbewerkingen op een AKS-cluster te configureren. Meer informatie over Backup Extension.

  • Zorg ervoor dat Microsoft.KubernetesConfiguration, Microsoft.DataProtectionen Microsoft.ContainerService zijn geregistreerd voor uw abonnement voordat u de back-upconfiguratie en herstelbewerkingen start.

  • Zorg ervoor dat u alle vereisten uitvoert voordat u begint met de back-up- of hersteloperatie voor AKS-back-up.

Voor meer informatie over de ondersteunde scenario's, beperkingen en beschikbaarheid, zie de supportmatrix.

Maak een back-up kluis aan

Een Backup-kluis is een beheerentiteit in Azure waarin back-upgegevens worden opgeslagen voor verschillende nieuwere workloads die door Azure Backup worden ondersteund, zoals Azure Database for PostgreSQL-servers en Azure Disks. Backupkluisjes maken het eenvoudig om uw back-upgegevens te organiseren, terwijl ze de beheerslast minimaliseren. Back-upkluisjes zijn gebaseerd op het Azure Resource Manager-model van Azure, dat verbeterde mogelijkheden biedt om te helpen bij het beveiligen van back-upgegevens.

Voordat u een back-upkluis maakt, kiest u de opslagredundantie van de gegevens in de kluis en maakt u vervolgens de back-upkluis met die opslagredundantie en de locatie. Meer informatie over het maken van een Backup-kluis.

Opmerking

Hoewel de geselecteerde kluis mogelijk de instelling global-redundancy heeft, ondersteunt de backup voor AKS momenteel alleen de Operational Tier. Alle back-ups worden opgeslagen in uw abonnement in dezelfde regio als de AKS-cluster, en ze worden niet gekopieerd naar de opslag van de Backup-kluis.

Om de Backup-kluis te maken, voer je het volgende commando uit:

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

Zodra de kluis is aangemaakt, maak een back-upbeleid om AKS-clusters te beschermen.

Maak een back-upbeleid

Om de interne componenten van een back-upproduct van een back-upproductbeleid voor de back-up van AKS te begrijpen, haalt u het beleidssjabloon op met behulp van de opdracht az dataprotection backup-policy get-default-policy-template. Deze opdracht levert een standaardbeleidsjabloon op voor een gegeven gegevenstype. Gebruik deze sjabloon voor beleidsregels om een nieuwe beleidsregel te maken.

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

Het beleidssjabloon bestaat uit triggercriteria (die de factoren bepalen die de back-up taak activeren) en een levenscyclus (die bepaalt wanneer de back-ups worden verwijderd, gekopieerd of verplaatst). Bij AKS-backup is de standaardwaarde voor een geplande uurtrigger dat het elke 4 uur (PT4H) plaatsvindt en de retentie van elke back-up is zeven dagen.

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


Back-up voor AKS biedt meerdere back-ups per dag. Als u vaker back-ups nodig heeft, kies dan de uurfrequentie voor back-ups waarmee u back-ups kunt maken met intervallen van elke 4, 6, 8 of 12 uur. De back-ups worden gepland op basis van het door u gekozen tijdinterval.

Belangrijk

De tijd van de dag geeft het moment aan waarop de back-up begint en niet de tijd waarop de back-up voltooid is. Het back-upschema volgt de ISO 8601-duurnotatie. Het herhalende intervalvoorvoegsel R wordt echter niet ondersteund, omdat back-ups voor onbepaalde tijd worden geconfigureerd. Elke opgegeven R waarde wordt genegeerd.

Zodra u de sjabloon als een JSON-bestand downloadt, kunt u het bewerken voor planning en bewaring zoals nodig is. Vervolgens maakt u een nieuw beleid met de resulterende JSON. Als u de uurfrequentie of de bewaarperiode wilt bewerken, gebruik dan de az dataprotection backup-policy trigger set en/of az dataprotection backup-policy retention-rule set commando's.

Opmerking

Om uw back-upgegevens in de Vault-laag op te slaan, hetzij voor lange termijn voor nalevingsdoeleinden of voor regionale rampenherstel via herstel over regio's, moet u een nieuwe bewaringsregel definiëren in de standaardtemplate die aangeeft hoe lang de back-up in de Vault moet worden opgeslagen.

Laten we een voorbeeld nemen waarin we de standaardtemplate voor het back-upbeleid bijwerken en een retentieregel toevoegen om de eerste succesvolle back-up per dag in de Vault-laag gedurende 30 dagen te behouden.

Gebruik de opdracht az dataprotection backup-policy retention-rule create-lifecycle om een retentieregel te maken en voeg vervolgens de retentieregel toe aan het sjabloon van het back-upbeleid met de opdracht ``


az dataprotection backup-policy retention-rule create-lifecycle  --count 30 --retention-duration-type Days --copy-option ImmediateCopyOption --target-datastore VaultStore --source-datastore OperationalStore > ./retentionrule.json

az dataprotection backup-policy retention-rule set --lifecycles ./retentionrule.json --name Daily --policy ./akspolicy.json > ./akspolicy.json

Zodra de policy JSON alle vereiste waarden bevat, ga verder met het maken van een nieuw beleid vanuit het policy-object met behulp van de az dataprotection backup-policy create-opdracht.

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

Bereid AKS-cluster voor op back-up

nl-NL: Zodra de kluis en het beleidscreatieproces zijn voltooid, moet u de volgende vereisten uitvoeren om het AKS-cluster klaar te maken voor back-up:

  1. Maak een opslagaccount en een blobcontainer aan.

    Back-up voor AKS slaat Kubernetes-bronnen op in een blobcontainer als back-ups. Om de AKS-cluster klaar te maken voor back-up, moet je een extensie in de cluster installeren. Deze extensie vereist het opslagaccount en de blobcontainer als invoer.

    Om een nieuw opslagaccount aan te maken, voert u de volgende opdracht uit:

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

    Zodra de opslagaccount is aangemaakt, moet u een blobcontainer maken door het uitvoeren van de volgende opdracht:

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

    Leer hoe u specifieke functies kunt inschakelen of uitschakelen, zoals private endpoints, tijdens het aanmaken van een opslagaccount en blob-container.

    Opmerking

    1. Het opslagaccount en de AKS-cluster moeten zich in dezelfde regio en abonnement bevinden.
    2. De blobcontainer mag geen eerder aangemaakte bestandssysteem bevatten (behalve aangemaakt door back-up voor AKS).
    3. Als uw bron- of doel-AKS-cluster zich in een privaat virtueel netwerk bevindt, moet u een Privé-eindpunt maken om het opslagaccount met het AKS-cluster te verbinden.
  2. Installeer de back-upextensie.

    De installatie van de Backup Extension is verplicht in het AKS cluster om enige back-up- en hersteloperaties uit te voeren. De Backup Extension creëert een namespace dataprotection-microsoft in het cluster en gebruikt deze om zijn resources uit te rollen. De extensie vereist het opslagaccount en de blobcontainer als invoer voor installatie.

    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
    

Als het AKS-cluster zich in een virtueel netwerk bevindt, moet u een privé-eindpunt maken, waarbij u het opslagaccount verbindt met het virtuele netwerk waarin het AKS-cluster zich bevindt.

#Fetch the Subnet ID using the name of the virtual network and subnet in which cluster resides 
$PESubnetId = az network vnet subnet show --resource-group $aksMCResourceGroup --vnet-name $aksVnetName  --name $PESubnetName --query 'id' --output tsv

#Create a Private Endpoint between Storage Account and the Virtual Network.
az network private-endpoint create `
  --resource-group $aksclusterresourcegroup `
  --name $StoragePrivateEndpoint `
  --vnet-name $aksVnetName `
  --subnet $PESubnetId `
  --private-connection-resource-id $(az storage account show --nameD $storageaccount --resource-group $storageaccountresourcegroup --query "id" --output tsv) `
  --group-ids "blob" `
  --connection-name "StoragePESharedVNetConnection"

Als onderdeel van de installatie van de extensie wordt een gebruikersidentiteit gecreëerd in de Node Pool Resource Group van het AKS-cluster. Om de extensie toegang te geven tot het opslagaccount, moet je deze identiteit de rol Storage Blob Data Contributor toekennen. Om de vereiste rol toe te wijzen, voert u de volgende opdracht uit:

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
  1. Vertrouwde toegang inschakelen

    Om de Backup vault verbinding te laten maken met de AKS-cluster, moet u Trusted Access inschakelen, omdat dit de Backup vault een directe zichtlijn naar de AKS-cluster biedt.

    Om Vertrouwde Toegang in te schakelen, voer de volgende opdracht uit:

    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
    

Back-ups configureren

Met de aangemaakte back-upkluis en back-upprocedure, en de AKS-cluster in gereed-om-te-back-uppen staat, kunt u nu beginnen met het back-uppen van uw AKS-cluster.

Bereid het verzoek voor

De configuratie van back-up wordt in twee stappen uitgevoerd:

  1. Bereid de back-upconfiguratie voor om te bepalen welke clusterresources moeten worden geback-upt met behulp van het az dataprotection backup-instance initialize-backupconfig-commando. Het commando genereert een JSON, die je kunt bijwerken om de back-upconfiguratie voor je AKS-cluster naar wens te definiëren.

    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
    }
    

De volgende namespaces worden overgeslagen in de back-up configuratie en niet geconfigureerd voor back-ups: kube-system, kube-node-lease, kube-public.

  1. Bereid de relevante aanvraag voor door de relevante kluis, beleid, AKS-cluster, backupconfiguratie en snapshot resourcegroep te gebruiken met de az dataprotection backup-instance initialize opdracht.

    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
    

Nu, gebruik de JSON-uitvoer van dit commando om backup voor de AKS-cluster in te stellen.

Vereiste machtigingen toewijzen en valideren

Backupkluis gebruikt beheerde identiteit om toegang te krijgen tot andere Azure-resources. Om de back-up van de AKS-cluster te configureren, heeft de beheerde identiteit van Back-up vault een reeks permissies nodig voor de AKS-cluster en de resourcegroepen, waar snapshots worden gemaakt en beheerd. Ook heeft het AKS-cluster toestemming nodig voor de Snapshot Resource-groep.

Alleen door het systeem toegewezen beheerde identiteit wordt momenteel ondersteund voor back-up (zowel Backup vault als AKS cluster). Een systeemtoegewezen beheerde identiteit is beperkt tot één per resource en is gekoppeld aan de levenscyclus van die resource. U kunt machtigingen aan de beheerde identiteit verlenen door gebruik te maken van Azure rolegebaseerde toegangscontrole (Azure RBAC). Een beheerde identiteit is een service-principal van een speciaal type die alleen kan worden gebruikt met Azure-resources. Meer informatie over beheerde identiteiten.

Met het verzoek voorbereid, moet je eerst controleren of de vereiste rollen zijn toegewezen aan de hierboven genoemde resources door het volgende commando uit te voeren.

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

Als de validatie mislukt en er bepaalde machtigingen ontbreken, kunt u deze toewijzen door het volgende commando uit te voeren:

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

Zodra de machtigingen zijn toegewezen, valideren opnieuw met behulp van het volgende validate for backup commando:

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

Voer een back-up op aanvraag uit

Om het relevante backup-instantie te vinden waarop je een backup wilt starten, voer je de az dataprotection backup-instance list-from-resourcegraph ---opdracht uit.

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

Start nu een on-demand back-up voor de back-up instantie door het volgende commando uit te voeren:

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

Banen bijhouden

Volg de back-up taken die de az dataprotection job commando uitvoeren. U kunt alle vacatures opsommen en details van een specifieke vacature ophalen.

Je kunt ook Resource Graph gebruiken om alle taken te volgen over alle abonnementen, resourcegroepen en Back-up kluizen door het az dataprotection job list-from-resourcegraph-commando uit te voeren om de relevante taak te verkrijgen.

Voor backup op afroep:

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

Voor geplande back-up:

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

Volgende stappen