Personalizar la copia de seguridad y la restauración 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 las restauraciones en Google Distributed Cloud (GDC) air-gapped.

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 de Kubernetes opcionales en espacios de nombres que personalizan la copia de seguridad y la restauración de aplicaciones con estado individuales. Si no tienes recursos de ProtectedApplication, se aplican las siguientes restricciones:

  • Restringes la granularidad del ámbito de la copia de seguridad y la restauración al nivel del espacio de nombres.
  • No se realizan operaciones de vaciado ni de quiescencia en las cargas de trabajo durante la ejecución de la copia de seguridad.Esto puede provocar que las máquinas virtuales con varios discos no sean coherentes tras un fallo después de la restauración.

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

  • Para identificar un conjunto de recursos de un espacio de nombres que se pueden crear como copia de seguridad o restaurar de forma independiente a los demás recursos de ese espacio de nombres. Un ProtectedApplication es la entidad de espacio de nombres más detallada que puedes identificar para un ámbito de copia de seguridad o restauración.
  • Para proporcionar una orquestación de copias de seguridad especializada siempre que el ProtectedApplication esté dentro del ámbito de una copia de seguridad. En concreto, si ProtectedApplication contiene recursos 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 contenedores de aplicaciones. Estos ganchos se suelen usar para operaciones de vaciado, quiescencia o no quiescencia, y proporcionan una copia de seguridad coherente con la aplicación.

Antes de empezar

Para usar los recursos de ProtectedApplication, debes tener lo siguiente:

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

    • Para usuarios administradores de la plataforma:
      • Administrador de copias de seguridad de clústeres de usuarios: gestiona recursos de copia de seguridad, como planes de copia de seguridad y restauración, en clústeres de usuarios. Pídele al administrador de gestión de identidades y accesos de tu organización que te conceda el rol de administrador de copias de seguridad de clústeres de usuarios (user-cluster-backup-admin).
    • Para usuarios con el rol Operador de aplicaciones (AO):
      • Creador de copias de seguridad: crea copias de seguridad manuales y las restaura. Pídele al administrador de gestión de identidades y accesos de tu proyecto que te conceda el rol Creador de copias de seguridad (backup-creator).
    • Para obtener más información, consulta Definiciones de roles.

Desplegar recursos de aplicaciones protegidos

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 a la aplicación durante la copia de seguridad y restaura todos los recursos durante la restauración:

apiVersion: v1
kind: Namespace
metadata:
  name: "applications"
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: protected-application-deployment
  namespace: applications
  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: applications
  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-application-test
  namespace: applications
spec:
  applicationName: protectedApplication
  resourceSelection:
    type: Selector
    selector:
      matchLabels:
        app: protected
  components:
    - name: protect-application-deployment
      resourceKind: Deployment
      resourceNames:
        - protected-application-deployment
      strategy:
        type: BackupAllRestoreAll

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

apiVersion: backup.gdc.goog/v1
kind: BackupPlan
metadata:
  name: protected-application-backupplan-test
  namespace: applications
spec:
  clusterName: "cluster-sample"
  backupSchedule:
    cronSchedule: "*/30 * * * *"
    paused: true
  backupConfig:
    backupScope:
      selectedApplications:
        namespacedNames:
        - name: protected-application-test
          namespace: applications
    backupRepository: "backup-repository"
  retentionPolicy:
    backupDeleteLockDays: 10
    backupRetainDays: 10

En este ejemplo se incluyen los siguientes valores:

Valor Descripción
resourceSelection Define cómo identificar los recursos que pertenecen a la aplicación protegida:
  • type: Especifique una de las siguientes opciones:
    • ApplicationName: crea una copia de seguridad de una aplicación sig-apps en el mismo espacio de nombres.
    • Selector: crea copias de seguridad de los recursos que coincidan con un selector determinado en el mismo espacio de nombres.
  • applicationName: si type es ApplicationName, especifica el nombre de la aplicación sig-apps en el mismo espacio de nombres.
  • selector: si type es Selector, especifica el selector de etiquetas para seleccionar recursos en el mismo espacio de nombres.
components Lista de componentes de la aplicación protegida, como los despliegues o los conjuntos con estado:
  • name: el nombre único del componente.
  • resourceKind: elige entre Deployment o StatefulSet.
  • resourceNames: lista de nombres que identifican el resourceKind en el espacio de nombres.

Siguientes pasos