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.DataProtection
enMicrosoft.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:
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
- Het opslagaccount en het AKS-cluster moeten zich in dezelfde regio en hetzelfde abonnement bevinden.
- De blobcontainer mag geen eerder gemaakte bestandssystemen bevatten (behalve gemaakt door back-up voor AKS).
- 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.
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
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:
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.
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