Compartilhar via


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

Este artigo descreve como configurar e fazer backup AKS (Serviço de Kubernetes do Azure) usando CLI do Azure. Você também pode fazer backup do AKS usando Azure PowerShell.

Backup do Azure agora permite fazer backup de clusters do 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 dá suporte apenas a volumes persistentes baseados em disco Azure (habilitados pelo driver CSI). Os backups são armazenados apenas no armazenamento de dados operacional (no locatário) e não são movidos para um cofre. O cofre de backup e o cluster do 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 contém os recursos do cluster AKS, enquanto os instantâneos de volume persistente são armazenados no grupo de recursos. O cluster do AKS e os locais de armazenamento precisam residir na mesma região. Saiba como criar um contêiner de blob.

  • No momento, o backup do AKS dá suporte ao backup uma vez por dia. Ele também dá suporte a backups mais frequentes (em intervalos de 4, 8 e 12 horas) por dia. Essa solução permite que você mantenha seus dados para restauração por até 360 dias. Saiba como criar uma política de backup.

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

  • Verifique se Microsoft.KubernetesConfiguration, Microsoft.DataProtection e Microsoft.ContainerService estão registrados para sua assinatura antes de iniciar as operações de configuração e restauração de backup.

  • Execute todos os pré-requisitos antes de iniciar a operação de backup ou restauração no AKS.

Para saber mais sobre os cenários com suporte, as limitações e a disponibilidade, confira 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 Banco de Dados do Azure para PostgreSQL e discos do Azure. Os cofres de backup facilitam a organização dos dados de backup, minimizando a sobrecarga de gerenciamento. Os cofres de backup são baseados no modelo Azure Resource Manager de Azure, que fornece recursos aprimorados para ajudar a proteger dados de backup.

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

Observação

Embora o cofre selecionado possa ter a configuração de redundância global, atualmente o backup para AKS oferece suporte apenas para o Nível Operacional. Todos os backups são armazenados em sua assinatura na mesma região do cluster do 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"

Depois que a criação do cofre for concluída, crie uma política de backup para proteger os clusters do Azure Kubernetes Service (AKS).

Criar uma política de backup

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. Esse 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 do AKS, o valor padrão para o disparador é um disparador agendado a cada hora, definido para 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 diversos backups diários. Se precisar de uma frequência maior de backups, escolha a Frequência de backup por hora, que tem a capacidade de fazer backups com intervalos a 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 o horário de início do backup e não o horário em que o backup é concluído. O agendamento do backup segue o formato de duração ISO 8601. No entanto, não há suporte para o prefixo R de intervalo repetido, pois os backups são configurados para serem executados indefinidamente. Qualquer valor especificado com R será ignorado.

Após baixar o modelo como um arquivo JSON, é possível editá-lo conforme necessário para agendamento e retenção. Depois, crie uma política com o JSON resultante. Se você quiser editar a frequência por hora ou o período de retenção, use os comandos az dataprotection backup-policy trigger set e/ou az dataprotection backup-policy retention-rule set.

Observação

Para armazenar seus dados de backup na camada do Cofre para serem mantidos a longo prazo para fins de conformidade ou para recuperação de desastre regional 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 Cofre.

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 Vault tier 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 da política tiver todos os valores necessários, crie uma política com base no objeto de política usando o comando az dataprotection backup-policy create.

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

Preparar o cluster do AKS para backup

Depois que o cofre e a criação da política forem concluídos, execute os seguintes pré-requisitos para preparar o cluster do AKS para backup:

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

    O backup para AKS armazena os recursos do Kubernetes em um contêiner de blob na forma de backups. Para preparar o cluster do AKS para backup, você precisa instalar uma extensão no cluster. Essa 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
    

    Após a criação da conta de armazenamento, crie um contêiner de blob internamente 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 um ponto de extremidade privado, ao criar uma conta de armazenamento e uma contêiner de blobs.

    Observação

    1. A conta de armazenamento e o cluster do 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 pelo backup para AKS).
    3. Se o cluster do AKS de origem ou destino estiver em uma rede virtual privada, você precisará criar um ponto de extremidade privado para conectar a conta de armazenamento com o cluster do AKS.
  2. Instalar extensão de backup.

    A Extensão de Backup é obrigatória para ser instalada no cluster do AKS para executar as 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. Essa extensão requer a conta de armazenamento e o contêiner de blob como entradas para 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
    

Caso o cluster do AKS esteja dentro de uma rede virtual, você precisará criar um ponto de extremidade privado, conectando a conta de armazenamento à rede virtual na qual o cluster do AKS reside.

#Fetch the Subnet ID using the name of the virtual network and subnet in which cluster resides 
$PESubnetId = az network vnet subnet show --resource-group $aksMCResourceGroup --vnet-name $aksVnetName  --name $PESubnetName --query 'id' --output tsv

#Create a Private Endpoint between Storage Account and the Virtual Network.
az network private-endpoint create `
  --resource-group $aksclusterresourcegroup `
  --name $StoragePrivateEndpoint `
  --vnet-name $aksVnetName `
  --subnet $PESubnetId `
  --private-connection-resource-id $(az storage account show --nameD $storageaccount --resource-group $storageaccountresourcegroup --query "id" --output tsv) `
  --group-ids "blob" `
  --connection-name "StoragePESharedVNetConnection"

Como parte da instalação da extensão, uma identidade de usuário é criada no grupo de recursos do pool de nós do cluster do AKS. Para que a extensão acesse a conta de armazenamento, você precisa fornecer a essa identidade a função de Colaborador de Dados do 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
  1. Habilitar o acesso confiável

    Para que o Cofre de Backup se conecte ao cluster do 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 do 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 do AKS no estado pronto para backup, agora você pode começar a fazer backup do cluster do AKS.

Preparar a solicitação

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

  1. Prepare a configuração de backup para definir quais recursos do cluster terão o backup feito usando o comando az dataprotection backup-instance initialize-backupconfig. O comando gera um JSON, o qual pode ser atualizado para definir a configuração de backup do 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 são configurados para backups: kube-system, kube-node-lease, kube-public.

  1. Prepare a solicitação relevante usando o cofre, a política, o cluster AKS, a configuração de backup e o grupo de recursos de instantâneos relevantes usando o comando 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
    

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

Atribuir permissões necessárias e validar

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

Somente a identidade gerenciada atribuída pelo sistema é suportada atualmente para backup (tanto para o Cofre de Backup quanto para o cluster do AKS). Uma identidade gerenciada atribuída pelo sistema é restrita a uma por recurso e está vinculada ao ciclo de vida desse recurso. Você pode conceder permissões à identidade gerenciada usando o controle de acesso baseado em funções 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.

Quando a solicitação estiver preparada, primeiro você precisará executar o seguinte comando para validar se as funções necessárias estão atribuídas aos recursos mencionados acima:

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 algumas permissões ausentes, 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, faça a revalidação usando o seguinte comando de validar para backup:

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

Executar um backup sob demanda

Para buscar a instância de backup relevante na qual você deseja disparar um backup, execute o comando 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

Agora, dispare 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

Configurar o backup usando um único comando CLI do Azure

Backup do Azure fornece uma experiência simplificada para configurar a proteção de backup para clusters AKS (Serviço de Kubernetes do Azure) usando um único comando CLI do Azure.

Observação

Este procedimento é uma abordagem alternativa. A abordagem anterior para criar instâncias de backup usando az dataprotection backup-instance initialize-backupconfig o comando continua funcionando normalmente.

A configuração de backup para clusters do AKS exige que você conclua várias etapas manuais, incluindo instalação de extensão de backup, provisionamento de recursos de armazenamento, cofre de backup e criação de política, configuração do Acesso Confiável entre o cluster do AKS e o cofre de backup e inicialização da instância de backup.

Para simplificar essa configuração de backup, Microsoft fornece uma abordagem alternativa para habilitar a proteção de backup para um cluster do AKS executando o seguinte comando:

az dataprotection enable-backup trigger \
--datasource-type AzureKubernetesService \
--datasource-id /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ContainerService/managedClusters/<aks-cluster-name>

Quando você executa esse comando, Backup do Azure executa automaticamente o seguinte fluxo de trabalho de configuração:

  • Validar o estado do cluster do AKS e a compatibilidade de backup
  • Criando ou reutilizando um grupo de recursos de backup específico da região
  • Instalando a extensão backup no cluster do AKS (se ainda não estiver presente)
  • Criando ou reutilizando recursos de armazenamento necessários para backup
  • Criando ou reutilizando um cofre de backup e uma política de backup
  • Habilitar o Acesso Confiável entre o cofre de backup e o cluster do AKS
  • Inicializar e criar a instância de backup

Fornecer parâmetros opcionais de configuração de backup

Opcionalmente, você pode fornecer um arquivo de configuração para usar recursos de backup existentes ou aplicar configurações personalizadas durante a configuração de backup.

Observação

Para executar esse comando, você deve estar na CLI versão 1.9.0 e superior. Siga estas etapas para instalar ou atualizar sua versão da CLI:

  • Instalação pela primeira vez: az extension add -n dataprotection
  • Atualize se já estiver instalado: az extension add -n dataprotection --upgrade
  • Verificar a versão (deve ser >= 1.9.0): az extension show -n dataprotection --query version -o tsv

Execute o seguinte comando para habilitar o backup usando um arquivo de configuração:

az dataprotection enable-backup trigger \
--datasource-type AzureKubernetesService \
--datasource-id /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ContainerService/managedClusters/<aks-cluster-name> \
--backup-strategy <Strategy>\ 
--backup-configuration-file @config.json

O arquivo de configuração pode incluir os seguintes parâmetros:

Parâmetro Descrição
backupVaultId Usar um cofre de backup existente
backupPolicyId Usar uma política de backup existente
storageAccountResourceId Usar uma conta de armazenamento existente
blobContainerName Especificar um nome de contêiner personalizado
backupResourceGroupId Usar um grupo de recursos existente
tags Aplicar tags aos recursos criados

Exemplo de arquivo de configuração:

{
     "tags": {
     "Owner": "azure@microsoft.com",
     "Environment": "Production"
    }
}

Estratégias de backup com suporte

Execute o seguinte comando para configurar o backup usando uma estratégia predefinida:

az dataprotection enable-backup trigger \
--datasource-type AzureKubernetesService \
--datasource-id /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ContainerService/managedClusters/<aks-cluster-name> \
--backup-strategy DisasterRecovery\

Você pode escolher entre as seguintes estratégias de backup predefinidas:

Estratégia Descrição
Week (padrão) Retém backups no repositório operacional por 7 dias
Month Retém backups no repositório operacional por 30 dias
DisasterRecovery Retém backups por 7 dias no repositório operacional e por 90 dias no repositório de Vault.
Personalizado Usa o cofre de backup e a política existentes

Com a estratégia personalizada , você precisará usar o arquivo de configuração mencionado acima.

Para obter mais detalhes, verifique o comando da CLI aqui.

Acompanhamento de trabalhos

Acompanhe os trabalhos de backup executando o comando az dataprotection job. Você pode listar todos os trabalhos e buscar um detalhe de trabalho específico.

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

Para o 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 o 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óximas etapas