Delen via


Een back-up maken van Azure Kubernetes Service met behulp van Azure CLI

In dit artikel wordt beschreven hoe u Azure Kubernetes Service (AKS) configureert en er een back-up van maakt met behulp van Azure CLI. U kunt ook een back-up maken van AKS met behulp van 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. Back-upkluis communiceert met het cluster via deze back-upextensie om back-up- en herstelbewerkingen uit te voeren.

Voordat u 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 Backup-kluis en het AKS-cluster moeten zich in dezelfde regio bevinden.

  • AKS-back-up maakt gebruik van een blobcontainer en een resourcegroep om de back-ups op te slaan. De blobcontainer bevat de AKS-clusterresources die erin zijn opgeslagen, terwijl de permanente volumemomentopnamen worden 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 back-up. Het biedt ook ondersteuning voor frequentere back-ups (in intervallen van 4, 8 en 12 uur) per dag. Met deze oplossing kunt u uw gegevens maximaal 360 dagen bewaren voor herstel. Meer informatie over het maken van een back-upbeleid.

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

  • 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 een back-up- of herstelbewerking voor AKS-back-up start.

Zie de ondersteuningsmatrix voor meer informatie over de ondersteunde scenario's, beperkingen en beschikbaarheid.

Een Backup-kluis maken

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. Met back-upkluizen kunt u uw back-upgegevens eenvoudig ordenen, terwijl de beheeroverhead wordt geminimaliseerd. Back-upkluizen zijn gebaseerd op het Azure Resource Manager-model van Azure, dat verbeterde mogelijkheden biedt om back-upgegevens te beveiligen.

Voordat u een Backup-kluis 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.

Notitie

Hoewel de geselecteerde kluis mogelijk de instelling voor globale redundantie heeft, ondersteunt back-up voor AKS momenteel alleen operationele laag . Alle back-ups worden opgeslagen in uw abonnement in dezelfde regio als die van het AKS-cluster en worden niet gekopieerd naar de back-upkluisopslag.

Voer de volgende opdracht uit om de Backup-kluis te maken:

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

Zodra het maken van de kluis is voltooid, maakt u een back-upbeleid om AKS-clusters te beveiligen.

Maak een back-upbeleid

Als u de binnenste onderdelen van een back-upbeleid voor de back-up van AKS wilt begrijpen, haalt u de beleidssjabloon op met behulp van de opdracht az dataprotection backup-policy get-default-policy-template. Met deze opdracht wordt een standaardbeleidssjabloon geretourneerd voor een bepaald gegevensbrontype. Gebruik deze beleidssjabloon om een nieuw beleid 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"
    }
  ]
}

De beleidssjabloon bestaat uit een triggercriteria (waarmee wordt bepaald welke factoren de back-uptaak moeten worden geactiveerd) en een levenscyclus (waarmee wordt bepaald wanneer de back-ups moeten worden verwijderd, gekopieerd of verplaatst). In AKS-back-up is de standaardwaarde voor trigger een geplande trigger per uur elke 4 uur (PT4H) 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 frequentere back-ups nodig hebt, kiest u de frequentie van de back-up per uur met de mogelijkheid om back-ups te maken met intervallen van elke 4, 6, 8 of 12 uur. De back-ups worden gepland op basis van het tijdsinterval dat u hebt geselecteerd.

Belangrijk

Het tijdstip van de dag geeft de begintijd van de back-up aan en niet het tijdstip waarop de back-up is voltooid.

Zodra u de sjabloon als een JSON-bestand hebt gedownload, kunt u deze naar behoefte bewerken voor planning en retentie. Maak vervolgens een nieuw beleid met de resulterende JSON. Als u de frequentie per uur of de bewaarperiode wilt bewerken, gebruikt u de az dataprotection backup-policy trigger set en/of az dataprotection backup-policy retention-rule set opdrachten.

Notitie

Als u uw back-upgegevens in de kluislaag wilt opslaan om te bewaren voor nalevingsdoeleinden of voor regionaal herstel na noodgevallen via herstel in meerdere regio's, moet u een nieuwe bewaarregel definiëren in de standaardsjabloon die definieert hoe lang de back-up moet worden opgeslagen in de kluis.

Laten we een voorbeeld nemen waarin we de standaardsjabloon voor het back-upbeleid bijwerken en een bewaarregel toevoegen om de eerste geslaagde back-up per dag in de Kluislaag gedurende 30 dagen te behouden.

Gebruik de opdracht az dataprotection backup-policy retention-rule create-lifecycle om een bewaarregel te maken en voeg vervolgens de bewaarregel toe aan de back-upbeleidssjabloon 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 JSON van het beleid alle vereiste waarden heeft, gaat u verder met het maken van een nieuw beleid van het beleidsobject 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

AKS-cluster voorbereiden voor back-up

Zodra de kluis en het maken van het beleid zijn voltooid, moet u de volgende vereisten uitvoeren om het AKS-cluster gereed te maken voor back-up:

  1. Maak een opslagaccount en blobcontainer.

    Back-up voor AKS slaat Kubernetes-resources op in een blobcontainer als back-ups. Als u het AKS-cluster klaar wilt maken voor back-up, moet u een extensie in het cluster installeren. Voor deze extensie zijn het opslagaccount en de blobcontainer als invoer vereist.

    Voer de volgende opdracht uit om een nieuw opslagaccount te maken:

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

    Zodra het maken van het opslagaccount is voltooid, maakt u een blobcontainer binnen door de volgende opdracht uit te voeren:

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

    Meer informatie over het in- of uitschakelen van specifieke functies, zoals een privé-eindpunt, tijdens het maken van een opslagaccount en blobcontainer.

    Notitie

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

    De back-upextensie moet worden geïnstalleerd in het AKS-cluster om back-up- en herstelbewerkingen uit te voeren. De back-upextensie maakt een naamruimte dataprotection-microsoft in het cluster en gebruikt hetzelfde om de resources te implementeren. Voor de extensie zijn het opslagaccount en de blobcontainer vereist als invoer voor de 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 onderdeel van de installatie van de extensie wordt een gebruikersidentiteit gemaakt in de knooppuntgroep van het AKS-cluster. Voor toegang tot het opslagaccount moet u deze identiteit opgeven als bijdrager voor opslagblobgegevens. Voer de volgende opdracht uit om de vereiste rol toe te wijzen:

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

    Voordat de Backup-kluis verbinding kan maken met het AKS-cluster, moet u Vertrouwde toegang inschakelen, omdat de Backup-kluis een directe zichtlijn naar het AKS-cluster kan hebben.

    Voer de volgende opdracht uit om Vertrouwde toegang in te schakelen:

    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 het gemaakte Back-upkluis- en back-upbeleid en het AKS-cluster met de status Gereed om een back-up te maken, kunt u nu een back-up maken van uw AKS-cluster.

De aanvraag voorbereiden

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

  1. Bereid de back-upconfiguratie voor om te definiëren welke clusterbronnen moeten worden geback-upt met behulp van de az dataprotection backup-instance initialize-backupconfig opdracht. Met de opdracht wordt een JSON gegenereerd, die u zo nodig kunt bijwerken om de back-upconfiguratie voor uw AKS-cluster 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 naamruimten worden overgeslagen uit de back-upconfiguratie en niet geconfigureerd voor back-ups: kube-system, kube-node-lease, kube-public.

  1. Bereid de relevante aanvraag voor met behulp van de relevante kluis, beleid, AKS-cluster, back-upconfiguratie en momentopnameresourcegroep met behulp van 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
    

Gebruik nu de JSON-uitvoer van deze opdracht om een back-up voor het AKS-cluster te configureren.

Vereiste machtigingen toewijzen en valideren

Backup Vault maakt gebruik van een beheerde identiteit voor toegang tot andere Azure-resources. Voor het configureren van een back-up van het AKS-cluster vereist de beheerde identiteit van de Backup-kluis een set machtigingen voor het AKS-cluster en resourcegroepen, waarbij momentopnamen worden gemaakt en beheerd. Het AKS-cluster vereist ook toestemming voor de resourcegroep Momentopname.

Alleen door het systeem toegewezen beheerde identiteit wordt momenteel ondersteund voor back-up (zowel Back-upkluis als AKS-cluster). Een door het systeem toegewezen beheerde identiteit is beperkt tot één per resource en is gekoppeld aan de levenscyclus van deze resource. U kunt machtigingen verlenen aan de beheerde identiteit met behulp van op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC). Beheerde identiteit is een service-principal van een speciaal type dat alleen kan worden gebruikt met Azure-resources. Meer informatie over beheerde identiteiten.

Wanneer de aanvraag is voorbereid, moet u eerst controleren of de vereiste rollen zijn toegewezen aan de hierboven genoemde resources door de volgende opdracht 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 de volgende opdracht 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, moet u opnieuw valideren met behulp van de volgende validatie voor de back-upopdracht :

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

Een on-demand back-up uitvoeren

Voer az dataprotection backup-instance list-from-resourcegraph -- de opdracht uit om het relevante back-upexemplaren op te halen waarop u een back-up wilt activeren.

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

Activeer nu een back-up op aanvraag voor het back-upexemplaren door de volgende opdracht uit te voeren:

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

Taken bijhouden

Volg back-uptaken met de az dataprotection job opdracht. U kunt alle taken weergeven en een bepaalde taakdetails ophalen.

U kunt Resource Graph ook gebruiken om alle taken in alle abonnementen, resourcegroepen en Back-upkluizen bij te houden door de az dataprotection job list-from-resourcegraph opdracht uit te voeren om de relevante taak op te halen

Voor back-ups op aanvraag:

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-ups:

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

Volgende stappen