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.

Defina una aplicación para administrar con Trident Protect

Colaboradores netapp-mwallis netapp-shwetav netapp-aruldeepa

Puede definir una aplicación que desee administrar con Trident Protect creando un CR de aplicación y un CR de AppVault asociado.

Cree un CR de AppVault

Debe crear un CR de AppVault que se utilizará al realizar operaciones de protección de datos en la aplicación, y el CR de AppVault debe residir en el clúster donde está instalado Trident Protect. AppVault CR es específico de su entorno; para ver ejemplos de AppVault CRS, consulte "Recursos personalizados de AppVault."

Defina una aplicación

Debe definir cada aplicación que desee gestionar con Trident Protect. Puede definir una aplicación para la gestión creando manualmente una CR de aplicación o mediante el uso de la CLI de Trident Protect.

Agregar una aplicación mediante un CR
Pasos
  1. Cree el archivo CR de la aplicación de destino:

    1. Cree el archivo de recursos personalizados (CR) y asígnele un nombre (por ejemplo, maria-app.yaml).

    2. Configure los siguientes atributos:

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

      • spec.includedNamespaces: (required) Utilice el espacio de nombres y el selector de etiquetas 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 etiquetas es opcional y se puede utilizar para filtrar recursos dentro de cada espacio de nombres especificado.

      • spec.includedClusterScopedResources: (Optional) Utilice este atributo para especificar los recursos de ámbito de cluster que se incluirán en la definición de la aplicación. Este atributo le permite seleccionar estos recursos en función de su grupo, versión, tipo y etiquetas.

        • GroupVersionKind: (required) Especifica el grupo API, la versión y el tipo del recurso de ámbito de cluster.

        • LabelSelector: (Optional) Filtra los recursos de ámbito de cluster en función de sus etiquetas.

      • metadata.annotations.protect.trident.netapp.io/skip-vm-freeze: (Opcional) Esta anotación solo es aplicable a aplicaciones definidas desde máquinas virtuales, como en entornos KubeVirt, donde los sistemas de archivos se congelan antes que las instantáneas. Especifique si esta aplicación puede escribir en el sistema de archivos durante una instantánea. Si se define en true, la aplicación ignora la configuración global y puede escribir en el sistema de archivos durante una instantánea. Si se define 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, la anotación se ignora. Si no se especifica, la aplicación sigue la "Valor de congelación de Global Trident Protect".

Si necesita aplicar esta anotación después de crear una aplicación, puede utilizar el siguiente comando:

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

+
Ejemplo 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) Agregue filtros que incluyan o excluyan recursos marcados con etiquetas particulares:

    • ResourceFilter.resourceSelectionCriteria: (Requerido para filtrar) Usar Include o Exclude incluir o excluir un recurso definido en resourceMatchers. Agregue los siguientes parámetros resourceMatchers para definir los recursos que se van a incluir o excluir:

      • ResourceFilter.resourceMatchers: Una matriz de objetos resourceMatcher. Si define varios elementos en esta matriz, coinciden como una OPERACIÓN OR y los campos dentro de cada elemento (grupo, tipo, versión) coinciden como una operación AND.

        • ResourceMatchers[].group: (Optional) Grupo del recurso a filtrar.

        • ResourceMatchers[].kind: (Optional) Tipo de recurso a filtrar.

        • ResourceMatchers[].version: (Optional) Versión del recurso que se va a filtrar.

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

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

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

          Nota Cuando ambos resourceFilter y labelSelector se utilizan, resourceFilter corre 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 su entorno, aplique la CR. Por ejemplo:

    kubectl apply -f maria-app.yaml
Pasos
  1. Cree y aplique la definición de la aplicación utilizando uno de los siguientes ejemplos, sustituyendo valores entre paréntesis por información de su entorno. Puede incluir espacios de nombres y recursos en la definición de la aplicación mediante listas separadas por comas con los argumentos que se muestran en los ejemplos.

    Opcionalmente, puede usar una anotación cuando cree una aplicación para especificar si la aplicación puede escribir en el sistema de archivos durante una instantánea. Esto solo es aplicable a las aplicaciones definidas desde máquinas virtuales, como en entornos KubeVirt, donde los sistemas de archivos se congelan antes que las instantáneas. Si establece la anotación 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 bloquea durante una instantánea. Si utiliza la anotación pero la aplicación no tiene máquinas virtuales en la definición de la aplicación, la anotación se ignora. Si no utiliza la anotación, la aplicación sigue la "Valor de congelación de Global Trident Protect".

    Para especificar la anotación al utilizar la CLI para crear una aplicación, puede utilizar el --annotation indicador.

    • Cree la aplicación y utilice 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>
    • Cree la aplicación y configure la configuración de la aplicación local 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 utilizar --resource-filter-include y --resource-filter-exclude banderas para incluir o excluir recursos según resourceSelectionCriteria como grupo, tipo, versión, etiquetas, nombres y espacios de nombres, 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"]}]'