Share via


Restauración de Azure Kubernetes Service mediante la CLI de Azure

En este artículo, se indica cómo restaurar el clúster de Azure Kubernetes desde un punto de restauración creado por Azure Backup mediante la CLI de Azure.

Azure Backup ahora permite realizar copias de seguridad de clústeres de AKS (recursos de clúster y volúmenes persistentes asociados al clúster) mediante una extensión de copia de seguridad, que debe instalarse en el clúster. El almacén de Backup se comunica con el clúster mediante esta extensión de copia de seguridad para realizar operaciones de copia de seguridad y restauración.

Puede realizar tanto una recuperación de ubicación original (OLR) (restauración en el clúster de AKS que se ha respaldado) como una recuperación en una ubicación alternativa (ALR) (restauración en un otro clúster de AKS). También puede seleccionar los elementos que se van a restaurar a partir de la copia de seguridad, es decir, recuperación a nivel de elemento (IRL).

Nota:

Antes de iniciar una operación de restauración, el clúster de destino debe tener instalada la extensión de Backup y el acceso de confianza habilitado para el almacén de Backup. Más información.

Antes de comenzar

  • La copia de seguridad de AKS permite restaurarla al clúster de AKS original (del que se ha realizado una copia de seguridad) y a un clúster de AKS alternativo. La copia de seguridad de AKS permite realizar una restauración completa y una restauración de elementos. Puede usar configuraciones de restauración para definir parámetros en función de los recursos del clúster que se seleccionarán durante la restauración.

  • Debe instalar la extensión de copia de seguridad en el clúster de AKS de destino. Además, debe habilitar el acceso de confianza entre el almacén de Backup y el clúster de AKS.

Para más información sobre las limitaciones y los escenarios admitidos, consulte la matriz de compatibilidad.

Validación y preparación del clúster de AKS de destino

Antes de iniciar un proceso de restauración, debe validar que el clúster de AKS está preparado para la restauración. Esto incluye la extensión de copia de seguridad que se va a instalar con la extensión que tiene el permiso en la cuenta de almacenamiento donde se almacenan las copias de seguridad y el acceso de confianza para habilitarse entre el clúster de AKS y el almacén de Backup.

En primer lugar, compruebe si la extensión de Backup está instalada en el clúster mediante la ejecución del siguiente comando:

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

Si la extensión está instalada, compruebe si tiene los permisos adecuados en la cuenta de almacenamiento donde se almacenan las copias de seguridad:

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)

Si el rol no está asignado, puede asignarlo mediante la ejecución del siguiente 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

Si la extensión de Backup no está instalada, ejecute el siguiente comando de instalación de extensión con la cuenta de almacenamiento y el contenedor de blobs donde las copias de seguridad se almacenan 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

A continuación, asigne el rol necesario a la extensión en la cuenta de almacenamiento mediante la ejecución del siguiente 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

Comprobación del acceso de confianza

Para comprobar si el acceso de confianza está habilitado entre el almacén de Backup y el clúster de AKS de destino, ejecute el siguiente comando:

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

Si no está habilitado, ejecute el siguiente comando para habilitar el acceso de confianza:

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

Restauración en un clúster de AKS

Captura del punto de recuperación pertinente

Capture todas las instancias asociadas al clúster de AKS e identifique la instancia pertinente.

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

Una vez identificada la instancia, capture el punto de recuperación pertinente.

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

Preparación de la solicitud de restauración

Para preparar la configuración de restauración y definir los elementos que se van a restaurar en el clúster de AKS de destino, ejecute el 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"
}

Ahora, prepare la solicitud de restauración con todos los detalles pertinentes. Si va a restaurar la copia de seguridad en el clúster original, ejecute el siguiente 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

Si el clúster de AKS de destino para la restauración es diferente del clúster original, ejecute el siguiente 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

Ahora, puede actualizar el objeto JSON según sus requisitos y, a continuación, validar el objeto mediante la ejecución del siguiente 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 comprueba si el clúster de AKS y el almacén de Backup tienen permisos necesarios entre sí y el grupo de recursos de instantáneas para realizar la restauración. Si se produce un error en la validación debido a que faltan permisos, puede asignarlos ejecutando el siguiente 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

Desencadenamiento de la restauración

Una vez completada la asignación de roles, debe validar el objeto de restauración una vez más. Después, puede desencadenar una operación de restauración ejecutando el siguiente 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 la operación de restauración, el almacén de Backup y el clúster de AKS deben tener determinados roles asignados para realizar la restauración:

  1. El clúster de AKS de destino debe tener el rol Colaborador en el grupo de recursos de instantáneas.
  2. La identidad de usuario asociada a la extensión de Backup debe tener roles de Colaborador de la cuenta de almacenamiento en la cuenta de almacenamiento donde se almacenan las copias de seguridad.
  3. El almacén de Backup debe tener un rol Lector en el clúster de AKS de destino y en el grupo de recursos de instantáneas.

Seguimiento de trabajos

Puede realizar un seguimiento de los trabajos de restauración mediante el comando az dataprotection job. Puede enumerar todos los trabajos y capturar un detalle de trabajo determinado.

También puede usar Resource Graph para realizar un seguimiento de todos los trabajos en todas las suscripciones, grupos de recursos y almacenes de Backup. Use el comando az dataprotection job list-from-resourcegraph para obtener el trabajo correspondiente.

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

Pasos siguientes