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.

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 (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 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 restaurando a partir da camada do Vault, você poderá usar os recursos hidratados no local de preparo para restaurar os recursos do aplicativo para o 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 com a extensão tendo a permissão na conta de armazenamento onde os backups são armazenados/hidratados com o Acesso Confiável habilitado 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 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

Caso contrário, o Acesso Fidedigno 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 para um cluster AKS

Para restaurar para 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.

  • 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 aceitos são RestoreWithVolumeData, 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 restaurando o backup armazenado na camada do vault, você precisa fornecer uma ID do grupo de recursos como um local de preparação. 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 restaurando o backup armazenado na camada do vault, você precisa fornecer um ID da conta de armazenamento como um 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

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 você esteja tentando restaurar para o cluster na região secundária, defina o sinalizador --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

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 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 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 *preparo 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 do Blob de Armazenamento no Grupo de Recursos de Preparo em caso de restauração do backup da camada do Vault.

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 

Nota

Os recursos hidratados no grupo de recursos de preparo e na conta de armazenamento não são limpos automaticamente após a conclusão do trabalho de restauração e devem ser excluídos 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. 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

Próximos passos