Sicherung und Wiederherstellung für eine Anwendung anpassen

In diesem Dokument wird beschrieben, wie Sie mit ProtectedApplication-Ressourcen das Verhalten von Sicherungen und Wiederherstellungen in Google Distributed Cloud (GDC) mit Air Gap anpassen.

Diese Schritte sind optional und nicht erforderlich, um die Sicherung und Wiederherstellung für Ihre Arbeitslasten zu konfigurieren. ProtectedApplication-Ressourcen sind optionale Kubernetes-Ressourcen in Namespaces, mit denen die Sicherung und Wiederherstellung einzelner zustandsorientierter Anwendungen angepasst werden kann. Ohne ProtectedApplication-Ressourcen gelten die folgenden Einschränkungen:

  • Sie beschränken die Granularität des Sicherungs- und Wiederherstellungsumfangs auf die Namespace-Ebene.
  • Während der Sicherung werden keine Flush- und Quiesce-Vorgänge für Arbeitslasten ausgeführt.Dies kann dazu führen, dass virtuelle Maschinen mit mehreren Laufwerken nach der Wiederherstellung nicht absturzkonsistent sind.

ProtectedApplication-Ressourcen sind optionale Kubernetes-Namespace-Ressourcen, mit denen die Sicherung und Wiederherstellung einzelner zustandsorientierter Anwendungen angepasst werden kann. Die ProtectedApplication-Ressource definiert, welche Kubernetes-Ressourcen zu einer Anwendungsinstanz gehören. Sie können eine spezielle Orchestrierung manuell mit dem Befehl kubectl einrichten, um in den folgenden Szenarien eine Sicherung und Wiederherstellung dieser Anwendungen zu erstellen:

  • Eine Reihe von Ressourcen in einem Namespace bestimmen, die unabhängig von den anderen Ressourcen in diesem Namespace gesichert oder wiederhergestellt werden können. Ein ProtectedApplication ist die detaillierteste Namespace-Entität, die Sie für einen Sicherungs- oder Wiederherstellungsbereich identifizieren können.
  • Spezialisierte Sicherungsorchestrierung, wenn die ProtectedApplication in den Bereich einer Sicherung fällt. Insbesondere wenn die ProtectedApplication PersistentVolumeClaim-Ressourcen (PVC) entweder direkt oder über eine Vorlage aus einer StatefulSet enthält, können Sie vor und nach dem Sichern der Volumes Hooks ausführen. Hooks sind Befehle, die in Anwendungscontainern ausgeführt werden. Hooks werden häufig zum Stilllegen und Aufheben von Stilllegungen verwendet und bieten eine anwendungskonsistente Sicherung.

Hinweis

Definieren Sie die Ressource ProtectedApplication, bevor Sie einen Sicherungsplan erstellen. Weitere Informationen finden Sie unter Eine Reihe von Sicherungen planen.

IAM-Rollen anfordern

Wenn Sie ProtectedApplication-Ressourcen verwenden möchten, bitten Sie Ihren IAM-Administrator der Organisation oder IAM-Projektadministrator, Ihnen eine der folgenden Rollen zuzuweisen:

  • User Cluster Backup Admin (user-cluster-backup-admin): Erstellt, ruft ab, listet auf, beobachtet, aktualisiert, patcht und löscht Sicherungsressourcen wie Sicherungs- und Wiederherstellungspläne in Nutzerclustern. Wenden Sie sich an den IAM-Administrator Ihrer Organisation, um diese Rolle anzufordern.

  • Backup Creator (backup-creator): Erstellt, ruft ab, listet auf, beobachtet, aktualisiert, patcht und löscht manuelle Sicherungs- und Wiederherstellungsanfragen. Wenden Sie sich an Ihren IAM-Projektadministrator, um diese Rolle anzufordern.

Geschützte Anwendungsressourcen bereitstellen

Das folgende YAML-Snippet ist ein Beispiel für eine Deployment-Spezifikation mit einer ProtectedApplication-Ressource, die alle mit der Anwendung verknüpften Ressourcen während der Sicherung sichert und alle Ressourcen während der Wiederherstellung wiederherstellt:

apiVersion: v1
kind: Namespace
metadata:
  name: "applications"
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: protected-application-deployment
  namespace: applications
  labels:
    app: protected
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: unprotected-application-deployment
  namespace: applications
  labels:
    app: unprotected
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
---

apiVersion: gkebackup.gke.io/v1
kind: ProtectedApplication
metadata:
  name: protected-application-test
  namespace: applications
spec:
  applicationName: protectedApplication
  resourceSelection:
    type: Selector
    selector:
      matchLabels:
        app: protected
  components:
    - name: protect-application-deployment
      resourceKind: Deployment
      resourceNames:
        - protected-application-deployment
      strategy:
        type: BackupAllRestoreAll
        backupAllRestoreAll: {}

Geben Sie die ProtectedApplication in der Liste der selectedApplications im backupScope an. Beispiel:

apiVersion: backup.gdc.goog/v1
kind: BackupPlan
metadata:
  name: protected-application-backupplan-test
  namespace: applications
spec:
  clusterName: "cluster-sample"
  backupSchedule:
    cronSchedule: "*/30 * * * *"
    paused: true
  backupConfig:
    backupScope:
      selectedApplications:
        namespacedNames:
        - name: protected-application-test
          namespace: applications
    backupRepository: "backup-repository"
  retentionPolicy:
    backupDeleteLockDays: 10
    backupRetainDays: 10

Dieses Beispiel enthält die folgenden Werte:

Wert Beschreibung
resourceSelection Definiert, wie Ressourcen identifiziert werden, die zur geschützten Anwendung gehören:
  • type: Geben Sie eine der folgenden Optionen an:
    • ApplicationName: Sichert eine sig-apps-Anwendung im selben Namespace.
    • Selector: Sichert Ressourcen, die mit einem bestimmten Selektor im selben Namespace übereinstimmen.
  • applicationName: Wenn type den Wert ApplicationName hat, wird der Name der sig-apps-Anwendung im selben Namespace angegeben.
  • selector: Wenn type den Wert Selector hat, wird der Label-Selektor angegeben, um Ressourcen im selben Namespace auszuwählen.
components Die Liste der Komponenten für die geschützte Anwendung, z. B. Deployments oder StatefulSets:
  • name: Der eindeutige Name der Komponente.
  • resourceKind: Wählen Sie zwischen Deployment oder StatefulSet aus.
  • resourceNames: Die Liste der Namen, die die resourceKind im Namespace identifizieren.

Nächste Schritte