Compartilhar via


Restaurar o Serviço de Kubernetes do Azure usando a CLI do Azure

Este artigo descreve como restaurar o cluster do Azure Kubernetes de um ponto de restauração criado pelo Backup do Azure usando a CLI do Azure.

Agora, o Backup do Azure permite fazer backup de clusters do AKS (recursos de cluster e volumes persistentes anexados ao cluster) usando uma extensão de backup, que precisa 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.

Você pode executar a Recuperação no Local Original (OLR) (restauração no cluster do AKS do qual foi feito o backup) e Recuperação de Local Alternativo (ALR) (restauração em um cluster do AKS diferente). Você também pode selecionar os itens a serem restaurados a partir do backup que é Recuperação em Nível de Item (ILR).

Observação

Antes de iniciar uma operação de restauração, o cluster de destino deve ter a Extensão de Backup instalada e o Acesso Confiável habilitado no cofre de Backup. Saiba mais.

Antes de começar

  • O backup do AKS permite a restauração para o cluster do AKS original (cujo backup foi feito) e para um cluster alternativo do AKS. O backup do AKS permite que você execute uma restauração completa e uma restauração no nível do item. Você pode utilizar as configurações de restauração para definir parâmetros com base nos recursos de cluster que serão coletados durante a restauração.

  • Você precisa instalar a extensão de backup no cluster do AKS de destino. Além disso, você precisa habilitar o acesso confiável entre o cofre de Backup e o cluster do AKS.

Para saber mais sobre as limitações e os cenários com suporte, confira a matriz de suporte.

Validar e preparar o cluster do AKS de destino

Antes de iniciar um processo de restauração, você deve validar que o cluster do AKS está preparado para a restauração. Isso inclui a Extensão de Backup a ser instalada com a extensão que tem a permissão na conta de armazenamento em que os backups são armazenados e o Acesso Confiável a ser habilitado entre o cluster do AKS e o cofre de Backup.

Primeiro, execute o seguinte comando para verificar se a Extensão de Backup está instalada no cluster:

az k8s-extension show --name azure-aks-backup --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup

Se a extensão estiver instalada, verifique se ela tem as permissões corretas na conta de armazenamento em que os backups são armazenados:

az role assignment list --all --assignee  $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv)

Se a função não estiver atribuída, você poderá atribuí-la executando o seguinte comando:

az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Account Contributor'  --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccount

Se a Extensão de Backup não estiver instalada, execute o comando de instalação de extensão a seguir com a conta de armazenamento e o contêiner de blobs em que os backups são armazenados como entrada.

az k8s-extension create --name azure-aks-backup --extension-type microsoft.dataprotection.kubernetes --scope cluster --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --release-train stable --configuration-settings blobContainer=$blobcontainer storageAccount=$storageaccount storageAccountResourceGroup=$storageaccountresourcegroup storageAccountSubscriptionId=$subscriptionId

Em seguida, execute o seguinte comando para atribuir a função necessária à extensão na conta de armazenamento:

az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Account Contributor'  --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccount

Verificar o Acesso Confiável

Para verificar se o Acesso Confiável está habilitado entre o cofre de Backup e o cluster do AKS de destino, execute o seguinte comando:

az aks trustedaccess rolebinding list --resource-group $aksclusterresourcegroup --cluster-name $targetakscluster

Se ele não estiver habilitado, execute o seguinte comando para habilitar o Acesso Confiável:

az aks trustedaccess rolebinding create --cluster-name $targetakscluster --name backuprolebinding --resource-group $aksclusterresourcegroup --roles Microsoft.DataProtection/backupVaults/backup-operator --source-resource-id /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/BackupVaults/$backupvault

Restaurar em um cluster do AKS

Busca do ponto de recuperação relevante

Busque todas as instâncias associadas ao cluster do AKS e identifique a que for relevante.

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

Depois que a instância for identificada, busque o ponto de recuperação relevante.

az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvault

Preparar a solicitação de restauração

Para preparar a configuração de restauração e definir os itens a serem restaurados no cluster do AKS de destino, execute o comando az dataprotection backup-instance initialize-restoreconfig.

az dataprotection backup-instance initialize-restoreconfig --datasource-type AzureKubernetesService >restoreconfig.json



{
  "conflict_policy": "Skip",
  "excluded_namespaces": null,
  "excluded_resource_types": null,
  "include_cluster_scope_resources": true,
  "included_namespaces": null,
  "included_resource_types": null,
  "label_selectors": null,
  "namespace_mappings": null,
  "object_type": "KubernetesClusterRestoreCriteria",
  "persistent_volume_restore_mode": "RestoreWithVolumeData"
}

Agora prepare a solicitação de restauração com todos os detalhes relevantes. Se estiver restaurando o backup para o cluster original, execute o seguinte comando:

az dataprotection backup-instance restore initialize-for-item-recovery --datasource-type AzureKubernetesService --restore-location $region --source-datastore OperationalStore --recovery-point-id $recoverypointid --restore-configuration restoreconfig.json --backup-instance-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstanceid >restorerequestobject.json

Se o cluster do AKS de destino para restauração for diferente do cluster original, execute o seguinte comando:

az dataprotection backup-instance restore initialize-for-data-recovery --datasource-type AzureKubernetesService --restore-location $region --source-datastore OperationalStore --recovery-point-id $recoverypointid --restore-configuration restoreconfig.json --target-resource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$targetakscluster >restorerequestobject.json

Agora você pode atualizar o objeto JSON de acordo com seus requisitos e, em seguida, executar o seguinte comando para validar o objeto:

az dataprotection backup-instance validate-for-restore --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --restore-request-object restorerequestobject.json --vault-name $backupvault

Esse comando verifica se o cluster do AKS e o cofre de Backup têm as permissões necessárias entre si e o Grupo de recursos de instantâneo para executar a restauração. Se a validação falhar devido a permissões ausentes, você pode executar o seguinte comando para atribuí-las:

az dataprotection backup-instance update-msi-permissions --datasource-type AzureKubernetesService --operation Restore --permissions-scope Resource --resource-group  $backupvaultresourcegroup --vault-name $backupvault --restore-request-object restorerequestobject.json --snapshot-resource-group-id /subscriptions/$subscriptionId/resourceGroups/$snapshotresourcegroup

Disparar a restauração

Depois que a atribuição de função for concluída, você deverá validar o objeto de restauração mais uma vez. Depois disso, você pode executar o seguinte comando para disparar uma operação de restauração:

az dataprotection backup-instance restore trigger --restore-request-object restorerequestobject.json --ids /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstancename 

Observação

Durante a operação de restauração, o cofre de Backup e o cluster do AKS precisam ter determinadas funções atribuídas para realizar a restauração:

  1. O cluster do AKS de Destino deve ter a função Colaborador no Grupo de Recursos de Instantâneos.
  2. A Identidade do Usuário anexada à Extensão de Backup deve ter as funções Colaborador da Conta de Armazenamento na conta de armazenamento na qual os backups são armazenados.
  3. O cofre de Backup deve ter uma função de Leitor no cluster do AKS de Destino e no Grupo de recursos de instantâneo.

Acompanhar o trabalho

Você pode acompanhar os trabalhos de restauração usando 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. Use o comando az dataprotection job list-from-resourcegraph para obter o trabalho relevante.

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

Próximas etapas