Skip to main content
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Gestionar los enlaces de ejecución de Trident Protect

Colaboradores netapp-mwallis

Un enlace de ejecución es una acción personalizada que puede configurar para que se ejecute junto con una operación de protección de datos de una aplicación gestionada. Por ejemplo, si dispone de una aplicación de base de datos, puede utilizar un enlace de ejecución para pausar todas las transacciones de la base de datos antes de realizar una instantánea y reanudar las transacciones una vez completada la instantánea. De este modo se garantiza la creación de instantáneas coherentes con la aplicación.

Tipos de enlaces de ejecución

Trident Protect admite los siguientes tipos de enlaces de ejecución, según cuándo se pueden ejecutar:

  • Copia previa de Snapshot

  • Possnapshot

  • Previo al backup

  • Después del backup

  • Después de la restauración

  • Después de la conmutación al respaldo

Orden de ejecución

Cuando se ejecuta una operación de protección de datos, los eventos de enlace de ejecución tienen lugar en el siguiente orden:

  1. Los ganchos de ejecución de preoperación personalizados aplicables se ejecutan en los contenedores adecuados. Puede crear y ejecutar tantos ganchos de prefuncionamiento personalizados como necesite, pero el orden de ejecución de estos enlaces antes de la operación no está garantizado ni configurable.

  2. Si corresponde, se congelan los sistemas de archivos. "Obtenga más información sobre cómo configurar la congelación del sistema de archivos con Trident Protect".

  3. Se realiza la operación de protección de datos.

  4. Los sistemas de archivos congelados se descongelan, si corresponde.

  5. Los enlaces de ejecución de post-operación personalizados aplicables se ejecutan en los contenedores adecuados. Puede crear y ejecutar tantos enlaces de post-operación personalizados como necesite, pero el orden de ejecución de estos enlaces después de la operación no está garantizado ni configurable.

Si crea varios enlaces de ejecución del mismo tipo (por ejemplo, presnapshot), no se garantiza el orden de ejecución de esos enlaces. Sin embargo, el orden de ejecución de ganchos de diferentes tipos está garantizado. Por ejemplo, el siguiente es el orden de ejecución de una configuración que tiene todos los diferentes tipos de ganchos:

  1. Ganchos presnapshot ejecutados

  2. Ganchos posteriores a la instantánea ejecutados

  3. Ganchos de precopia de seguridad ejecutados

  4. Se han ejecutado los enlaces posteriores a la copia de seguridad

Nota El ejemplo de orden anterior solo se aplica cuando se ejecuta un backup que no utiliza una snapshot existente.
Nota Siempre debe probar sus secuencias de comandos de ejecución de enlace antes de habilitarlas en un entorno de producción. Puede utilizar el comando 'kubectl exec' para probar cómodamente los scripts. Después de habilitar los enlaces de ejecución en un entorno de producción, pruebe las copias Snapshot y backups resultantes para garantizar que sean coherentes. Para ello, puede clonar la aplicación en un espacio de nombres temporal, restaurar la instantánea o la copia de seguridad y, a continuación, probar la aplicación.
Nota Si un gancho de ejecución previo a la instantánea agrega, cambia o elimina recursos de Kubernetes, esos cambios se incluyen en la instantánea o la copia de seguridad y en cualquier operación de restauración posterior.

Notas importantes sobre los enlaces de ejecución personalizados

Tenga en cuenta lo siguiente al planificar enlaces de ejecución para sus aplicaciones.

  • Un enlace de ejecución debe utilizar una secuencia de comandos para realizar acciones. Muchos enlaces de ejecución pueden hacer referencia al mismo script.

  • Trident Protect requiere que los scripts que los enlaces de ejecución utilizan se escriban en formato de scripts de shell ejecutables.

  • El tamaño del script está limitado a 96 KB.

  • Trident Protect utiliza la configuración de enlace de ejecución y cualquier criterio de coincidencia para determinar qué enlaces se aplican a una operación de instantánea, copia de seguridad o restauración.

Nota Debido a que los enlaces de ejecución a menudo reducen o desactivan por completo la funcionalidad de la aplicación con la que se ejecutan, siempre debe intentar minimizar el tiempo que tardan los enlaces de ejecución personalizados. Si inicia una operación de copia de seguridad o de instantánea con los enlaces de ejecución asociados pero, a continuación, la cancela, los ganchos pueden ejecutarse si ya se ha iniciado la operación de copia de seguridad o de Snapshot. Esto significa que la lógica utilizada en un enlace de ejecución posterior a la copia de seguridad no puede suponer que la copia de seguridad se ha completado.

Filtros de gancho de ejecución

Al agregar o editar un enlace de ejecución para una aplicación, puede agregar filtros al enlace de ejecución para gestionar qué contenedores coincidirá el enlace. Los filtros son útiles para aplicaciones que usan la misma imagen de contenedor en todos los contenedores, pero pueden usar cada imagen para un propósito diferente (como Elasticsearch). Los filtros le permiten crear escenarios donde los enlaces de ejecución se ejecutan en algunos, pero no necesariamente todos los contenedores idénticos. Si crea varios filtros para un único enlace de ejecución, se combinan con un operador y lógico. Puede tener hasta 10 filtros activos por gancho de ejecución.

Cada filtro que agregue a un enlace de ejecución utiliza una expresión regular para hacer coincidir los contenedores del clúster. Cuando un gancho coincide con un contenedor, el gancho ejecutará su script asociado en ese contenedor. Las expresiones regulares para los filtros utilizan la sintaxis expresión regular 2 (RE2), que no admite la creación de un filtro que excluye contenedores de la lista de coincidencias. Para obtener información sobre la sintaxis que soporta Trident Protect para expresiones regulares en filtros de enlace de ejecución, consulte "Soporte de sintaxis de expresión regular 2 (RE2)".

Nota Si se agrega un filtro de espacio de nombres a un enlace de ejecución que se ejecuta después de una operación de restauración o clonado y el origen y destino de la restauración o clonado se encuentran en diferentes espacios de nombres, el filtro de espacio de nombres solo se aplica al espacio de nombres de destino.

Ejemplos de gancho de ejecución

Visite el "Proyecto Verda GitHub de NetApp" para descargar ganchos de ejecución reales para aplicaciones populares como Apache Cassandra y Elasticsearch. También puede ver ejemplos y obtener ideas para estructurar sus propios enlaces de ejecución personalizados.

Cree un enlace de ejecución

Puede crear un gancho de ejecución personalizado para una aplicación mediante Trident Protect. Necesita tener permisos de propietario, administrador o miembro para crear enlaces de ejecución.

Utilice un CR
Pasos
  1. Cree el archivo de recursos personalizados (CR) y asígnele un nombre trident-protect-hook.yaml.

  2. Configure los siguientes atributos para que coincidan con su entorno Trident Protect y la configuración de clúster:

    • metadata.name: (required) El nombre de este recurso personalizado; elija un nombre único y sensible para su entorno.

    • Spec.applicationRef: (required) El nombre de Kubernetes de la aplicación para la que ejecutar el hook de ejecución.

    • Spec.stage: (required) Una cadena que indica qué etapa durante la acción debe ejecutarse el gancho de ejecución. Los posibles valores son los siguientes:

      • Pre

      • Publicación

    • Spec.action: (required) Una cadena que indica qué acción tomará el gancho de ejecución, asumiendo que los filtros de enlace de ejecución especificados coinciden. Los posibles valores son los siguientes:

      • Snapshot

      • Backup

      • Restaurar

      • Conmutación al respaldo

    • Spec.enabled: (Optional) Indica si este enlace de ejecución está habilitado o desactivado. Si no se especifica, el valor predeterminado es TRUE.

    • Spec.hookSource: (required) Una cadena que contiene el script hook codificado en base64.

    • SPEC.TIMEOUT: (Optional) Un número que define cuánto tiempo en minutos se permite ejecutar el gancho de ejecución. El valor mínimo es 1 minuto y el valor predeterminado es 25 minutos si no se especifica.

    • Spec.arguments: (Optional) Una lista YAML de argumentos que puede especificar para el enlace de ejecución.

    • Spec.matchingCriteria: (Optional) Una lista opcional de pares de valores clave de criterios, cada par que forma un filtro de enlace de ejecución. Puede agregar hasta 10 filtros por gancho de ejecución.

    • Spec.matchingCriteria.type: (Optional) Una cadena que identifica el tipo de filtro de gancho de ejecución. Los posibles valores son los siguientes:

      • ConteneerImage

      • Nombre del contenedor

      • PodName

      • PodLabel

      • Nombre del espacio de nombre

    • Spec.matchingCriteria.value: (Optional) Una cadena o expresión regular que identifica el valor del filtro de enlace de ejecución.

      Ejemplo YAML:

    apiVersion: protect.trident.netapp.io/v1
    kind: ExecHook
    metadata:
      name: example-hook-cr
      namespace: my-app-namespace
      annotations:
        astra.netapp.io/astra-control-hook-source-id: /account/test/hookSource/id
    spec:
      applicationRef: my-app-name
      stage: Pre
      action: Snapshot
      enabled: true
      hookSource: IyEvYmluL2Jhc2gKZWNobyAiZXhhbXBsZSBzY3JpcHQiCg==
      timeout: 10
      arguments:
        - FirstExampleArg
        - SecondExampleArg
      matchingCriteria:
        - type: containerName
          value: mysql
        - type: containerImage
          value: bitnami/mysql
        - type: podName
          value: mysql
        - type: namespaceName
          value: mysql-a
        - type: podLabel
          value: app.kubernetes.io/component=primary
        - type: podLabel
          value: helm.sh/chart=mysql-10.1.0
        - type: podLabel
          value: deployment-type=production
  3. Después de rellenar el archivo CR con los valores correctos, aplique el CR:

    kubectl apply -f trident-protect-hook.yaml
Utilice la CLI
Pasos
  1. Cree el enlace de ejecución, sustituyendo los valores entre paréntesis por información de su entorno. Por ejemplo:

    tridentctl-protect create exechook <my_exec_hook_name> --action <action_type> --app <app_to_use_hook> --stage <pre_or_post_stage> --source-file <script-file> -n <application_namespace>

Ejecute manualmente un enlace de ejecución

Puede ejecutar manualmente un enlace de ejecución para fines de prueba o si necesita volver a ejecutar el enlace manualmente después de un fallo. Debe tener permisos de Propietario, Administrador o Miembro para ejecutar manualmente los ganchos de ejecución.

La ejecución manual de un gancho de ejecución consta de dos pasos básicos:

  1. Cree un backup de recursos, que recopila recursos y crea un backup de ellos, determinando dónde se ejecutará el enlace

  2. Ejecute el enlace de ejecución en la copia de seguridad

Paso 1: Crear una copia de seguridad de recursos
Utilice un CR
Pasos
  1. Cree el archivo de recursos personalizados (CR) y asígnele un nombre trident-protect-resource-backup.yaml.

  2. Configure los siguientes atributos para que coincidan con su entorno Trident Protect y la configuración de clúster:

    • metadata.name: (required) El nombre de este recurso personalizado; elija un nombre único y sensible para su entorno.

    • Spec.applicationRef: (required) El nombre de Kubernetes de la aplicación para la que crear la copia de seguridad del recurso.

    • Spec.appVaultRef: (required) El nombre del AppVault donde se almacena el contenido de la copia de seguridad.

    • Spec.appArchivePath: La ruta dentro de AppVault donde se almacena el contenido de la copia de seguridad. Puede utilizar el siguiente comando para buscar esta ruta:

      kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'

      Ejemplo YAML:

    ---
    apiVersion: protect.trident.netapp.io/v1
    kind: ResourceBackup
    metadata:
      name: example-resource-backup
    spec:
      applicationRef: my-app-name
      appVaultRef: my-appvault-name
      appArchivePath: example-resource-backup
  3. Después de rellenar el archivo CR con los valores correctos, aplique el CR:

    kubectl apply -f trident-protect-resource-backup.yaml
Utilice la CLI
Pasos
  1. Cree el backup sustituyendo valores entre paréntesis con información de su entorno. Por ejemplo:

    tridentctl protect create resourcebackup <my_backup_name> --app <my_app_name> --appvault <my_appvault_name> -n <my_app_namespace> --app-archive-path <app_archive_path>
  2. Vea el estado del backup. Puede usar este comando de ejemplo varias veces hasta que se complete la operación:

    tridentctl protect get resourcebackup -n <my_app_namespace> <my_backup_name>
  3. Compruebe que el backup se ha realizado correctamente:

    kubectl describe resourcebackup <my_backup_name>
Paso 2: Ejecute el enlace de ejecución
Utilice un CR
Pasos
  1. Cree el archivo de recursos personalizados (CR) y asígnele un nombre trident-protect-hook-run.yaml.

  2. Configure los siguientes atributos para que coincidan con su entorno Trident Protect y la configuración de clúster:

    • metadata.name: (required) El nombre de este recurso personalizado; elija un nombre único y sensible para su entorno.

    • Spec.applicationRef: (required) Asegúrese de que este valor coincida con el nombre de la aplicación de ResourceBackup CR que creó en el paso 1.

    • Spec.appVaultRef: (required) Asegúrese de que este valor coincida con appVaultRef del ResourceBackup CR que creó en el paso 1.

    • Spec.appArchivePath: Asegúrate de que este valor coincida con el appArchivePath del ResourceBackup CR que creaste en el paso 1.

      kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
    • Spec.action: (required) Una cadena que indica qué acción tomará el gancho de ejecución, asumiendo que los filtros de enlace de ejecución especificados coinciden. Los posibles valores son los siguientes:

      • Snapshot

      • Backup

      • Restaurar

      • Conmutación al respaldo

    • Spec.stage: (required) Una cadena que indica qué etapa durante la acción debe ejecutarse el gancho de ejecución. Esta secuencia de gancho no ejecutará ganchos en ninguna otra etapa. Los posibles valores son los siguientes:

      • Pre

      • Publicación

        Ejemplo YAML:

    ---
    apiVersion: protect.trident.netapp.io/v1
    kind: ExecHooksRun
    metadata:
      name: example-hook-run
    spec:
      applicationRef: my-app-name
      appVaultRef: my-appvault-name
      appArchivePath: example-resource-backup
      stage: Post
      action: Failover
  3. Después de rellenar el archivo CR con los valores correctos, aplique el CR:

    kubectl apply -f trident-protect-hook-run.yaml
Utilice la CLI
Pasos
  1. Cree la solicitud de ejecución de enlace de ejecución manual:

    tridentctl protect create exechooksrun <my_exec_hook_run_name> -n <my_app_namespace> --action snapshot --stage <pre_or_post> --app <my_app_name> --appvault <my_appvault_name> --path <my_backup_name>
  2. Compruebe el estado de la ejecución del enlace de ejecución. Este comando se puede ejecutar varias veces hasta que se complete la operación:

    tridentctl protect get exechooksrun -n <my_app_namespace> <my_exec_hook_run_name>
  3. Describa el objeto exechooksrun para ver los detalles y el estado finales:

    kubectl -n <my_app_namespace> describe exechooksrun <my_exec_hook_run_name>