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 de espacio de nombres de Kubernetes opcionales 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 (PA):
      • 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 y restablecimientos manuales. 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 de 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 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: 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 una copia 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.
  • 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.

¿Qué sigue?