Definisci un'applicazione per la gestione con Trident Protect
È possibile definire un'applicazione che si desidera gestire con Trident Protect creando una CR dell'applicazione e una CR AppVault associata.
Crea una CR AppVault
È necessario creare un AppVault CR che verrà utilizzato durante l'esecuzione di operazioni di protezione dei dati sull'applicazione e il AppVault CR deve risiedere nel cluster in cui è installato Trident Protect. Il CR di AppVault è specifico per il tuo ambiente; per esempi di CR di AppVault, fai riferimento a"Risorse personalizzate di AppVault."
Definire un'applicazione
È necessario definire ciascuna applicazione che si desidera gestire con Trident Protect. È possibile definire un'applicazione per la gestione creando manualmente un CR dell'applicazione oppure utilizzando la CLI Trident Protect.
-
Creare il file CR dell'applicazione di destinazione:
-
Crea il file di risorse personalizzate (CR) e assegnagli un nome (ad esempio,
maria-app.yaml). -
Configurare i seguenti attributi:
-
metadata.name: (Obbligatorio) Nome della risorsa personalizzata dell'applicazione. Prendi nota del nome scelto perché altri file CR necessari per le operazioni di protezione fanno riferimento a questo valore.
-
spec.includedNamespaces: (Obbligatorio) Utilizza il selettore di namespace ed etichette per specificare i namespace e le risorse utilizzati dall'applicazione. Lo spazio dei nomi dell'applicazione deve far parte di questo elenco. Il selettore di etichette è facoltativo e può essere utilizzato per filtrare le risorse all'interno di ogni namespace specificato.
-
spec.includedClusterScopedResources: (Facoltativo) Utilizzare questo attributo per specificare le risorse con ambito cluster da includere nella definizione dell'applicazione. Questo attributo consente di selezionare queste risorse in base al gruppo, alla versione, al tipo e alle etichette.
-
groupVersionKind: (Obbligatorio) Specifica il gruppo API, la versione e il tipo della risorsa con ambito cluster.
-
labelSelector: (Facoltativo) Filtra le risorse con ambito cluster in base alle loro etichette.
-
-
metadata.annotations.protect.trident.netapp.io/skip-vm-freeze: (Facoltativo) Questa annotazione è applicabile solo alle applicazioni definite da macchine virtuali, come negli ambienti KubeVirt, in cui i blocchi del file system si verificano prima degli snapshot. Specificare se questa applicazione può scrivere sul file system durante uno snapshot. Se impostato su true, l'applicazione ignora l'impostazione globale e può scrivere sul file system durante uno snapshot. Se impostato su false, l'applicazione ignora l'impostazione globale e il file system viene bloccato durante uno snapshot. Se specificato ma l'applicazione non ha macchine virtuali nella definizione dell'applicazione, l'annotazione viene ignorata. Se non specificato, l'applicazione segue la"impostazione di protezione antigelo Trident globale" .
-
-
Se è necessario applicare questa annotazione dopo che un'applicazione è già stata creata, è possibile utilizzare il seguente comando:
kubectl annotate application -n <application CR namespace> <application CR name> protect.trident.netapp.io/skip-vm-freeze="true"
+
Esempio 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
-
(Facoltativo) Aggiungi un filtro che includa o escluda le risorse contrassegnate con etichette particolari:
-
resourceFilter.resourceSelectionCriteria: (Obbligatorio per il filtraggio) Utilizzare
IncludeOExcludeper includere o escludere una risorsa definita in resourceMatchers. Aggiungere i seguenti parametri resourceMatchers per definire le risorse da includere o escludere:-
resourceFilter.resourceMatchers: un array di oggetti resourceMatcher. Se si definiscono più elementi in questo array, essi corrispondono come un'operazione OR e i campi all'interno di ciascun elemento (gruppo, tipo, versione) corrispondono come un'operazione AND.
-
resourceMatchers[].group: (Facoltativo) Gruppo della risorsa da filtrare.
-
resourceMatchers[].kind: (Facoltativo) Tipo di risorsa da filtrare.
-
resourceMatchers[].version: (Facoltativo) Versione della risorsa da filtrare.
-
resourceMatchers[].names: (Facoltativo) Nomi nel campo metadata.name di Kubernetes della risorsa da filtrare.
-
resourceMatchers[].namespaces: (Facoltativo) Spazi dei nomi nel campo metadata.name di Kubernetes della risorsa da filtrare.
-
resourceMatchers[].labelSelectors: (Facoltativo) Stringa del selettore di etichetta nel campo metadata.name di Kubernetes della risorsa come definito in "Documentazione di Kubernetes" . Per esempio:
"trident.netapp.io/os=linux".Quando entrambi resourceFilterElabelSelectorvengono utilizzati,resourceFiltercorre prima, e poilabelSelectorviene applicato alle risorse risultanti.
-
Per esempio:
-
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"] -
-
Dopo aver creato la CR dell'applicazione adatta al tuo ambiente, applica la CR. Per esempio:
kubectl apply -f maria-app.yaml
-
Crea e applica la definizione dell'applicazione utilizzando uno degli esempi seguenti, sostituendo i valori tra parentesi con le informazioni provenienti dal tuo ambiente. È possibile includere namespace e risorse nella definizione dell'applicazione utilizzando elenchi separati da virgole con gli argomenti mostrati negli esempi.
Facoltativamente, quando si crea un'app è possibile utilizzare un'annotazione per specificare se l'applicazione può scrivere sul file system durante uno snapshot. Ciò è applicabile solo alle applicazioni definite da macchine virtuali, come negli ambienti KubeVirt, in cui si verificano blocchi del file system prima degli snapshot. Se si imposta l'annotazione su
true, l'applicazione ignora l'impostazione globale e può scrivere sul file system durante uno snapshot. Se lo imposti sufalse, l'applicazione ignora l'impostazione globale e il file system viene bloccato durante uno snapshot. Se si utilizza l'annotazione ma l'applicazione non ha macchine virtuali nella definizione dell'applicazione, l'annotazione viene ignorata. Se non si utilizza l'annotazione, l'applicazione segue la"impostazione di protezione antigelo Trident globale" .Per specificare l'annotazione quando si utilizza la CLI per creare un'applicazione, è possibile utilizzare
--annotationbandiera.-
Creare l'applicazione e utilizzare l'impostazione globale per il comportamento di blocco del file system:
tridentctl-protect create application <my_new_app_cr_name> --namespaces <namespaces_to_include> --csr <cluster_scoped_resources_to_include> --namespace <my-app-namespace> -
Creare l'applicazione e configurare le impostazioni dell'applicazione locale per il comportamento di blocco del file system:
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">Puoi usare
--resource-filter-includeE--resource-filter-excludeflag per includere o escludere risorse in base aresourceSelectionCriteriacome gruppo, tipo, versione, etichette, nomi e namespace, come mostrato nel seguente esempio:
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"]}]' -