Partilhar via


Fazer backup do Serviço Kubernetes do Azure usando a CLI do Azure

Este artigo descreve como configurar e fazer backup do Serviço Kubernetes do Azure (AKS) usando a CLI do Azure.

O Backup do Azure agora permite fazer backup de clusters AKS (recursos de cluster e volumes persistentes anexados ao cluster) usando uma extensão de backup, que deve ser instalada no cluster. O cofre de backup se comunica com o cluster por meio dessa extensão de backup para executar operações de backup e restauração.

Antes de começar

  • Atualmente, o backup do AKS suporta apenas volumes persistentes baseados em disco do Azure (habilitados pelo driver CSI). Os backups são armazenados apenas no armazenamento de dados operacional (em seu locatário) e não são movidos para um cofre. O cofre de backup e o cluster AKS devem estar na mesma região.

  • O backup do AKS usa um contêiner de blob e um grupo de recursos para armazenar os backups. O contêiner de blob tem os recursos de cluster AKS armazenados nele, enquanto os instantâneos de volume persistente são armazenados no grupo de recursos. O cluster AKS e os locais de armazenamento devem residir na mesma região. Saiba como criar um contêiner de blob.

  • Atualmente, o backup do AKS suporta backup uma vez por dia. Ele também suporta backups mais frequentes (a cada intervalos de 4, 8 e 12 horas) por dia. Esta solução permite-lhe reter os seus dados para restauro até 360 dias. Aprenda a criar uma política de backup.

  • Você deve instalar a extensão de backup para configurar operações de backup e restauração em um cluster AKS. Saiba mais sobre a Extensão de Backup.

  • Certifique-se de que Microsoft.KubernetesConfiguration, Microsoft.DataProtectione Microsoft.ContainerService estão registrados para sua assinatura antes de iniciar a configuração de backup e as operações de restauração.

  • Certifique-se de executar todos os pré-requisitos antes de iniciar a operação de backup ou restauração para backup AKS.

Para obter mais informações sobre os cenários, limitações e disponibilidade suportados, consulte a matriz de suporte.

Criar um cofre de backup

Um cofre de Backup é uma entidade de gerenciamento no Azure que armazena dados de backup para várias cargas de trabalho mais recentes suportadas pelo Backup do Azure, como o Banco de Dados do Azure para servidores PostgreSQL e Discos do Azure. Os cofres de backup facilitam a organização dos dados de backup e, ao mesmo tempo, minimizam a sobrecarga de gerenciamento. Os cofres de backup são baseados no modelo do Azure Resource Manager do Azure, que fornece recursos aprimorados para ajudar a proteger os dados de backup.

Antes de criar um cofre de backup, escolha a redundância de armazenamento dos dados no cofre e, em seguida, crie o cofre de backup com essa redundância de armazenamento e o local. Saiba mais sobre como criar um cofre de backup.

Nota

Embora o cofre selecionado possa ter a configuração de redundância global, o backup para AKS atualmente suporta apenas a camada operacional. Todos os backups são armazenados em sua assinatura na mesma região do cluster AKS e não são copiados para o armazenamento do cofre de backup.

Para criar o cofre de backup, execute o seguinte comando:

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

Quando a criação do cofre estiver concluída, crie uma política de backup para proteger os clusters AKS.

Criar uma política de cópias de segurança

Para entender os componentes internos de uma política de backup para o backup do AKS, recupere o modelo de política usando o comando az dataprotection backup-policy get-default-policy-template. Este comando retorna um modelo de política padrão para um determinado tipo de fonte de dados. Use este modelo de política para criar uma nova política.

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

O modelo de política consiste em um critério de gatilho (que decide os fatores para disparar o trabalho de backup) e um ciclo de vida (que decide quando excluir, copiar ou mover os backups). No backup AKS, o valor padrão para trigger é um gatilho horário agendado a cada 4 horas (PT4H) e a retenção de cada backup é de sete dias.

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


O backup para AKS fornece vários backups por dia. Se você precisar de backups mais frequentes, escolha a frequência de backup por hora que tem a capacidade de fazer backups com intervalos de cada 4, 6, 8 ou 12 horas. Os backups são agendados com base no intervalo de tempo selecionado.

Importante

A hora do dia indica a hora de início do backup e não a hora em que o backup é concluído.

Depois de baixar o modelo como um arquivo JSON, você pode editá-lo para agendamento e retenção, conforme necessário. Em seguida, crie uma nova política com o JSON resultante. Se quiser editar a frequência horária ou o período de retenção, use os az dataprotection backup-policy trigger set comandos e/ou az dataprotection backup-policy retention-rule set .

Nota

Para armazenar seus dados de backup na camada do Vault para retê-los por longo prazo para fins de conformidade ou para recuperação de desastres regionais por meio da restauração entre regiões, você precisará definir uma nova regra de retenção no modelo padrão definindo por quanto tempo o backup deve ser armazenado no Vault.

Vamos dar um exemplo em que atualizaremos o modelo padrão para a política de backup e adicionaremos uma regra de retenção para manter o primeiro backup bem-sucedido por dia na camada do Vault por 30 dias.

Use o comando az dataprotection backup-policy retention-rule create-lifecycle para criar uma regra de retenção e, em seguida, adicione a regra de retenção ao modelo de política de backup com o comando ''


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

Quando o JSON de política tiver todos os valores necessários, prossiga para criar uma nova política a partir do objeto de política usando o az dataprotection backup-policy create comando.

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

Preparar o cluster AKS para backup

Quando o vault e a criação da política estiverem concluídos, você precisará executar os seguintes pré-requisitos para preparar o cluster AKS para backup:

  1. Crie uma conta de armazenamento e um contêiner de blob.

    O backup para AKS armazena recursos do Kubernetes em um contêiner de blob como backups. Para preparar o cluster AKS para backup, você precisa instalar uma extensão no cluster. Esta extensão requer a conta de armazenamento e o contêiner de blob como entradas.

    Para criar uma nova conta de armazenamento, execute o seguinte comando:

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

    Quando a criação da conta de armazenamento estiver concluída, crie um contêiner de blob dentro executando o seguinte comando:

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

    Saiba como habilitar ou desabilitar recursos específicos, como ponto de extremidade privado, ao criar uma conta de armazenamento e um contêiner de blob.

    Nota

    1. A conta de armazenamento e o cluster AKS devem estar na mesma região e assinatura.
    2. O contêiner de blob não deve conter nenhum sistema de arquivos criado anteriormente (exceto criado por backup para AKS).
    3. Se o cluster AKS de origem ou destino estiver em uma rede virtual privada, você precisará criar o Private Endpoint para conectar a conta de armazenamento ao cluster AKS.
  2. Instale a extensão de backup.

    A Extensão de Backup é obrigatória para ser instalada no cluster AKS para executar quaisquer operações de backup e restauração. A Extensão de Backup cria um namespace dataprotection-microsoft no cluster e usa o mesmo para implantar seus recursos. A extensão requer a conta de armazenamento e o contêiner de blob como entradas para a instalação.

    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
    

    Como parte da instalação da extensão, uma identidade de usuário é criada no Grupo de Recursos do Pool de Nóis do cluster AKS. Para que a extensão acesse a conta de armazenamento, você precisa fornecer essa identidade à função de Colaborador de Dados de Blob de Armazenamento . Para atribuir a função necessária, execute o seguinte comando:

    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. Habilitar acesso confiável

    Para que o cofre de Backup se conecte ao cluster AKS, você deve habilitar o Acesso Confiável , pois ele permite que o cofre de Backup tenha uma linha de visão direta para o cluster AKS.

    Para habilitar o Acesso Confiável, execute o seguinte comando:

    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
    

Configurar backups

Com o cofre de backup e a política de backup criados, e o cluster AKS no estado pronto para backup , agora você pode começar a fazer backup do cluster AKS.

Preparar o pedido

A configuração do backup é realizada em duas etapas:

  1. Prepare a configuração de backup para definir quais recursos de cluster devem ser copiados usando o az dataprotection backup-instance initialize-backupconfig comando. O comando gera um JSON, que você pode atualizar para definir a configuração de backup para seu cluster AKS, conforme necessário.

    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
    }
    

Os namespaces a seguir são ignorados da configuração de backup e não configurados para backups: kube-system, kube-node-lease, kube-public.

  1. Prepare a solicitação relevante usando o vault, a política, o cluster AKS, a configuração de backup e o grupo de recursos de snapshot relevantes usando o az dataprotection backup-instance initialize comando.

    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
    

Agora, use a saída JSON deste comando para configurar o backup para o cluster AKS.

Atribua as permissões necessárias e valide

O cofre de backup usa identidade gerenciada para acessar outros recursos do Azure. Para configurar o backup do cluster AKS, a identidade gerenciada do cofre de backup requer um conjunto de permissões no cluster AKS e grupos de recursos, onde os instantâneos são criados e gerenciados. Além disso, o cluster AKS requer permissão no grupo de recursos de instantâneo.

Atualmente, apenas a identidade gerenciada atribuída pelo sistema é suportada para backup (cofre de backup e cluster AKS). Uma identidade gerenciada atribuída ao sistema é restrita a uma por recurso e está vinculada ao ciclo de vida desse recurso. Você pode conceder permissões para a identidade gerenciada usando o controle de acesso baseado em função do Azure (Azure RBAC). A identidade gerenciada é uma entidade de serviço de um tipo especial que só pode ser usada com recursos do Azure. Saiba mais sobre identidades gerenciadas.

Com a solicitação preparada, primeiro você precisa validar se as funções necessárias são atribuídas aos recursos mencionados acima, executando o seguinte comando:

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

Se a validação falhar e houver certas permissões faltando, você poderá atribuí-las executando o seguinte comando:

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

Depois que as permissões forem atribuídas, revalide usando o seguinte comando validate for backup :

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

Executar uma cópia de segurança a pedido

Para buscar a instância de backup relevante na qual você deseja disparar um backup, execute o az dataprotection backup-instance list-from-resourcegraph -- comando.

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

Agora, acione um backup sob demanda para a instância de backup executando o seguinte comando:

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

Acompanhamento de trabalhos

Rastreie os trabalhos de backup que executam o az dataprotection job comando. Você pode listar todos os trabalhos e buscar um detalhe específico do trabalho.

Você também pode usar o Gráfico de Recursos para acompanhar todos os trabalhos em todas as assinaturas, grupos de recursos e cofres de backup executando o az dataprotection job list-from-resourcegraph comando para obter o trabalho relevante

Para backup sob demanda:

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

Para backup agendado:

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

Próximos passos