Personaliza la creación de una copia de seguridad y el restablecimiento de una aplicación

En esta página, se describe cómo usar los recursos de ProtectedApplication para personalizar el comportamiento de las copias de seguridad y los restablecimientos en Google Distributed Cloud (GDC) aislado.

Los pasos que se describen en esta página son opcionales y no son necesarios para configurar correctamente la copia de seguridad y la restauración de tus cargas de trabajo. Los recursos ProtectedApplication son recursos opcionales de Kubernetes en espacios de nombres que personalizan la copia de seguridad y el restablecimiento de aplicaciones con estado individuales. Sin recursos ProtectedApplication, se aplican las siguientes restricciones:

  • Restringes la granularidad del alcance de la copia de seguridad y el restablecimiento al nivel del espacio de nombres.
  • No se realizan operaciones de vaciado ni de inactividad en las cargas de trabajo durante la ejecución de la copia de seguridad, lo que puede provocar que las máquinas virtuales con varios discos no sean coherentes ante fallas después del restablecimiento.

Los recursos ProtectedApplication son recursos opcionales del espacio de nombres de Kubernetes que se usan para personalizar la copia de seguridad y el restablecimiento de aplicaciones con estado individuales. El recurso ProtectedApplication define qué recursos de Kubernetes pertenecen a una instancia de aplicación. Puedes configurar manualmente una organización especializada con el comando kubectl para crear una copia de seguridad y restablecer esas aplicaciones en las siguientes situaciones:

  • Identificar un conjunto de recursos en un espacio de nombres para el que se pueda crear una copia de seguridad o restablecerse de forma independiente de los otros recursos de ese espacio de nombres Un ProtectedApplication es la entidad de espacio de nombres más detallada que puedes identificar para un alcance de copia de seguridad o restablecimiento.
  • Proporcionar una organización especializada de la copia de seguridad siempre que ProtectedApplication esté dentro del alcance de una copia de seguridad En particular, si el ProtectedApplication contiene recursos de PersistentVolumeClaim (PVC) directamente o a través de una plantilla de un StatefulSet, puedes ejecutar hooks antes y después de crear una copia de seguridad de los volúmenes. Los hooks son comandos que se ejecutan en los contenedores de la aplicación. Estos hooks se suelen usar para operaciones de vaciado, desactivación o reactivación, y proporcionan una copia de seguridad coherente con la aplicación.

Antes de comenzar

Para usar los recursos ProtectedApplication, debes tener lo siguiente:

  • Debes definir el recurso ProtectedApplication antes de crear un plan de copias de seguridad. Para obtener más información, consulta Planifica un conjunto de copias de seguridad.
  • El rol de identidad y acceso necesario:

    • Para los usuarios administradores de la plataforma (AP):
      • Administrador de copias de seguridad del clúster de usuario: Administra recursos de copias de seguridad, como planes de copias de seguridad y restablecimiento en clústeres de usuario. Pídele al administrador de IAM de la organización que te otorgue el rol de administrador de copias de seguridad de clústeres de usuarios (user-cluster-backup-admin).
    • Para los usuarios del operador de la aplicación (AO):
      • Backup Creator: Crea copias de seguridad manuales y las restablece. Pídele al administrador de IAM del proyecto que te otorgue el rol de creador de copias de seguridad (backup-creator).
    • Para obtener más información, consulta Definiciones de roles.

Implementa recursos de aplicaciones protegidas

A continuación, se muestra un ejemplo de una especificación de Deployment con un recurso ProtectedApplication que crea una copia de seguridad de todos los recursos asociados con la aplicación durante la copia de seguridad y restablece todos los recursos durante el restablecimiento:

apiVersion: v1
kind: Namespace
metadata:
  name: USER_CLUSTER_NS
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: protected-application-deployment
  namespace: USER_CLUSTER_NS
  labels:
    app: protected
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: unprotected-application-deployment
  namespace: USER_CLUSTER_NS
  labels:
    app: unprotected
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
---

apiVersion: gkebackup.gke.io/v1
kind: ProtectedApplication
metadata:
  name: PROTECTED_APP_NAME
  namespace: USER_CLUSTER_NS
spec:
  resourceSelection:
    type: Selector
    selector:
      matchLabels:
        app: protected
  components:
    - name: application-deployment
      resourceKind: Deployment
      resourceNames:
        - protected-application-deployment
      strategy:
        type: BackupAllRestoreAll

Reemplaza lo siguiente:

  • USER_CLUSTER_NS: Es el espacio de nombres dentro del clúster de usuario en el que reside tu aplicación protegida.
  • PROTECTED_APP_NAME: Es el nombre de tu ProtectedApplication.

En este ejemplo, se incluyen los siguientes valores para ProtectedApplication:

Valor Descripción
resourceSelection Define cómo identificar los recursos que pertenecen a la aplicación protegida:
  • type: Especifica una de las siguientes opciones:
    • ApplicationName: Crea una copia de seguridad de una aplicación de sig-apps dentro del mismo espacio de nombres.
    • Selector: Crea copias de seguridad de los recursos que coinciden con un selector determinado dentro del mismo espacio de nombres.
  • applicationName: Si type es ApplicationName, especifica el nombre de la aplicación de sig-apps dentro del mismo espacio de nombres. Es la aplicación a la que se aplica la especificación de protección de datos.
  • selector: Si type es Selector, especifica el selector de etiquetas para seleccionar recursos dentro del mismo espacio de nombres.
components La lista de componentes de la aplicación protegida, como implementaciones o conjuntos con estado:
  • name: Es el nombre único del componente.
  • resourceKind: Elige entre Deployment o StatefulSet.
  • resourceNames: Es la lista de nombres que identifican el resourceKind en el espacio de nombres.

Especifica el ProtectedApplication en la lista de selectedApplications en el backupScope. Por ejemplo:

apiVersion: backup.gdc.goog/v1
kind: BackupPlan
metadata:
  name: BACKUP_PLAN
  namespace: USER_CLUSTER_NS
spec:
  clusterName: USER_CLUSTER
  backupSchedule:
    cronSchedule: CRON_SCHEDULE
    paused: BACKUP_SCHEDULE_STATUS
  backupConfig:
    backupScope:
      selectedApplications:
        namespacedNames:
        - name: PROTECTED_APP_NAME
          namespace: USER_CLUSTER_NS
    backupRepository: BACKUP_REPOSITORY
    retentionPolicy:
      backupDeleteLockDays: BACKUP_DELETE_LOCK_DAYS
      backupRetainDays: BACKUP_RETAIN_DAYS

Reemplaza lo siguiente:

  • BACKUP_PLAN: El nombre de tu plan de copia de seguridad.
  • USER_CLUSTER: Es el nombre de tu clúster de usuario.
  • CRON_SCHEDULE: Es una programación de crontab que indica cuándo programar copias de seguridad, como "*/30 * * * *". El intervalo mínimo entre las copias de seguridad programadas es de 10 minutos.
  • BACKUP_SCHEDULE_STATUS: Si es true, no se programan copias de seguridad periódicas.
  • PROTECTED_APP_NAME: Es el nombre que le asignaste a tu recurso ProtectedApplication.
  • BACKUP_REPOSITORY: Es el nombre del repositorio de copias de seguridad que usas para almacenar copias de seguridad.
  • BACKUP_DELETE_LOCK_DAYS: Evita que se borre la copia de seguridad durante la cantidad de días especificada después de la creación de la copia de seguridad, por ejemplo, 10 days.
  • BACKUP_RETAIN_DAYS: Define la cantidad total de días que se retendrá la copia de seguridad. Después de este período, la copia de seguridad se borra automáticamente. Si se establece este valor en un número más alto, es posible que se agote el almacenamiento, mientras que, si se establece en un valor más bajo, puede aumentar el riesgo de pérdida de datos. Si no se especifica, este valor se establece en 35 de forma predeterminada. Las políticas de retención no anulan las políticas de retención de la ubicación de almacenamiento ni pueden exceder los 90 días.

¿Qué sigue?