Резервное копирование Служба Azure Kubernetes с помощью Azure CLI

В этой статье описывается настройка и резервное копирование Служба Azure Kubernetes (AKS) с помощью Azure CLI.

Azure Backup теперь позволяет создавать резервные копии кластеров AKS (ресурсы кластера и постоянные тома, подключенные к кластеру) с помощью расширения резервного копирования, которое должно быть установлено в кластере. Хранилище резервных копий взаимодействует с кластером с помощью этого расширения резервного копирования для выполнения операций резервного копирования и восстановления.

Перед началом работы

  • В настоящее время резервное копирование AKS поддерживает только постоянные тома на основе дисков Azure (включено драйвером CSI). Резервные копии хранятся только в операционном хранилище данных (в клиенте) и не перемещаются в хранилище. Хранилище резервных копий и кластер AKS должны находиться в одном регионе.

  • Резервное копирование AKS использует контейнер BLOB-объектов и группу ресурсов для хранения резервных копий. Контейнер больших двоичных объектов содержит ресурсы кластера AKS, хранящиеся в нем, а моментальные снимки сохраняемого тома хранятся в группе ресурсов. Кластер AKS и расположения хранилища должны находиться в одном регионе. Узнайте, как создать контейнер больших двоичных объектов.

  • В настоящее время резервное копирование AKS поддерживает однодневное резервное копирование. Он также поддерживает более частые резервные копии (каждые 4, 8 и 12 часов интервалы) в день. Оно позволяет хранить данные для восстановления до 360 дней. Узнайте, как создать политику резервного копирования.

  • Чтобы настроить операции резервного копирования и восстановления в кластере AKS, необходимо установить расширение резервного копирования. Дополнительные сведения о расширении резервного копирования.

  • Перед началом операций резервного копирования и TrustedAccessPreview восстановления убедитесь, что Microsoft.KubernetesConfigurationMicrosoft.DataProtectionфлаг Microsoft.ContainerService функции зарегистрирован для подписки.

  • Перед запуском операции резервного копирования или восстановления для резервного копирования AKS необходимо выполнить все необходимые компоненты.

Дополнительные сведения о поддерживаемых сценариях, ограничениях и доступности см. в матрице поддержки.

создание хранилища Azure Backup;

Хранилище резервных копий — это сущность управления в Azure, в которой хранятся данные резервного копирования для различных новых рабочих нагрузок, поддерживаемых Azure Backup, таких как База данных Azure для PostgreSQL серверы и диски Azure. Они упрощают организацию данных резервного копирования и одновременно снижают накладные затраты на управление. Хранилища резервных копий основаны на модели Azure Resource Manager в экосистеме Azure, которая предоставляет расширенные возможности для защиты данных, резервная копия которых создается.

Перед созданием хранилища резервных копий выберите избыточность данных в хранилище, а затем создайте хранилище резервных копий с этой избыточностью хранилища и расположением. Дополнительные сведения о создании хранилища Azure Backup.

Примечание.

Хотя выбранное хранилище может иметь глобальный уровень избыточности , резервное копирование для AKS в настоящее время поддерживает только операционный уровень . Все резервные копии хранятся в подписке в том же регионе, что и кластер AKS, и они не копируются в хранилище хранилища резервных копий.

Чтобы создать хранилище резервных копий, выполните следующую команду:

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

После завершения создания хранилища создайте политику резервного копирования для защиты кластеров AKS.

создание политики архивации;

Чтобы понять внутренние компоненты политики резервного копирования для резервного копирования AKS, получите шаблон политики с помощью команды az dataprotection backup-policy get-default-policy-template. Эта команда возвращает шаблон политики по умолчанию для заданного типа источника данных. Используйте этот шаблон политики для создания новой политики.

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

Шаблон политики состоит из условий триггера (которые определяют факторы для запуска задания резервного копирования) и жизненного цикла (который решает, когда следует удалять, копировать или перемещать резервные копии). В резервном копировании AKS значение по умолчанию для триггера — это запланированный почасовой триггер каждые 4 часа (PT4H), а срок хранения каждой резервной копии составляет 365 дней.

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


Резервное копирование для AKS обеспечивает несколько резервных копий в день. Если требуется более частое резервное копирование, выберите частоту почасового резервного копирования, которая имеет возможность выполнять резервные копии с интервалами каждые 4, 6, 8 или 12 часов. Резервные копии запланированы на основе выбранного интервала времени.

Например, если выбрать каждые 4 часа, резервные копии выполняются примерно в интервале каждые 4 часа, чтобы резервные копии распределялись одинаково в течение дня. Если однодневное резервное копирование достаточно, выберите частоту ежедневного резервного копирования. В ежедневной частоте резервного копирования можно указать время дня, когда необходимо выполнить резервное копирование.

Внимание

Указываемое время суток обозначает время запуска резервного копирования, а не время, когда создание резервной копии будет завершено.

Примечание.

Хотя выбранное хранилище имеет глобальный параметр избыточности, резервное копирование для AKS в настоящее время поддерживает только хранилище данных моментальных снимков. Все резервные копии хранятся в группе ресурсов в подписке и не копируются в хранилище хранилища резервных копий.

После скачивания шаблона в виде JSON-файла его можно изменить для планирования и хранения по мере необходимости. Затем создайте новую политику с этим JSON-файлом. Если вы хотите изменить почасовую частоту или период хранения, используйте az dataprotection backup-policy trigger set команды или az dataprotection backup-policy retention-rule set команды. После того как json политики содержит все необходимые значения, перейдите к созданию новой политики из объекта политики с помощью az dataprotection backup-policy create команды.

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

Подготовка кластера AKS к резервному копированию

После завершения создания хранилища и политики необходимо выполнить следующие предварительные требования для подготовки кластера AKS к резервному копированию:

  1. Создайте учетную запись хранения и контейнер BLOB-объектов.

    Резервное копирование для AKS сохраняет ресурсы Kubernetes в контейнере BLOB-объектов в качестве резервных копий. Чтобы подготовить кластер AKS к резервному копированию, необходимо установить расширение в кластере. Для этого расширения требуется учетная запись хранения и контейнер БОЛЬШИХ двоичных объектов в качестве входных данных.

    Чтобы создать новую учетную запись хранения, выполните следующую команду:

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

    После завершения создания учетной записи хранения создайте контейнер BLOB-объектов внутри, выполнив следующую команду:

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

    Узнайте, как включить или отключить определенные функции, такие как частная конечная точка, при создании учетной записи хранения и контейнера BLOB-объектов.

    Примечание.

    1. Учетная запись хранения и кластер AKS должны находиться в одном регионе и подписке.
    2. Контейнер BLOB-объектов не должен содержать ранее созданные файловые системы (за исключением резервных копий для AKS).
    3. Если исходный или целевой кластер AKS находится в частной виртуальной сети, необходимо создать частную конечную точку для подключения учетной записи хранения к кластеру AKS.
  2. Установите расширение резервного копирования.

    Расширение резервного копирования является обязательным для установки в кластере AKS для выполнения любых операций резервного копирования и восстановления. Расширение резервного копирования создает пространство dataprotection-microsoft имен в кластере и использует то же самое для развертывания своих ресурсов. Для установки расширение требуется учетная запись хранения и контейнер BLOB-объектов.

    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
    

    В рамках установки расширения удостоверение пользователя создается в группе ресурсов пула узлов кластера AKS. Чтобы получить доступ к учетной записи хранения, необходимо указать это удостоверение служба хранилища роль участника данных BLOB-объектов. Чтобы назначить требуемую роль, выполните следующую команду:

    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. Включение доверенного доступа

    Чтобы хранилище резервных копий было подключено к кластеру AKS, необходимо включить доверенный доступ , так как это позволяет хранилищу резервного копирования иметь прямую линию зрения к кластеру AKS.

    Чтобы включить доверенный доступ, выполните следующую команду:

    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
    

Настройка резервного копирования.

С помощью созданной политики резервного копирования и резервного копирования и кластера AKS в состоянии готовности к резервному копированию теперь можно начать резервное копирование кластера AKS.

Подготовка запроса

Настройка резервного копирования выполняется двумя шагами.

  1. Подготовьте конфигурацию резервного копирования, чтобы определить, какие ресурсы кластера необходимо создать резервную копию с помощью az dataprotection backup-instance initialize-backupconfig команды. Команда создает JSON, который можно обновить, чтобы определить конфигурацию резервного копирования для кластера 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. Подготовьте соответствующий запрос с помощью соответствующего хранилища, политики, кластера AKS, конфигурации резервного копирования и группы ресурсов моментальных снимков с помощью az dataprotection backup-instance initialize команды.

    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
    

Теперь используйте выходные данные JSON этой команды для настройки резервного копирования для кластера AKS.

Назначение необходимых разрешений и проверка

Для доступа к другим ресурсам Azure хранилище Azure Backup использует управляемое удостоверение. Чтобы настроить резервное копирование кластера AKS, управляемому удостоверению хранилища архивации требуется набор разрешений для кластера AKS и групп ресурсов, в которых создаются и управляются моментальные снимки. Кроме того, кластер AKS требует разрешения на группу ресурсов моментальных снимков.

Только управляемое удостоверение, назначаемое системой, в настоящее время поддерживается для резервного копирования (как для хранилища резервных копий, так и кластера AKS). Система назначает по одному управляемому удостоверению на ресурс, привязывая их к жизненному циклу этого ресурса. Управляемому удостоверению можно предоставить разрешения, используя управление доступом на основе ролей Azure (Azure RBAC). Управляемое удостоверение — это особый субъект-служба, который можно использовать только с ресурсами Azure. Дополнительные сведения об управляемых удостоверениях.

Подготовив запрос, сначала необходимо проверить, назначены ли необходимые роли ресурсам, упоминание выше, выполнив следующую команду:

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

Если проверка завершается ошибкой и отсутствуют определенные разрешения, их можно назначить, выполнив следующую команду:

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

После назначения разрешений повторно выполните следующую проверку для команды резервного копирования :

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

Выполнение резервного копирования по требованию

Чтобы получить соответствующий экземпляр резервного копирования, в котором требуется активировать резервную копию, выполните az dataprotection backup-instance list-from-resourcegraph -- команду.

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

Теперь активируйте резервное копирование по запросу для экземпляра резервного копирования, выполнив следующую команду:

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

Отслеживание заданий

Отслеживание заданий резервного копирования, az dataprotection job выполняющих команду. Можно вывести список всех заданий и получить сведения о конкретном задании.

Вы также можете использовать Resource Graph для отслеживания всех заданий во всех подписках, группах ресурсов и хранилищах резервных копий, выполнив az dataprotection job list-from-resourcegraph команду, чтобы получить соответствующее задание.

Для резервного копирования по запросу:

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

Для запланированного резервного копирования:

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

Следующие шаги