Compartir a través de


Copia de seguridad de Azure Kubernetes Service mediante la CLI de Azure

En este artículo, se describe cómo configurar y hacer copias de seguridad de Azure Kubernetes Service (AKS) 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.

Antes de comenzar

  • 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, al mismo tiempo que reducen al mínimo la sobrecarga administrativa. Los almacenes de copias de seguridad se basan en el modelo de Azure Resource Manager de Azure, que proporciona características 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. 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.

Para crear el almacén de Backup, ejecute el siguiente comando:

az dataprotection backup-vault create --resource-group $backupvaultresourcegroup --vault-name $backupvault --location $region --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"

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

Para comprender los componentes internos de una directiva de copia de seguridad para la copia de seguridad de AKS, recupere la plantilla de directiva mediante el comando az dataprotection backup-policy get-default-policy-template. Este comando devuelve una plantilla de directiva predeterminada para un tipo de origen de datos determinado. Use esta plantilla para crear una directiva.

az dataprotection backup-policy get-default-policy-template --datasource-type AzureKubernetesService > akspolicy.json


{
  "datasourceTypes": [
    "Microsoft.ContainerService/managedClusters"
  ],
  "name": "AKSPolicy1",
  "objectType": "BackupPolicy",
  "policyRules": [
    {
      "backupParameters": {
        "backupType": "Incremental",
        "objectType": "AzureBackupParams"
      },
      "dataStore": {
        "dataStoreType": "OperationalStore",
        "objectType": "DataStoreInfoBase"
      },
      "name": "BackupHourly",
      "objectType": "AzureBackupRule",
      "trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2023-01-04T09:00:00+00:00/PT4H"
          ]
        },
        "taggingCriteria": [
          {
            "isDefault": true,
            "tagInfo": {
              "id": "Default_",
              "tagName": "Default"
            },
            "taggingPriority": 99
          }
        ]
      }
    },
    {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P7D",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "OperationalStore",
            "objectType": "DataStoreInfoBase"
          }
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    }
  ]
}

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 AKS, el valor de desencadenador predeterminado es un desencadenador por horas que está programado para activarse cada 4 horas (PT4H) y para conservar cada copia de seguridad durante siete días.

Scheduled trigger:
      "trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2023-01-04T09:00:00+00:00/PT4H"
          ]
        }
      }

Default retention lifecycle:
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P7D",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "OperationalStore",
            "objectType": "DataStoreInfoBase"
          }
        }
      ]


La copia de seguridad de AKS proporciona varias copias de seguridad al día. Si tiene que hacer copias de seguridad con más frecuencia, elija la frecuencia de copia de seguridad Cada hora, ya que le ofrece la posibilidad de hacer copias de seguridad a intervalos de 4, 6, 8 o 12 horas. Las copias de seguridad se programan en función del Intervalo de tiempo ha seleccionado.

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.

Una vez que descargue la plantilla como un archivo JSON, puede editarla para programarla y conservarla según sea necesario. A continuación, cree una nueva directiva con el archivo JSON resultante. Si quiere editar la frecuencia por hora o el período de retención, use los comandos az dataprotection backup-policy trigger set o az dataprotection backup-policy retention-rule set.

Nota:

Para almacenar los datos de copia de seguridad en el Nivel de almacén para conservarlos a largo plazo con fines de cumplimiento o para la recuperación ante desastres regionales a través de la restauración entre regiones, deberá definir una nueva regla de retención en la plantilla predeterminada que define cuánto tiempo se debe almacenar la copia de seguridad en el almacén.

Veamos un ejemplo en el que actualizaremos la plantilla predeterminada para la directiva de copia de seguridad y agregaremos una regla de retención para conservar primera copia de seguridad correcta al día en el Nivel de almacén durante 30 días.

Use el comando az dataprotection backup-policy retention-rule create-lifecycle para crear una regla de retención y a continuación, agregue la regla de retención a la plantilla de directiva de copia de seguridad con el comando``


az dataprotection backup-policy retention-rule create-lifecycle  --count 30 --retention-duration-type Days --copy-option ImmediateCopyOption --target-datastore VaultStore --source-datastore OperationalStore > ./retentionrule.json

az dataprotection backup-policy retention-rule set --lifecycles ./retentionrule.json --name Daily --policy ./akspolicy.json > ./akspolicy.json

Una vez que el archivo JSON de la directiva tenga todos los valores necesarios, continúe con la creación de una directiva a partir del objeto de directiva con el comando az dataprotection backup-policy create.

az dataprotection backup-policy create -g testBkpVaultRG --vault-name TestBkpVault -n mypolicy --policy policy.json

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. Cree una cuenta de almacenamiento y un contenedor de blobs.

    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, ejecute el siguiente comando:

    az storage account create --name $storageaccount --resource-group $storageaccountresourcegroup --location $region --sku Standard_LRS
    

    Una vez completada la creación de la cuenta de almacenamiento, ejecute el comando siguiente para crear un contenedor de blobs dentro de ella:

    az storage container create --name $blobcontainer --account-name $storageaccount --auth-mode login
    

    Aprenda a habilitar o deshabilitar características específicas, como un punto de conexión privado, al crear una cuenta de almacenamiento y un contenedor de blobs.

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

    az k8s-extension create --name azure-aks-backup --extension-type microsoft.dataprotection.kubernetes --scope cluster --cluster-type managedClusters --cluster-name $akscluster --resource-group $aksclusterresourcegroup --release-train stable --configuration-settings blobContainer=$blobcontainer storageAccount=$storageaccount storageAccountResourceGroup=$storageaccountresourcegroup storageAccountSubscriptionId=$subscriptionId
    

    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 datos de blobs de almacenamiento. Para asignar el rol necesario, ejecute el comando siguiente:

    az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $akscluster --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
    
  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.

    Para habilitar el acceso de confianza, ejecute el comando siguiente:

    az aks trustedaccess rolebinding create --cluster-name $akscluster --name backuprolebinding --resource-group $aksclusterresourcegroup --roles Microsoft.DataProtection/backupVaults/backup-operator --source-resource-id /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/BackupVaults/$backupvault
    

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.

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 hacer una copia de seguridad mediante el comando az dataprotection backup-instance initialize-backupconfig. El comando genera un JSON, que puede actualizar para definir la configuración de copia de seguridad del clúster de AKS según sea necesario.

    az dataprotection backup-instance initialize-backupconfig --datasource-type AzureKubernetesService > aksbackupconfig.json
    
    {
     "excluded_namespaces": null,
     "excluded_resource_types": null,
     "include_cluster_scope_resources": true,
     "included_namespaces": null, 
     "included_resource_types": null,
     "label_selectors": null,
     "snapshot_volumes": true
    }
    

Los siguientes espacios de nombres se omiten de la configuración de copia de seguridad, es decir, no se configuran para las copias de seguridad: kube-system, kube-node-lease, kube-public.

  1. 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 comando az dataprotection backup-instance initialize.

    az dataprotection backup-instance initialize --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --datasource-location $region --datasource-type AzureKubernetesService --policy-id /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupPolicies/$backuppolicy --backup-configuration ./aksbackupconfig.json --friendly-name ecommercebackup --snapshot-resource-group-name $snapshotresourcegroup > backupinstance.json
    

Ahora, use la salida JSON de este comando para configurar la copia de seguridad del clúster de AKS.

Asignación de permisos necesarios y validación

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.

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 control de acceso basado en roles de Azure (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.

Con la solicitud preparada, primero tiene que ejecutar el comando siguiente para validar si los roles necesarios están asignados a los recursos mencionados anteriormente:

az dataprotection backup-instance validate-for-backup --backup-instance ./backupinstance.json --ids /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault

Si se produce un error en la validación y faltan determinados permisos, puede ejecutar el comando siguiente para asignarlos:

az dataprotection backup-instance update-msi-permissions command.
az dataprotection backup-instance update-msi-permissions --datasource-type AzureKubernetesService --operation Backup --permissions-scope ResourceGroup --vault-name $backupvault --resource-group $backupvaultresourcegroup --backup-instance backupinstance.json

Una vez que se hayan asignado los permisos, vuelva a validar con el siguiente comando de validación para copia de seguridad:

az dataprotection backup-instance create --backup-instance  backupinstance.json --resource-group $backupvaultresourcegroup --vault-name $backupvault

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

Para capturar la instancia de copia de seguridad pertinente en la que desee desencadenar una copia de seguridad, ejecute el comando az dataprotection backup-instance list-from-resourcegraph --.

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

Ahora, desencadene una copia de seguridad a petición para la instancia de copia de seguridad mediante el siguiente comando:

az dataprotection backup-instance adhoc-backup --rule-name "BackupDaily" --ids /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstanceid

Seguimiento de trabajos

Haga un seguimiento de los trabajos de copia de seguridad con el comando az dataprotection job. Puede enumerar todos los trabajos y capturar un detalle de trabajo determinado.

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

Para la copia de seguridad a petición:

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

Para la copia de seguridad programada:

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

Pasos siguientes