Compartir a través de


Hacer copias de seguridad de Azure Kubernetes Service mediante PowerShell

En este artículo, se describe cómo configurar y realizar copias de seguridad en Azure Kubernetes Service (AKS) mediante Azure PowerShell.

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.

Antes de comenzar

Antes de empezar a realizar una copia de seguridad de un clúster de AKS, asegúrese de revisar los siguientes requisitos previos:

  • Actualmente, la copia de seguridad de AKS solo admite volúmenes persistentes basados en discos de Azure (habilitados por el controlador CSI). Las copias de seguridad solo se almacenan en el almacén de datos operativo (en el inquilino) y no se mueven a un almacén. El almacén de Backup y el clúster de AKS deben estar en la misma región.

  • La copia de seguridad de AKS usa un contenedor de blobs y un grupo de recursos para almacenar las copias de seguridad. El contenedor de blobs tiene los recursos del clúster de AKS almacenados en él, mientras que las instantáneas de volumen persistentes se almacenan en el grupo de recursos. El clúster de AKS y las ubicaciones de almacenamiento deben residir en la misma región. Obtenga información sobre cómo crear un contenedor de blobs.

  • Actualmente, la copia de seguridad de AKS admite una copia de seguridad una vez al día. También admite copias de seguridad más frecuentes (en cada intervalo de 4, 8 y 12 horas) al día. Permite conservar los datos para su restauración durante un máximo de 360 días. Obtenga información sobre cómo crear una directiva de copia de seguridad.

  • Debe instalar la extensión de copia de seguridad para configurar las operaciones de copia de seguridad y restauración en un clúster de AKS. Obtenga más información sobre la extensión de copia de seguridad.

  • Asegúrese de que Microsoft.KubernetesConfiguration, Microsoft.DataProtection, y Microsoft.ContainerService estén registrados para la suscripción antes de iniciar las operaciones de restauración y configuración de copia de seguridad.

  • Asegúrese de cumplir todos los requisitos previos antes de iniciar la operación de copia de seguridad o restauración para la copia de seguridad de AKS.

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

Creación de un almacén de Backup

Un almacén de Backup es una entidad de administración de Azure que almacena los datos de las copias de seguridad de varias cargas de trabajo recientes que admite Azure Backup, como los servidores de Azure Database for PostgreSQL y los discos de Azure Disk. Los almacenes de Backup facilitan la tarea de organizar los datos de copia de seguridad mientras reducen al mínimo la sobrecarga administrativa. Se basan en el modelo de Azure Resource Manager, que proporciona características mejoradas para proteger los datos de las copias de seguridad. Antes de crear un almacén de copia de seguridad, elija la redundancia de almacenamiento de los datos del almacén y, a continuación, cree el almacén de copia de seguridad con esa redundancia de almacenamiento y la ubicación.

En este caso, crearemos un almacén de copia de seguridad TestBkpVault en la región Oeste de EE. UU, en el grupo de recursos testBkpVaultRG. Use el cmdlet New-AzDataProtectionBackupVault para crear un almacén de copia de seguridad. Obtenga más información sobre cómo crear un almacén de Backup.

Nota:

Aunque el almacén seleccionado pueda tener la configuración de redundancia global, la copia de seguridad de AKS solo admite actualmente el nivel operativo. Todas las copias de seguridad se almacenan en la suscripción en la misma región que la del clúster de AKS y no se copian en el almacenamiento del almacén de copia de seguridad.

  1. Para definir la configuración de almacenamiento del almacén de copia de seguridad, ejecute el siguiente cmdlet:

    Nota:

    El almacén se crea solo con redundancia local y compatibilidad con el almacén de datos operativos.

    $storageSetting = New-AzDataProtectionBackupVaultStorageSettingObject -Type LocallyRedundant -DataStoreType OperationalStore
    
  2. Para crear el almacén de copia de seguridad según los detalles mencionados anteriormente, ejecute el siguiente cmdlet:

    New-AzDataProtectionBackupVault -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Location westus -StorageSetting $storageSetting
    $TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault
    

Una vez completada la creación del almacén, cree una directiva de copia de seguridad para proteger los clústeres de AKS.

Crear una directiva de copia de seguridad

Azure Backup permite crear directivas de copia de seguridad para la protección del clúster de AKS con Copias de seguridad diarias o Varias copias de seguridad al día.

Para crear una directiva de copia de seguridad para el clúster de AKS, ejecute los siguientes cmdlets:

  1. Capture la plantilla de directiva mediante el cmdlet Get-AzDataProtectionPolicyTemplate y compruebe los componentes internos de una directiva de copia de seguridad para la copia de seguridad de AKS. Este comando devuelve una plantilla de directiva predeterminada para un tipo de origen de datos determinado. Use esta plantilla para crear una directiva.

    $policyDefn = Get-AzDataProtectionPolicyTemplate -DatasourceType AzureKubernetesService
    

    La plantilla de directiva consta de un criterio de desencadenador (que decide los factores para desencadenar el trabajo de copia de seguridad) y un ciclo de vida (que decide cuándo eliminar, copiar o mover las copias de seguridad). En la copia de seguridad de discos de Azure, el desencadenador predeterminado es un desencadenador por horas que está programado para activarse cada 4 horas (PT4H) y para conservar cada copia de seguridad durante 7 días.

    $policyDefn.PolicyRule[0]. Trigger | fl
    
    ObjectType: ScheduleBasedTriggerContext
    ScheduleRepeatingTimeInterval: {R/2023-04-05T13:00:00+00:00/PT4H}
    TaggingCriterion: {Default}
    
    $policyDefn.PolicyRule[1]. Lifecycle | fl
    
    DeleteAfterDuration: P7D
    DeleteAfterObjectType: AbsoluteDeleteOption
    SourceDataStoreObjectType : DataStoreInfoBase
    SourceDataStoreType: OperationalStore
    TargetDataStoreCopySetting:
    
  2. Para la frecuencia de copia de seguridad diaria, especifique la hora del día cuando se deben realizar las copias de seguridad.

    Importante

    La hora del día indica la hora de inicio de la copia de seguridad, no la hora en que se completa la misma. El tiempo necesario para completar la operación de copia de seguridad depende de varios factores, incluyendo el número y el tamaño de los volúmenes persistentes y el abandono entre copias de seguridad consecutivas.

    La copia de seguridad de AKS proporciona varias copias de seguridad al día. Las copias de seguridad se distribuyen igualmente durante el día. Si necesita copias de seguridad más frecuentes elija la frecuencia de copia de seguridad Horaria, que tiene la capacidad de realizar copias de seguridad con intervalos de cada 4, 6, 8 o 12 horas. Las copias de seguridad se programan en función del intervalo de tiempo seleccionado. Por ejemplo, si selecciona Cada 4 horas, las copias de seguridad se realizarán aproximadamente cada 4 horas.

  3. Si desea editar la frecuencia por hora o el período de retención, use los cmdlets Edit-AzDataProtectionPolicyTriggerClientObject o Edit-AzDataProtectionPolicyRetentionRuleClientObject. Una vez que el objeto de la directiva tenga todos los valores necesarios, comience a crear una nueva directiva a partir del objeto de la directiva mediante el cmdlet New-AzDataProtectionBackupPolicy.

    New-AzDataProtectionBackupPolicy -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name aksBkpPolicy -Policy $policyDefn
    
    $aksBkpPol = Get-AzDataProtectionBackupPolicy -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "aksBkpPolicy"
    

Preparación del clúster de AKS para la copia de seguridad

Una vez se completen el almacén y la creación de directivas, deberá realizar los siguientes requisitos previos para preparar el clúster de AKS para la copia de seguridad:

  1. Crear un contenedor de blobs y una cuenta de almacenamiento

    La copia de seguridad de AKS almacena los recursos de Kubernetes en un contenedor de blobs como copias de seguridad. Para preparar el clúster de AKS para la copia de seguridad, deberá instalar una extensión en el clúster. Esta extensión requerirá la cuenta de almacenamiento y el contenedor de blobs como entradas.

    Para crear una cuenta de almacenamiento y un contenedor, consulte estos pasos.

    Nota

    1. La cuenta de almacenamiento y el clúster de AKS deberán estar en la misma región y suscripción.
    2. El contenedor de blobs no debería contener ningún sistema de archivos creado anteriormente (excepto si se creó por la copia de seguridad de AKS).
    3. Si el clúster de AKS de origen o de destino estuviera en una red virtual privada, deberá crear un punto de conexión privado para conectar la cuenta de almacenamiento con el clúster de AKS.
  2. Instalación de la extensión de copia de seguridad

    La extensión de copia de seguridad es obligatoria para instalarse en el clúster de AKS para realizar cualquier operación de copia de seguridad y restauración. La extensión de copia de seguridad creará un espacio de nombres dataprotection-microsoft en el clúster y usará lo mismo para implementar sus recursos. Esta extensión requerirá la cuenta de almacenamiento y el contenedor de blobs como entradas para la instalación. Obtenga información sobre los comandos de instalación de la extensión.

    Como parte de la instalación de la extensión, se creará una identidad de usuario en el grupo de recursos del grupo de nodos del clúster de AKS. Para que la extensión tenga acceso a la cuenta de almacenamiento, deberá proporcionar esta identidad al rol Colaborador de la cuenta de almacenamiento. Para asignar el rol necesario, ejecute este comando

  3. Habilitación del acceso de confianza

Para que el almacén de copias de seguridad se conecte con el clúster de AKS, tiene que habilitar el acceso de confianza, ya que permitirá que el almacén de copias de seguridad tenga una línea directa de visión al clúster de AKS. Más información sobre cómo habilitar el acceso de confianza.

Nota:

Para la instalación de la extensión de copia de seguridad y la habilitación de acceso de confianza, los comandos solo estarán disponibles en la CLI de Azure.

Configuración de copias de seguridad

Con el almacén de copias de seguridad y la directiva de copia de seguridad creadas, además del clúster de AKS en estado listo para copia de seguridad, ahora podrá comenzar a realizar una copia de seguridad de su clúster de AKS.

Entidades clave

  • Clúster de AKS que se va a proteger

    Obtenga el identificador de Azure Resource Manager del clúster de AKS que se vaya a proteger. Esto actúa como identificador de la base de datos. En este ejemplo, usaremos un clúster de AKS llamado PSTestAKSCluster, de un grupo de recursos aksrg y en una suscripción diferente:

    $sourceClusterId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/aksrg /providers/Microsoft.ContainerService/managedClusters/ PSTestAKSCluster "
    
  • Grupo de recursos de instantáneas

    Las instantáneas de volumen persistente se almacenarán en un grupo de recursos de su suscripción. Se recomienda crear un grupo de recursos dedicado como un almacén de datos de instantáneas para que lo use el servicio Azure Backup. Un grupo de recursos dedicado podrá restringir los permisos de acceso en el grupo de recursos para asegurar y administrar fácilmente los datos de copia de seguridad. Guarde el identificador de Azure Resource Manager del grupo de recursos en la ubicación donde desee almacenar las instantáneas de volumen persistentes.

    $snapshotrg = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/snapshotrg"
    

Preparación de la solicitud

La configuración de la copia de seguridad se realiza en dos pasos:

  1. Prepare la configuración de copia de seguridad para definir los recursos del clúster de los que se vaya a realizar una copia de seguridad mediante el cmdlet New-AzDataProtectionBackupConfigurationClientObject. En el ejemplo siguiente, la configuración se define como todos los recursos del clúster en los espacios de nombres actuales y se realizará una copia de seguridad de los espacios de nombres futuros con la etiqueta key-value pair x=y. Además, se realizará una copia de seguridad de todos los recursos con ámbito de clúster y volúmenes persistentes. Los siguientes espacios de nombres se omiten de la configuración de copia de seguridad y no se configuran para las copias de seguridad: kube-system, kube-node-lease, kube-public.

    $backupConfig = New-AzDataProtectionBackupConfigurationClientObject -SnapshotVolume $true -IncludeClusterScopeResource $true -DatasourceType AzureKubernetesService -LabelSelector "env=prod"
    
  2. Prepare la solicitud pertinente mediante el almacén, la directiva, el clúster de AKS, la configuración de copia de seguridad y el grupo de recursos de instantáneas pertinentes mediante el cmdlet Initialize-AzDataProtectionBackupInstance.

    $backupInstance = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureKubernetesService  -DatasourceLocation $dataSourceLocation -PolicyId $ aksBkpPol.Id -DatasourceId $sourceClusterId -SnapshotResourceGroupId $ snapshotrg -FriendlyName $friendlyName -BackupConfiguration $backupConfig
    

Asignación de permisos necesarios y validación

Para asignar los permisos necesarios y realizar la validación de la protección del clúster de AKS, ejecute los siguientes cmdlets:

  1. Con la solicitud preparada, deberá asignar al usuario los permisos necesarios a través del control de acceso basado en roles de Azure (RBAC de Azure) al almacén (representado por la identidad del sistema administrada del almacén) y el clúster de AKS. Es posible realizar esto mediante el cmdlet Set-AzDataProtectionMSIPermission. El almacén de Backup usa la identidad administrada para obtener acceso a otros recursos de Azure. Para configurar la copia de seguridad del clúster de AKS, la identidad administrada del almacén de Backup necesitará un conjunto de permisos del clúster de AKS y los grupos de recursos donde se creen y administren las instantáneas. Además, el clúster de AKS requiere permisos en el grupo de recursos de instantáneas.

    Nota:

    Solo se admite la identidad administrada asignada por el sistema para la copia de seguridad (tanto para el almacén de copias de seguridad como el clúster de AKS). Solo hay una identidad administrada asignada por cada recurso y está asociada al ciclo de vida del recurso. Puede conceder permisos a la identidad administrada mediante el uso de Azure RBAC. Tenga en cuenta que una identidad administrada es una entidad de servicio de un tipo especial que solo se puede usar con recursos de Azure. Más información sobre las identidades administradas.

    Set-AzDataProtectionMSIPermission -BackupInstance $backupInstance -VaultResourceGroup $rgName -VaultName $vaultName -PermissionsScope "ResourceGroup"
    
  2. Una vez asignados los permisos, pruebe la preparación de la instancia creada.

    test-AzDataProtectionBackupInstanceReadiness -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstance  $backupInstance.Property 
    
  3. Cuando la validación se realice correctamente,envíe la solicitud para proteger el clúster de AKS mediante el cmdlet New-AzDataProtectionBackupInstance.

    New-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstance $backupInstance
    

Ejecución de una copia de seguridad a petición

Para desencadenar una copia de seguridad a petición, ejecute los siguientes cmdlets:

  1. Capture la instancia de copia de seguridad pertinente en la que desea desencadenar una copia de seguridad mediante la ejecución del cmdlet Get-AzDataProtectionBackupInstance.

    $instance = Get-AzDataProtectionBackupInstance -SubscriptionId "xxxx-xxx-xxx" -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "BackupInstanceName"
    
  2. Especifique una regla de retención al desencadenar la copia de seguridad. Para ver las reglas de retención de la directiva, vaya al objeto de directiva de reglas de retención. En el siguiente ejemplo, aparece la regla con el nombre predeterminado y usaremos esa regla para la copia de seguridad bajo demanda.

    $policyDefn.PolicyRule | fl
    BackupParameter: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.AzureBackupParams
    BackupParameterObjectType: AzureBackupParams
    DataStoreObjectType: DataStoreInfoBase
    DataStoreType: OperationalStore
    Name: BackupHourly
    ObjectType: AzureBackupRule
    Trigger: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.ScheduleBasedTriggerContext
    TriggerObjectType: ScheduleBasedTriggerContext
    IsDefault: True
    Lifecycle: {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SourceLifeCycle}
    Name: Default
    ObjectType: AzureRetentionRule
    
  3. Desencadene una copia de seguridad a petición mediante el cmdlet Backup-AzDataProtectionBackupInstanceAdhoc.

    $AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
    
    Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName $AllInstances[0].Name -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupRuleOptionRuleName "Default"
    

Seguimiento de trabajos

Realice un seguimiento de todos los trabajos mediante el cmdlet Get-AzDataProtectionJob. Puede enumerar todos los trabajos y capturar un detalle de trabajo determinado. También puede usar el cmdlet Az.ResourceGraph para realizar el seguimiento de todos los trabajos en todos los almacenes de copias de seguridad. Use el cmdlet Search-AzDataProtectionJobInAzGraph para obtener información detallada sobre los trabajos pertinentes de cualquier almacén de copia de seguridad.

$job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureKubernetesService  -Operation OnDemandBackup

Pasos siguientes