Definir una aplicación para la gestión con Trident Protect
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. La solicitud de cambio (CR) de AppVault es específica de su entorno; para ver ejemplos de solicitudes de cambio de cambio de AppVault, consulte"Recursos personalizados de AppVault."
Defina una aplicación
Debe definir cada aplicación que desee administrar con Trident Protect. Puede definir una aplicación para su administración ya sea creando manualmente un CR de aplicación o utilizando la CLI de Trident Protect.
-
Cree el archivo CR de la aplicación de destino:
-
Cree el archivo de recursos personalizados (CR) y asígnele un nombre (por ejemplo,
maria-app.yaml). -
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 las congelaciones del sistema de archivos ocurren antes de las instantáneas. Especifique si esta aplicación puede escribir en el sistema de archivos durante una instantánea. Si se establece en verdadero, la aplicación ignora la configuración global y puede escribir en el sistema de archivos durante una instantánea. Si se establece en falso, 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 el procedimiento establecido."Configuración de congelación global de 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
-
(Opcional) Agregue filtros que incluyan o excluyan recursos marcados con etiquetas particulares:
-
ResourceFilter.resourceSelectionCriteria: (Requerido para filtrar) Usar
IncludeoExcludeincluir 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": .Cuando ambos resourceFilterylabelSelectorse utilizan,resourceFiltercorre primero y luegolabelSelectorSe 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"] -
-
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
-
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 al crear 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 aplicaciones definidas desde máquinas virtuales, como en entornos KubeVirt, donde se producen congelaciones del sistema de archivos antes de las instantáneas. Si configura la anotación a
trueLa aplicación ignora la configuración global y puede escribir en el sistema de archivos durante una instantánea. Si lo configuras parafalseLa aplicación ignora la configuración global y el sistema de archivos se congela durante la toma de 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 utilizas la anotación, la aplicación sigue el comportamiento esperado."Configuración de congelación global de Trident Protect" .Para especificar la anotación al utilizar la CLI para crear una aplicación, puede utilizar el
--annotationindicador.-
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-includey--resource-filter-excludebanderas para incluir o excluir recursos segúnresourceSelectionCriteriacomo 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"]}]' -