Kubernetes-Anwendungen hinzufügen und schützen
Mit NetApp Backup and Recovery können Sie Ihre Kubernetes-Cluster einfach erkennen, ohne Kubeconfig-Dateien generieren und hochladen zu müssen. Sie können Kubernetes-Cluster verbinden und die erforderliche Software mithilfe einfacher Befehle installieren, die Sie aus der Benutzeroberfläche der NetApp Console kopiert haben.
Organisationsadministrator oder SnapCenter Administrator. "Erfahren Sie mehr über die Zugriffsrollen für NetApp Backup and Recovery" . "Erfahren Sie mehr über die Zugriffsrollen der NetApp Console für alle Dienste" .
Hinzufügen und Schützen einer neuen Kubernetes-Anwendung
Der erste Schritt zum Schutz von Kubernetes-Anwendungen besteht darin, eine Anwendung innerhalb von NetApp Backup and Recovery zu erstellen. Wenn Sie eine Anwendung erstellen, machen Sie die Konsole auf die laufende Anwendung im Kubernetes-Cluster aufmerksam.
Bevor Sie eine Kubernetes-Anwendung hinzufügen und schützen können, müssen Sie"Kubernetes-Workloads entdecken" .
-
Wählen Sie in NetApp Backup and Recovery*Inventar* aus.
-
Wählen Sie eine Kubernetes-Instanz und wählen Sie Anzeigen, um die mit dieser Instanz verknüpften Ressourcen anzuzeigen.
-
Wählen Sie die Registerkarte Anwendungen.
-
Wählen Sie Anwendung erstellen.
-
Geben Sie einen Namen für die Anwendung ein.
-
Wählen Sie optional eines der folgenden Felder aus, um nach den Ressourcen zu suchen, die Sie schützen möchten:
-
Zugehöriger Cluster
-
Zugehörige Namespaces
-
Ressourcentypen
-
Beschriftungsselektoren
-
-
Wählen Sie optional Cluster Scoped Resources aus, um Ressourcen auszuwählen, die auf Clusterebene liegen. Wenn Sie diese einschließen, werden sie der Anwendung beim Erstellen hinzugefügt.
-
Wählen Sie optional Suchen aus, um die Ressourcen basierend auf Ihren Suchkriterien zu finden.
Die Konsole speichert die Suchparameter oder Ergebnisse nicht. Die Parameter werden verwendet, um im ausgewählten Kubernetes-Cluster nach Ressourcen zu suchen, die in die Anwendung integriert werden können. -
Die Konsole zeigt eine Liste der Ressourcen an, die Ihren Suchkriterien entsprechen.
-
Wenn die Liste die Ressourcen enthält, die Sie schützen möchten, wählen Sie Weiter.
-
Wählen Sie im Bereich Richtlinie optional eine vorhandene Schutzrichtlinie zum Schutz der Anwendung aus oder erstellen Sie eine neue Richtlinie. Wenn Sie keine Richtlinie auswählen, wird die Anwendung ohne Schutzrichtlinie erstellt. Du kannst"Fügen Sie eine Schutzrichtlinie hinzu" später.
-
Aktivieren und konfigurieren Sie im Bereich Prescripts und Postscripts alle Prescript- oder Postscript-Ausführungs-Hooks, die Sie vor oder nach Sicherungsvorgängen ausführen möchten. Um Präskripte oder Postskripte zu aktivieren, müssen Sie bereits mindestens ein"Ausführungs-Hook-Vorlage" .
-
Wählen Sie Erstellen.
Die Anwendung wird erstellt und in der Liste der Anwendungen auf der Registerkarte Anwendungen des Kubernetes-Inventars angezeigt. Die NetApp Console ermöglicht den Schutz der Anwendung basierend auf Ihren Einstellungen und Sie können den Fortschritt im Bereich Überwachung der Sicherung und Wiederherstellung überwachen.
-
Erstellen Sie die CR-Datei der Zielanwendung:
-
Erstellen Sie die benutzerdefinierte Ressourcendatei (CR) und benennen Sie sie (zum Beispiel
my-app-name.yaml). -
Konfigurieren Sie die folgenden Attribute:
-
metadata.name: (Erforderlich) Der Name der benutzerdefinierten Anwendungsressource. Merken Sie sich den Namen, den Sie wählen, da andere für Schutzvorgänge benötigte CR-Dateien auf diesen Wert verweisen.
-
spec.includedNamespaces: (Erforderlich) Verwenden Sie Namespace und Label-Selektor, um die Namespaces und Ressourcen anzugeben, die die Anwendung verwendet. Der Anwendungsnamespace 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-Scoped-Ressourcen anzugeben, die in die Anwendungsdefinition aufgenommen werden sollen. Mit diesem Attribut können Sie diese Ressourcen anhand ihrer Gruppe, Version, Art und Bezeichnungen auswählen.
-
groupVersionKind: (Erforderlich) Gibt die API-Gruppe, die Version und die Art der clusterweiten Ressource an.
-
labelSelector: (Optional) Filtert die clusterweiten Ressourcen anhand ihrer Labels.
-
-
-
Konfigurieren Sie die folgenden Annotationen, falls erforderlich:
-
metadata.annotations.protect.trident.netapp.io/skip-vm-freeze: (Optional) Diese Annotation ist nur für Anwendungen relevant, die von virtuellen Maschinen aus definiert werden, z. B. in KubeVirt-Umgebungen, in denen das Dateisystem vor Snapshots eingefroren wird. Legen Sie fest, ob diese Anwendung während eines Snapshots auf das Dateisystem schreiben darf. Ist die Option auf true gesetzt, ignoriert die Anwendung die globale Einstellung und kann während eines Snapshots auf das Dateisystem schreiben. Ist die Option auf false gesetzt, ignoriert die Anwendung die globale Einstellung und das Dateisystem wird während eines Snapshots eingefroren. Wird die Option angegeben, die Anwendung hat jedoch keine virtuellen Maschinen in der Anwendungsdefinition, wird die Annotation ignoriert. Wird sie nicht angegeben, folgt die Anwendung der "Einstellung für das globale Dateisystem-Freeze".
-
protect.trident.netapp.io/protection-command: (Optional) Verwenden Sie diese Annotation, um Backup and Recovery anzuweisen, die Anwendung zu schützen oder den Schutz zu beenden. Die möglichen Werte sind
protectoderunprotect. -
protect.trident.netapp.io/protection-policy-name: (Optional) Verwenden Sie diese Annotation, um den Namen der Backup und Recovery Datensicherungsstrategie anzugeben, die Sie zum Schutz dieser Anwendung verwenden möchten. Diese Datensicherungsstrategie muss bereits in Backup und Recovery vorhanden sein.
-
-
Falls Sie diese Annotation nachträglich anwenden müssen, nachdem eine Anwendung bereits erstellt wurde, können Sie den 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"
protect.trident.netapp.io/protection-command: "protect"
protect.trident.netapp.io/protection-policy-name: "policy-name"
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) Fügen Sie eine Filterung hinzu, die Ressourcen mit bestimmten Labels ein- oder ausschließt:
-
resourceFilter.resourceSelectionCriteria: (Für die Filterung erforderlich) Verwenden Sie
IncludeoderExclude, um eine in resourceMatchers definierte Ressource ein- oder auszuschließen. Fügen Sie die folgenden resourceMatchers Parameter hinzu, um die Ressourcen zu definieren, die ein- oder auszuschließen sind:-
resourceFilter.resourceMatchers: Ein Array von resourceMatcher-Objekten. Wenn Sie mehrere Elemente in diesem Array definieren, werden diese mit einer ODER-Verknüpfung verglichen und die Felder innerhalb jedes Elements (group, kind, version) werden mit einer UND-Verknüpfung verglichen.
-
resourceMatchers[].group: (Optional) Gruppe der zu filternden Ressource.
-
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 Ressource, die gefiltert werden soll.
-
resourceMatchers[].namespaces: (Optional) Namespaces im Kubernetes metadata.name-Feld der Ressource, die gefiltert werden soll.
-
resourceMatchers[].labelSelectors: (Optional) Label-Selektorzeichenfolge im Kubernetes-Metadatenfeld name der Ressource, wie definiert in der "Kubernetes-Dokumentation". Zum Beispiel:
"trident.netapp.io/os=linux".Wenn sowohl resourceFilterals auchlabelSelectorverwendet werden, wirdresourceFilterzuerst ausgeführt und anschließendlabelSelectorauf 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. Zum Beispiel:
kubectl apply -f my-app-name.yaml