Partilhar via


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. Você também pode restaurar o cluster AKS usando o Azure PowerShell.

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

Antes de começar a restaurar um cluster AKS, revise os seguintes detalhes:

  • O backup do AKS permite restaurar para o cluster AKS original (do qual foi efetuado o backup) e para um cluster AKS alternativo. O backup do AKS permite-lhe executar uma restauração completa e restauração ao nível do item. Você pode utilizar configurações de restauração para definir parâmetros com base nos recursos de cluster que devem ser restaurados.

  • 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.

  • Se a versão do cluster AKS de destino for diferente da versão usada durante o backup, a operação de restauração poderá falhar ou ser concluída com avisos para vários cenários, como recursos preteridos na versão mais recente do cluster. Se estiver a restaurar a partir da camada Vault, poderá usar os recursos hidratados na localização de preparação para restaurar os recursos da aplicação no cluster de destino.

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. Inclui a Extensão de Backup a ser instalada, garantindo que a extensão possua permissão na conta de armazenamento onde os backups são armazenados/restaurados, com o Acesso Confiável ativado entre o cluster AKS de destino e o cofre de backup.

Para validar e preparar o cluster AKS para restauração, execute os seguintes comandos:

  1. Verifique 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
    
  2. 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)
    
  3. Se a função não for atribuída, atribua-a.

    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
    
    
  4. 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
    
  5. Atribua 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 Blob Data Contributor'  --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccount
    
    

Verificar Acesso Seguro

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, o Acesso Confiável pode ser ativado com o seguinte comando:

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 de um cluster AKS

Para restaurar um cluster AKS, consulte as seções a seguir.

Buscar o ponto de recuperação relevante

Para buscar o ponto de recuperação relevante, execute os seguintes comandos:

  1. 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 
    
    
  2. 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
    
    
  3. Se você deseja restaurar backups para a região secundária, use o sinalizador --use-secondary-region para identificar os pontos de recuperação disponíveis nessa região.

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

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",
  "resource_modifier_reference": null,
  "restore_hook_references": null,
  "staging_resource_group_id": null,
  "staging_storage_account_id": null
}

A configuração de restauração é composta pelos seguintes itens:

  • conflict_policy: Durante uma restauração, se existir um recurso com o mesmo nome no cluster e no backup, você poderá escolher como lidar com o conflito. Você tem duas opções: Ignorar, que não restaurará o item de backup, ou Atualizar, que modifica os campos mutáveis do recurso no cluster com o recurso armazenado no backup.

  • excluded_namespace: Você pode listar os namespaces a serem excluídos de serem restaurados no cluster. O recurso subjacente a esses namespaces não será restaurado.

  • excluded_resource_types: Você pode listar os tipos de recursos a serem excluídos da restauração no cluster. Os valores na entrada devem ser fornecidos como API Group Kind como par de valores de chave.

  • include_cluster_scope_resources: Você pode decidir se deseja restaurar os recursos com escopo do cluster ou não, definindo o valor como true ou false.

  • included_namespaces : Você pode listar os namespaces a serem incluídos apenas como parte da restauração do cluster. O recurso subjacente a esses namespaces deve ser restaurado.

  • excluded_resource_types: Você pode listar os tipos de recursos a serem incluídos apenas para restauração no cluster. Os valores na entrada devem ser fornecidos como API Group Kind como par de valores de chave.

  • label_selectors: Você pode selecionar recursos a serem restaurados com rótulos específicos. O valor de entrada deve ser fornecido como par de valores de chave.

  • namespace_mappings: Você pode mapear namespace (e recursos subjacentes) para um namespace diferente no cluster de destino. Se o namespace de destino não existir no cluster, um novo namespace será criado pela extensão. O valor de entrada deve ser fornecido como par de valores de chave.

  • object_type: Esta variável especifica se a configuração de restauração se destina a um ponto de recuperação armazenado na Camada Operacional ou na Camada do Vault. Se o ponto de recuperação estiver na Camada Operacional, defina o valor como KubernetesClusterRestoreCriteria. Se o ponto de recuperação estiver na camada Vault ou estiver a ser restaurado para uma região secundária, defina o valor como KubernetesClusterVaultTierRestoreCriteria.

  • persistent_volume_restore_mode: Você pode usar essa variável para decidir se deseja restaurar os volumes persistentes de backup ou não. Os valores aceites são os RestoreWithVolumeData e RestoreWithoutVolumeData.

  • resource_modifier_reference: Você pode consultar o recurso Modificador de Recursos implantado no cluster com essa variável. O valor de entrada é um par de valores de chave do Namespace no qual o recurso é implantado e o nome do arquivo yaml.

  • restore_hook_references: Você pode consultar o recurso Restore Hook implantado no cluster com essa variável. O valor de entrada é um par de valores de chave do Namespace no qual o recurso é implantado e o nome dos arquivos yaml.

  • staging_resource_group_id: Caso esteja a restaurar o backup armazenado na camada vault, precisa fornecer um ID do grupo de recursos como localização temporária. Neste grupo de recursos, os volumes persistentes de backup são hidratados antes de serem restaurados para o cluster de destino.

  • staging_storage_account_id: Caso esteja a restaurar o backup armazenado na camada 'vault', deve fornecer o ID da conta de armazenamento como local de preparação. Neste grupo de recursos, os recursos kubernetes de backup são hidratados antes de serem restaurados para o cluster de destino.

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

Se o cluster de destino estiver na região secundária, use o sinalizador --use-secondary-region.

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 --use-secondary-region true >restorerequestobject.json

Nota

Caso você tenha escolhido um ponto de recuperação da camada do vault como --source-datastore VaultStore, forneça uma conta de armazenamento e um grupo de recursos de snapshot na configuração de restauração.

Caso estiver a tentar restaurar para o cluster na região secundária, configure a flag --restore-location como o nome da região secundária e --source-datastore como VaultStore.

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

Se o cluster de destino estiver na região secundária, use o sinalizador --use-secondary-region.

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

Este comando verifica se o cluster AKS e o cofre de backup têm as funções necessárias em diferentes recursos necessários para executar a restauração. Se a validação falhar devido a funçõ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

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 função de Colaborador no Grupo de Recursos Instantâneo.
  • Uma Identidade do Utilizador anexada à Extensão de Backup deve ter as funções de Colaborador de Dados de Blob de Armazenamento na conta de armazenamento onde os backups são armazenados no caso da Camada Operacional e na conta de armazenamento de preparação no caso da Camada do Vault.
  • O cofre de Backup deve ter uma função de leitor no cluster AKS de destino e no grupo de recursos de instantâneo em caso de restauração a partir da camada operacional.
  • O cofre de backup deve ter uma função de Colaborador no Grupo de Recursos de Preparo em caso de restauração do backup da camada do Vault.
  • O cofre de backup deve ter uma função de Colaborador da Conta de Armazenamento e Proprietário de Dados de Blob na Conta de Armazenamento Temporário em caso de restauração do backup do nível de cofres.

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 --backup-instance-name $backupinstancename --restore-request-object restorerequestobject.json 

Se o cluster de destino estiver na região secundária, use o sinalizador --use-secondary-region.

az dataprotection backup-instance restore trigger --backup-instance-name $backupinstancename --restore-request-object restorerequestobject.json --use-secondary-region true

Nota

Os recursos hidratados no grupo de recursos temporário e na conta de armazenamento não são removidos automaticamente após a conclusão do trabalho de recuperação e devem ser eliminados manualmente.

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. Utilize o comando az dataprotection job list-from-resourcegraph para obter a tarefa relevante.

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

Próximos passos