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:
- O cluster do AKS de Destino deve ter a função Colaborador no Grupo de Recursos de Instantâneos.
- 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.
- 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