Restaurar o Serviço Kubernetes do Azure usando a CLI do Azure
Este artigo descreve como restaurar o cluster Kubernetes do Azure a partir de um ponto de restauração criado pelo Backup do Azure 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.
Você pode executar a Recuperação de Local Original (OLR) (restauração no cluster AKS do qual foi feito backup) e a Recuperação de Local Alternativo (ALR) (restauração em um cluster AKS diferente). Você também pode selecionar os itens a serem restaurados a partir do backup que é ILR (Item-Level Recovery).
Nota
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 para o cofre de Backup. Mais informações.
Antes de começar
O backup do AKS permite restaurar para o cluster AKS original (que foi feito backup) e para um cluster AKS alternativo. O backup do AKS permite que você execute uma restauração completa e restauração no nível do item. Você pode utilizar configurações de restauração para definir parâmetros com base nos recursos de cluster que serão coletados durante a restauração.
Você deve instalar a Extensão de Backup no cluster AKS de destino. Além disso, você deve habilitar o Acesso Confiável entre o cofre de backup e o cluster AKS.
Para obter mais informações sobre as limitações e os cenários suportados, consulte a matriz de suporte.
Validar e preparar o cluster AKS de destino
Antes de iniciar um processo de restauração, você deve validar se o cluster AKS está preparado para restauração. Isso inclui a Extensão de Backup a ser instalada com a extensão tendo a permissão na conta de armazenamento onde os backups são armazenados e o Acesso Confiável a ser ativado entre o cluster AKS e o cofre de backup.
Primeiro, verifique se a Extensão de Backup está instalada no cluster executando o seguinte comando:
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 onde 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 for 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 seguinte comando de instalação de extensão com a conta de armazenamento e o contêiner de blob onde 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, atribua a função necessária à extensão na conta de armazenamento 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
Verificar Acesso Fidedigno
Para verificar se o Acesso Confiável está habilitado entre o cofre de backup e o cluster AKS de destino, execute o seguinte comando:
az aks trustedaccess rolebinding list --resource-group $aksclusterresourcegroup --cluster-name $targetakscluster
Se 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 para um cluster AKS
Buscar o ponto de recuperação relevante
Buscar todas as instâncias associadas ao cluster AKS e identificar a instância 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
Uma vez identificada a instância, 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 definindo os itens a serem restaurados no cluster AKS de destino, execute o az dataprotection backup-instance initialize-restoreconfig
comando.
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 você 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 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, validar o objeto executando o seguinte comando:
az dataprotection backup-instance validate-for-restore --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --restore-request-object restorerequestobject.json --vault-name $backupvault
Este comando verifica se o Cluster AKS e o cofre de Backup têm permissões necessárias um no outro e o grupo de recursos Snapshot para executar a restauração. Se a validação falhar devido a permissões ausentes, você poderá atribuí-las executando o seguinte comando:
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
Acionar a restauração
Quando a atribuição de função estiver concluída, você deverá validar o objeto de restauração mais uma vez. Depois disso, você pode disparar uma operação de restauração executando o seguinte comando:
az dataprotection backup-instance restore trigger --restore-request-object restorerequestobject.json --ids /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstancename
Nota
Durante a operação de restauração, o cofre de backup e o cluster AKS precisam ter determinadas funções atribuídas para executar a restauração:
- O cluster AKS de destino deve ter a função de Colaborador no Grupo de Recursos de Instantâneo.
- A Identidade do Usuário anexada à Extensão de Backup deve ter funções de Colaborador da Conta de Armazenamento na conta de armazenamento onde os backups são armazenados.
- O cofre de backup deve ter uma função de leitor no cluster AKS de destino e no grupo de recursos de instantâneo.
Acompanhamento do trabalho
Você pode acompanhar os trabalhos de restauração usando 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. Use o az dataprotection job list-from-resourcegraph
comando 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