Freigeben über


Sichern von Azure Kubernetes Service mithilfe von Azure CLI

In diesem Artikel erfahren Sie, wie Sie Azure Kubernetes Service (AKS) mit Azure CLI konfigurieren und sichern.

Mit Azure Backup können Sie jetzt AKS-Cluster (Clusterressourcen und an den Cluster angefügte persistente Volumes) mithilfe einer Sicherungserweiterung sichern. Diese Erweiterung muss im Cluster installiert werden. Der Backup-Tresor kommuniziert mit dem Cluster über diese Sicherungserweiterung, um Sicherungs- und Wiederherstellungsvorgänge durchzuführen.

Vorbereitung

  • Derzeit unterstützt die AKS-Sicherung nur Azure Disk-basierte persistente Volumes (aktiviert durch den CSI-Treiber). Die Sicherungen werden nur im operativen Datenspeicher (in Ihrem Mandanten) gespeichert und nicht in einen Tresor verschoben. Der Sicherungstresor und der AKS-Cluster sollten sich in derselben Region befinden.

  • Die AKS-Sicherung verwendet einen Blobcontainer und eine Ressourcengruppe, um die Sicherungen zu speichern. Im Blobcontainer sind die AKS-Clusterressourcen gespeichert, während die Momentaufnahmen des persistenten Volumes in der Ressourcengruppe gespeichert werden. Der AKS-Cluster und die Speicherorte müssen sich in derselben Region befinden. Erfahren Sie, wie Sie einen Blobcontainer erstellen.

  • Derzeit unterstützt die AKS-Sicherung das Anlegen von Sicherungen einmal pro Tag. Darüber hinaus werden häufigere Sicherungen (in Intervallen von 4, 8 und 12 Stunden) pro Tag unterstützt. Mit dieser Lösung können Sie Ihre Daten bis zu 360 Tage lang für die Wiederherstellung aufbewahren. Erfahren Sie, wie Sie eine Sicherungsrichtlinie erstellen.

  • Sie müssen die Sicherungserweiterung installieren, um Sicherungs- und Wiederherstellungsvorgänge in einem AKS-Cluster zu konfigurieren. Erfahren Sie mehr über die Sicherungserweiterung.

  • Stellen Sie sicher, dass Microsoft.KubernetesConfiguration, Microsoft.DataProtection und Microsoft.ContainerService für Ihr Abonnement registriert sind, bevor Sie die Sicherungskonfigurations- und Wiederherstellungsvorgänge initiieren.

  • Stellen Sie sicher, dass Sie alle Voraussetzungen erfüllen, bevor Sie einen Sicherungs- oder Wiederherstellungsvorgang für die AKS-Sicherung initiieren.

Weitere Informationen zu den unterstützten Szenarien sowie zu Einschränkungen und zur Verfügbarkeit finden Sie in der Supportmatrix.

Erstellen eines Sicherungstresors

Ein Sicherungstresor ist eine Verwaltungsentität in Azure, die Sicherungsdaten für verschiedene neuere Workloads speichert, die von Azure Backup unterstützt werden, z. B. Azure Database for PostgreSQL Server und Azure-Datenträger. Sicherungstresore vereinfachen die Organisation Ihrer Sicherungsdaten und minimieren gleichzeitig den Verwaltungsaufwand. Sicherungstresore basieren auf dem Azure Resource Manager-Modell von Azure, das erweiterte Funktionen bietet, die das Schützen von Sicherungsdaten erleichtern.

Wählen Sie vor dem Erstellen eines Backup-Tresors die Speicherredundanz der Daten im Tresor aus, und erstellen Sie dann den Sicherungstresor mit dieser Speicherredundanz und dem Speicherort. Weitere Informationen finden Sie unter Erstellen eines Sicherungstresors.

Hinweis

Obwohl der ausgewählte Tresor möglicherweise über die Einstellung globale Redundanz verfügt, unterstützt die Sicherung für AKS derzeit nur die betriebsbezogene Ebene. Alle Sicherungen werden in Ihrem Abonnement in derselben Region wie der AKS-Cluster gespeichert und nicht in den Backup-Tresor kopiert.

Führen Sie zum Erstellen des Sicherungstresors den folgenden Befehl aus:

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

Erstellen Sie nach Abschluss der Tresorerstellung eine Sicherungsrichtlinie zum Schutz von AKS-Clustern.

Erstellen einer Sicherungsrichtlinie

Um die inneren Komponenten einer Sicherungsrichtlinie für die Sicherung von AKS zu verstehen, rufen Sie die Richtlinienvorlage mit dem Befehl az dataprotection backup-policy get-default-policy-template ab. Dieser Befehl gibt eine Standardrichtlinienvorlage für einen angegebenen DataSource-Typ zurück. Verwenden Sie diese Richtlinienvorlage, um eine neue Richtlinie zu erstellen.

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

Die Richtlinienvorlage besteht aus einem Auslöserkriterium (das die Faktoren zum Auslösen des Sicherungsauftrags bestimmt) und einem Lebenszyklus (der entscheidet, wann die Sicherungen gelöscht, kopiert oder verschoben werden sollen). In der AKS-Sicherung ist der Standardwert für Auslöser ein geplanter stündlicher Auslöser alle 4 Stunden (PT4H), und die Aufbewahrung jeder Sicherung liegt bei sieben Tagen.

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


Die Sicherung für AKS bietet mehrere Sicherungen pro Tag. Wenn Sie häufigere Sicherungen benötigen, wählen Sie die stündliche Sicherungshäufigkeit mit der Möglichkeit, Sicherungen mit Intervallen alle 4, 6, 8, oder 12 Stunden zu erstellen. Die Sicherungen werden basierend auf dem unter Zeitintervall ausgewählten Intervall geplant.

Wichtig

Die Uhrzeit gibt die Startzeit der Sicherung an und nicht die Zeit, zu der die Sicherung abgeschlossen ist.

Nachdem die Vorlage als JSON-Datei heruntergeladen wurde, können Sie sie wie gewünscht zur Planung und Aufbewahrung bearbeiten. Erstellen Sie dann eine neue Richtlinie mit der resultierenden JSON-Datei. Wenn Sie die stündliche Häufigkeit oder die Beibehaltungsdauer bearbeiten möchten, verwenden Sie die Befehle az dataprotection backup-policy trigger set und/oder az dataprotection backup-policy retention-rule set.

Hinweis

Wenn Sie Ihre Sicherungsdaten in der Tresorebene entweder zur langfristigen Aufbewahrung zu Compliancezwecken oder für die regionale Notfallwiederherstellung über die regionsübergreifende Wiederherstellung speichern möchten, müssen Sie in der Standardvorlage eine neue Aufbewahrungsregel definieren, die festlegt, wie lange die Sicherung im Tresor gespeichert werden soll.

Sehen Sie sich ein Beispiel an, in dem Sie die Standardvorlage für die Sicherungsrichtlinie aktualisieren und eine Aufbewahrungsregel hinzufügen, um die erste erfolgreiche Sicherung pro Tag auf Tresorebene für 30 Tage aufzubewahren.

Verwenden Sie den Befehl az dataprotection backup-policy retention-rule create-lifecycle, um eine Aufbewahrungsregel zu erstellen, und fügen Sie dann die Aufbewahrungsregel der Sicherungsrichtlinienvorlage mit dem folgenden Befehl hinzu: ``


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

Sobald die Richtlinien-JSON alle erforderlichen Werte enthält, erstellen Sie mit dem Befehl az dataprotection backup-policy create eine neue Richtlinie aus dem Richtlinienobjekt.

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

Vorbereiten des AKS-Clusters für die Sicherung

Nach Abschluss der Tresor- und Richtlinienerstellung müssen Sie die folgenden Voraussetzungen erfüllen, um den AKS-Cluster für die Sicherung vorzubereiten:

  1. Erstellen eines Speicherkontos und eines Blobcontainers.

    Sicherung für AKS speichert Kubernetes-Ressourcen in einem Blobcontainer als Sicherungen. Um den AKS-Cluster für die Sicherung vorzubereiten, müssen Sie eine Erweiterung im Cluster installieren. Diese Erweiterung erfordert das Speicherkonto und den Blobcontainer als Eingaben.

    Führen Sie den folgenden Befehl aus, um ein neues Speicherkonto zu erstellen:

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

    Wenn die Erstellung des Speicherkontos abgeschlossen ist, erstellen Sie einen Blobcontainer darin, indem Sie den folgenden Befehl ausführen:

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

    Erfahren Sie, wie Sie beim Erstellen eines Speicherkontos und eines Blobcontainers bestimmte Features aktivieren oder deaktivieren, z. B. einen privaten Endpunkt.

    Hinweis

    1. Das Speicherkonto und der AKS-Cluster sollten sich in derselben Region und in demselben Abonnement befinden.
    2. Der Blobcontainer sollte keine zuvor erstellten Dateisysteme enthalten (außer durch Sicherung für AKS erstellt).
    3. Wenn sich Ihr Quell- oder Ziel-AKS-Cluster in einem privaten virtuellen Netzwerk befindet, müssen Sie einen privaten Endpunkt erstellen, um das Speicherkonto mit dem AKS-Cluster zu verbinden.
  2. Installieren einer Sicherungserweiterung.

    Die Sicherungserweiterung muss im AKS-Cluster installiert werden, um Sicherungs- und Wiederherstellungsvorgänge auszuführen. Die Sicherungserweiterung erstellt einen Namespace dataprotection-microsoft im Cluster und verwendet denselben, um die Ressourcen bereitzustellen. Diese Erweiterung erfordert das Speicherkonto und den Blobcontainer als Eingaben für die Installation.

    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
    

    Im Rahmen der Erweiterungsinstallation wird eine Benutzeridentität in der Knotenpool-Ressourcengruppe des AKS-Clusters erstellt. Damit die Erweiterung auf das Speicherkonto zugreifen kann, müssen Sie für diese Identität die Rolle Mitwirkender an Storage-Blobdaten angeben. Um die erforderliche Rolle zuzuweisen, führen Sie diesen Befehl aus:

    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. Aktivieren des vertrauenswürdigen Zugriffs

    Damit der Backup-Tresor eine Verbindung mit dem AKS-Cluster herstellen kann, müssen Sie den vertrauenswürdigen Zugriff aktivieren, da der Sicherungstresor so eine direkte Sichtverbindung zum AKS-Cluster hat.

    Führen Sie den folgenden Befehl aus, um den vertrauenswürdigen Zugriff zu aktivieren:

    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
    

Konfigurieren von Sicherungen

Mit dem erstellten Backup-Tresor, der Sicherungsrichtlinie und dem AKS-Cluster, der sich im Status Bereit für die Sicherung befindet, können Sie jetzt mit der Sicherung Ihres AKS-Clusters beginnen.

Vorbereiten der Anforderung

Die Konfiguration der Sicherung erfolgt in zwei Schritten:

  1. Bereiten Sie die Sicherungskonfiguration vor, um zu definieren, welche Clusterressourcen mithilfe des az dataprotection backup-instance initialize-backupconfig-Befehls gesichert werden sollen. Der Befehl generiert einen JSON-Code, den Sie aktualisieren können, um die Sicherungskonfiguration für Ihren AKS-Cluster nach Bedarf zu definieren.

    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
    }
    

Die folgenden Namespaces werden bei der Sicherungskonfiguration übersprungen und nicht für Sicherungen konfiguriert: kube-system, kube-node-lease, kube-public.

  1. Bereiten Sie die relevante Anforderung mithilfe des entsprechenden Tresors, der Richtlinie, des AKS-Clusters, der Sicherungskonfiguration und Momentaufnahme-Ressourcengruppe mit dem az dataprotection backup-instance initialize-Befehl vor.

    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
    

Verwenden Sie nun die JSON-Ausgabe dieses Befehls, um die Sicherung für den AKS-Cluster zu konfigurieren.

Zuweisen der erforderlichen Berechtigungen und Überprüfen

Der Sicherungstresor verwendet die verwaltete Identität für den Zugriff auf andere Azure-Ressourcen. Um die Sicherung des AKS-Clusters zu konfigurieren, erfordert die verwaltete Identität das Backup-Tresors eine Reihe von Berechtigungen für den AKS-Cluster und die Ressourcengruppen, auf denen Momentaufnahmen erstellt und verwaltet werden. Außerdem erfordert der AKS-Cluster die Berechtigung für die Momentaufnahme-Ressourcengruppe.

Nur die systemseitig zugewiesene verwaltete Identität wird derzeit für Sicherungen unterstützt (sowohl Backup-Tresor als auch AKS-Cluster). Eine systemseitig zugewiesene verwaltete Identität ist auf eine Ressource beschränkt und an den Lebenszyklus dieser Ressource gebunden. Sie können der verwalteten Identität mithilfe der rollenbasierten Zugriffssteuerung von Azure (Azure RBAC) Berechtigungen erteilen. Eine verwaltete Identität ist ein spezieller Dienstprinzipal, der nur zusammen mit Azure-Ressourcen verwendet werden kann. Weitere Informationen zu verwalteten Identitäten.

Nachdem die Anforderung vorbereitet ist, müssen Sie zunächst überprüfen, ob die erforderlichen Rollen den oben genannten Ressourcen zugewiesen sind, indem Sie den folgenden Befehl ausführen:

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

Wenn bei der Überprüfung ein Fehler auftritt und bestimmte Berechtigungen fehlen, können Sie diese zuweisen, indem Sie den folgenden Befehl ausführen:

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

Nachdem die Berechtigungen zugewiesen wurden, können Sie den folgenden Befehl zum Überprüfen der Sicherung erneut durchführen:

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

Ausführen einer On-Demand-Sicherung

Führen Sie den az dataprotection backup-instance list-from-resourcegraph ---Befehl aus, um die relevante Sicherungsinstanz abzurufen, für die Sie eine Sicherung auslösen möchten.

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

Lösen Sie nun eine bedarfsgesteuerte Sicherung für die sicherungsbasierte Instanz aus, indem Sie den folgenden Befehl ausführen:

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

Aufträge nachverfolgen

Verfolgen Sie Sicherungsaufträge, die den az dataprotection job-Befehl ausführen. Sie können alle Aufträge auflisten und ein bestimmtes Auftragsdetail abrufen.

Sie können auch Resource Graph verwenden, um alle Aufträge in allen Abonnements, Ressourcengruppen und Sicherungstresoren nachzuverfolgen, indem Sie den az dataprotection job list-from-resourcegraph-Befehl ausführen, um den relevanten Auftrag abzurufen.

Für eine On-Demand-Sicherung:

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

Für eine geplante Sicherung:

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

Nächste Schritte