Skip to main content
Hay disponible una nueva versión de este producto.
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.

Define una aplicación para gestión con Trident Protect

Puedes definir una aplicación que quieras gestionar con Trident Protect creando una CR de aplicación y una CR asociada AppVault.

Crea un CR de AppVault

Necesitas crear un CR de AppVault que se usará cuando realices operaciones de protección de datos en la aplicación, y el CR de AppVault debe estar en el clúster donde está instalado Trident Protect. El CR de AppVault es específico para tu entorno; para ejemplos de CR de AppVault, consulta "AppVault recursos personalizados."

Define una aplicación

Necesitas definir cada aplicación que quieras gestionar con Trident Protect. Puedes definir una aplicación para gestionarla creando manualmente un CR de aplicación o usando la CLI de Trident Protect.

Agrega una aplicación usando un CR
Pasos
  1. Crea el archivo CR de la aplicación de destino:

    1. Crea el archivo de recurso personalizado (CR) y ponle un nombre (por ejemplo, maria-app.yaml).

    2. Configura los siguientes atributos:

      • metadata.name: (Obligatorio) El nombre del recurso personalizado de la aplicación. Ten en cuenta el nombre que elijas porque otros archivos CR necesarios para las operaciones de protección hacen referencia a este valor.

      • spec.includedNamespaces: (Requerido) Usa el selector de espacio de nombres y de etiqueta para especificar los espacios de nombres y recursos que utiliza la aplicación. El espacio de nombres de la aplicación debe formar parte de esta lista. El selector de etiqueta es opcional y puedes usarlo para filtrar recursos dentro de cada espacio de nombres especificado.

      • spec.includedClusterScopedResources: (Opcional) Usa este atributo para especificar los recursos de ámbito clúster que se incluirán en la definición de la aplicación. Este atributo te permite seleccionar estos recursos según su grupo, versión, tipo y etiquetas.

        • groupVersionKind: (Obligatorio) especifica el grupo de API, la versión y el tipo del recurso con alcance de clúster.

        • labelSelector: (Opcional) Filtra los recursos con ámbito de clúster según sus etiquetas.

      • metadata.annotations.protect.trident.netapp.io/skip-vm-freeze: (Opcional) Esta anotación solo es aplicable a aplicaciones definidas a partir de máquinas virtuales, como en entornos KubeVirt, donde se producen congelaciones del sistema de archivos antes de las instantáneas. Especifica si esta aplicación puede escribir en el sistema de archivos durante una instantánea. Si se establece en true, la aplicación ignora la configuración global y puede escribir en el sistema de archivos durante una instantánea. Si se establece en false, la aplicación ignora la configuración global y el sistema de archivos se congela durante una instantánea. Si se especifica pero la aplicación no tiene máquinas virtuales en la definición de la aplicación, se ignora la anotación. Si no se especifica, la aplicación sigue la "ajuste global de congelación de Trident Protect".

Si necesitas aplicar esta anotación después de que ya se haya creado una aplicación, puedes usar el siguiente comando:

kubectl annotate application -n <application CR namespace> <application CR name> protect.trident.netapp.io/skip-vm-freeze="true"

+
Ejemplo de YAML:

+

apiVersion: protect.trident.netapp.io/v1
kind: Application
metadata:
  annotations:
    protect.trident.netapp.io/skip-vm-freeze: "false"
  name: my-app-name
  namespace: my-app-namespace
spec:
  includedNamespaces:
    - namespace: namespace-1
      labelSelector:
        matchLabels:
          app: example-app
    - namespace: namespace-2
      labelSelector:
        matchLabels:
          app: another-example-app
  includedClusterScopedResources:
    - groupVersionKind:
        group: rbac.authorization.k8s.io
        kind: ClusterRole
        version: v1
      labelSelector:
        matchLabels:
          mylabel: test
  1. (Opcional) agrega filtrado que incluya o excluya recursos marcados con etiquetas específicas:

    • resourceFilter.resourceSelectionCriteria: (Obligatorio para el filtrado) Usa Include o Exclude para incluir o excluir un recurso definido en resourceMatchers. Agrega los siguientes parámetros resourceMatchers para definir los recursos que se van a incluir o excluir:

      • resourceFilter.resourceMatchers: una matriz de objetos resourceMatcher. Si defines múltiples elementos en esta matriz, coinciden como una operación OR y los campos dentro de cada elemento (group, kind, version) coinciden como una operación AND.

        • resourceMatchers[].group: (Opcional) Grupo del recurso a filtrar.

        • resourceMatchers[].kind: (Opcional) Tipo del recurso a filtrar.

        • resourceMatchers[].version: (Opcional) Versión del recurso a filtrar.

        • resourceMatchers[].names: (Opcional) Nombres en el campo metadata.name de Kubernetes del recurso que se va a filtrar.

        • resourceMatchers[].namespaces: (Opcional) Espacios de nombres en el campo metadata.name de Kubernetes del recurso que se va a filtrar.

        • resourceMatchers[].labelSelectors: (opcional) Cadena de selector de etiqueta en el campo metadata.name de Kubernetes del recurso, como se define en "Documentación de Kubernetes". Por ejemplo: "trident.netapp.io/os=linux".

          Nota Cuando se utilizan tanto resourceFilter como labelSelector, resourceFilter se ejecuta primero y luego labelSelector se aplica a los recursos resultantes.

      Por ejemplo:

    spec:
      resourceFilter:
        resourceSelectionCriteria: "Include"
        resourceMatchers:
          - group: my-resource-group-1
            kind: my-resource-kind-1
            version: my-resource-version-1
            names: ["my-resource-names"]
            namespaces: ["my-resource-namespaces"]
            labelSelectors: ["trident.netapp.io/os=linux"]
          - group: my-resource-group-2
            kind: my-resource-kind-2
            version: my-resource-version-2
            names: ["my-resource-names"]
            namespaces: ["my-resource-namespaces"]
            labelSelectors: ["trident.netapp.io/os=linux"]
  2. Después de crear la CR de la aplicación para que coincida con tu entorno, aplica la CR. Por ejemplo:

    kubectl apply -f maria-app.yaml
Pasos
  1. Crea y aplica la definición de la aplicación usando uno de los siguientes ejemplos, reemplazando los valores entre corchetes por información de tu entorno. Puedes incluir espacios de nombres y recursos en la definición de la aplicación usando listas separadas por comas con los argumentos que se muestran en los ejemplos.

    Puedes usar opcionalmente una anotación cuando creas una app para especificar si la aplicación puede escribir en el sistema de archivos durante una snapshot. Esto solo es aplicable a aplicaciones definidas desde máquinas virtuales, como en entornos KubeVirt, donde los congelamientos del sistema de archivos ocurren antes de las snapshots. Si estableces la anotación en true, la aplicación ignora la configuración global y puede escribir en el sistema de archivos durante una snapshot. Si la estableces en false, la aplicación ignora la configuración global y el sistema de archivos se congela durante una snapshot. Si usas la anotación pero la aplicación no tiene máquinas virtuales en la definición de la app, la anotación se ignora. Si no usas la anotación, la aplicación sigue la "ajuste global de congelación de Trident Protect".

    Para especificar la anotación cuando uses la CLI para crear una aplicación, puedes usar el indicador --annotation.

    • Crea la aplicación y usa la configuración global para el comportamiento de congelación del sistema de archivos:

      tridentctl-protect create application <my_new_app_cr_name> --namespaces <namespaces_to_include> --csr <cluster_scoped_resources_to_include> --namespace <my-app-namespace>
    • Crea la aplicación y configura el ajuste local de la aplicación para el comportamiento de congelación del sistema de archivos:

      tridentctl-protect create application <my_new_app_cr_name> --namespaces <namespaces_to_include> --csr <cluster_scoped_resources_to_include> --namespace <my-app-namespace> --annotation protect.trident.netapp.io/skip-vm-freeze=<"true"|"false">

      Puedes usar --resource-filter-include y --resource-filter-exclude flags para incluir o excluir recursos según resourceSelectionCriteria como grupo, tipo, versión, etiquetas, nombres y namespaces, como se muestra en el siguiente ejemplo:

    tridentctl-protect create application <my_new_app_cr_name> --namespaces <namespaces_to_include> --csr <cluster_scoped_resources_to_include> --namespace <my-app-namespace> --resource-filter-include '[{"Group":"apps","Kind":"Deployment","Version":"v1","Names":["my-deployment"],"Namespaces":["my-namespace"],"LabelSelectors":["app=my-app"]}]'