Definieren Sie eine Anwendung für die Verwaltung mit Trident Protect.
Sie können eine Anwendung, die Sie mit Trident Protect verwalten möchten, definieren, indem Sie eine Anwendungs-CR und eine zugehörige AppVault-CR erstellen.
Erstellen Sie eine AppVault CR
Sie müssen einen AppVault CR erstellen, der bei der Durchführung von Datenschutzoperationen an der Anwendung verwendet wird, und der AppVault CR muss sich auf dem Cluster befinden, auf dem Trident Protect installiert ist. Die AppVault-CR ist spezifisch für Ihre Umgebung; Beispiele für AppVault-CRs finden Sie unter"AppVault-Benutzerressourcen."
Definieren einer Anwendung
Sie müssen jede Anwendung definieren, die Sie mit Trident Protect verwalten möchten. Sie können eine Anwendung zur Verwaltung definieren, indem Sie entweder manuell eine Anwendungs-CR erstellen oder die Trident Protect CLI verwenden.
-
Erstellen Sie die CR-Datei der Zielanwendung:
-
Erstellen Sie die benutzerdefinierte Ressourcendatei (CR-Datei) und benennen Sie sie (zum Beispiel).
maria-app.yaml). -
Konfigurieren Sie die folgenden Attribute:
-
metadata.name: (Erforderlich) Der Name der benutzerdefinierten Anwendungsressource. Merken Sie sich den gewählten Namen, da andere für Schutzvorgänge benötigte CR-Dateien auf diesen Wert verweisen.
-
spec.includedNamespaces: (Erforderlich) Verwenden Sie den Namespace- und Label-Selektor, um die Namespaces und Ressourcen anzugeben, die die Anwendung verwendet. Der Anwendungs-Namespace muss Teil dieser Liste sein. Der Label-Selektor ist optional und kann verwendet werden, um Ressourcen innerhalb jedes angegebenen Namespace zu filtern.
-
spec.includedClusterScopedResources: (Optional) Verwenden Sie dieses Attribut, um Cluster-bezogene Ressourcen anzugeben, die in die Anwendungsdefinition aufgenommen werden sollen. Mithilfe dieses Attributs können Sie diese Ressourcen anhand ihrer Gruppe, Version, Art und Bezeichnungen auswählen.
-
groupVersionKind: (Erforderlich) Gibt die API-Gruppe, Version und Art der clusterweiten Ressource an.
-
labelSelector: (Optional) Filtert die clusterweiten Ressourcen anhand ihrer Labels.
-
-
metadata.annotations.protect.trident.netapp.io/skip-vm-freeze: (Optional) Diese Annotation ist nur für Anwendungen anwendbar, die von virtuellen Maschinen definiert werden, wie z. B. in KubeVirt-Umgebungen, wo Dateisystem-Freezes vor Snapshots auftreten. Legen Sie fest, ob diese Anwendung während einer Snapshot-Erstellung auf das Dateisystem schreiben darf. Wenn diese Option auf „true“ gesetzt ist, ignoriert die Anwendung die globale Einstellung und kann während eines Snapshots auf das Dateisystem schreiben. Wenn der Wert auf „false“ gesetzt ist, ignoriert die Anwendung die globale Einstellung und das Dateisystem wird während eines Snapshots eingefroren. Wird dies angegeben, die Anwendung aber keine virtuellen Maschinen in der Anwendungsdefinition aufweist, wird die Annotation ignoriert. Sofern nichts anderes angegeben ist, gilt die folgende Vorgehensweise:"globale Trident Schutzeinstellung zum Einfrieren" .
-
-
Falls Sie diese Annotation nachträglich anwenden müssen, nachdem eine Anwendung bereits erstellt wurde, können Sie folgenden Befehl verwenden:
kubectl annotate application -n <application CR namespace> <application CR name> protect.trident.netapp.io/skip-vm-freeze="true"
+
Beispiel-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
-
(Optional) Filter hinzufügen, die Ressourcen mit bestimmten Bezeichnungen ein- oder ausschließen:
-
resourceFilter.resourceSelectionCriteria: (Für die Filterung erforderlich) Verwenden Sie
IncludeoderExcludeEine in resourceMatchers definierte Ressource ein- oder ausschließen. Fügen Sie die folgenden resourceMatchers-Parameter hinzu, um die ein- oder auszuschließenden Ressourcen zu definieren:-
resourceFilter.resourceMatchers: Ein Array von resourceMatcher-Objekten. Wenn Sie mehrere Elemente in diesem Array definieren, werden diese per OR-Verknüpfung abgeglichen, und die Felder innerhalb jedes Elements (Gruppe, Art, Version) werden per AND-Verknüpfung abgeglichen.
-
resourceMatchers[].group: (Optional) Gruppe der zu filternden Ressourcen.
-
resourceMatchers[].kind: (Optional) Art der zu filternden Ressource.
-
resourceMatchers[].version: (Optional) Version der zu filternden Ressource.
-
resourceMatchers[].names: (Optional) Namen im Kubernetes metadata.name Feld der zu filternden Ressource.
-
resourceMatchers[].namespaces: (Optional) Namespaces im Kubernetes metadata.name-Feld der zu filternden Ressource.
-
resourceMatchers[].labelSelectors: (Optional) Label-Selektorzeichenfolge im Kubernetes-Metadatenfeld „name“ der Ressource, wie in der Dokumentation definiert. "Kubernetes-Dokumentation" . Zum Beispiel:
"trident.netapp.io/os=linux".Wenn beide resourceFilterUndlabelSelectorwerden verwendetresourceFilterzuerst läuft und dannlabelSelectorwird auf die resultierenden Ressourcen angewendet.
-
Beispiel:
-
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"] -
-
Nachdem Sie die Anwendungs-CR erstellt haben, die zu Ihrer Umgebung passt, wenden Sie die CR an. Beispiel:
kubectl apply -f maria-app.yaml
-
Erstellen und wenden Sie die Anwendungsdefinition anhand eines der folgenden Beispiele an und ersetzen Sie die Werte in Klammern durch Informationen aus Ihrer Umgebung. Sie können Namespaces und Ressourcen in die Anwendungsdefinition einbinden, indem Sie kommagetrennte Listen mit den in den Beispielen gezeigten Argumenten verwenden.
Optional können Sie beim Erstellen einer App eine Annotation verwenden, um anzugeben, ob die Anwendung während eines Snapshots auf das Dateisystem schreiben darf. Dies gilt nur für Anwendungen, die von virtuellen Maschinen definiert werden, wie beispielsweise in KubeVirt-Umgebungen, wo Dateisystem-Freezes vor Snapshots auftreten. Wenn Sie die Annotation auf
trueDie Anwendung ignoriert die globale Einstellung und kann während eines Snapshots in das Dateisystem schreiben. Wenn Sie es einstellen auffalseDie Anwendung ignoriert die globale Einstellung und das Dateisystem wird während eines Snapshots eingefroren. Wenn Sie die Annotation verwenden, die Anwendung aber keine virtuellen Maschinen in der Anwendungsdefinition aufweist, wird die Annotation ignoriert. Wenn Sie die Annotation nicht verwenden, folgt die Anwendung dem Standard."globale Trident Schutzeinstellung zum Einfrieren" .Um die Annotation bei der Erstellung einer Anwendung über die CLI anzugeben, können Sie Folgendes verwenden:
--annotationFlagge.-
Erstellen Sie die Anwendung und verwenden Sie die globale Einstellung für das Einfrieren des Dateisystems:
tridentctl-protect create application <my_new_app_cr_name> --namespaces <namespaces_to_include> --csr <cluster_scoped_resources_to_include> --namespace <my-app-namespace> -
Erstellen Sie die Anwendung und konfigurieren Sie die lokalen Anwendungseinstellungen für das Dateisystem-Einfrierverhalten:
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">Sie können verwenden
--resource-filter-includeUnd--resource-filter-excludeKennzeichnungen zum Ein- oder Ausschließen von Ressourcen basierend aufresourceSelectionCriteriawie beispielsweise Gruppe, Art, Version, Bezeichnungen, Namen und Namensräume, wie im folgenden Beispiel gezeigt:
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"]}]' -