Sicherung und Wiederherstellung für eine Anwendung anpassen

Auf dieser Seite wird beschrieben, wie Sie ProtectedApplication-Ressourcen verwenden, um das Verhalten von Sicherungen und Wiederherstellungen in Google Distributed Cloud (GDC) Air-Gapped anzupassen.

Die auf dieser Seite beschriebenen 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 Wiederherstellungsbereichs 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 Festplatten nach der Wiederherstellung nicht absturzkonsistent sind.

ProtectedApplication-Ressourcen sind optionale Kubernetes-Namespace-Ressourcen, die zum Anpassen der Sicherung und Wiederherstellung einzelner zustandsorientierter Anwendungen verwendet werden. Die ProtectedApplication-Ressource definiert, welche Kubernetes-Ressourcen zu einer Anwendungsinstanz gehören. Sie können eine spezielle Orchestrierung manuell einrichten, indem Sie mit dem Befehl kubectl eine Sicherung und Wiederherstellung dieser Anwendungen in den folgenden Szenarien 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 kleinste Namespace-Einheit, die Sie für einen Sicherungs- oder Wiederherstellungsbereich angeben können.
  • Um eine spezielle Sicherungsorchestrierung bereitzustellen, wenn ProtectedApplication in den Bereich einer Sicherung fällt. Insbesondere wenn die ProtectedApplication PersistentVolumeClaim-Ressourcen (PersistentVolumeClaim) direkt oder über eine Vorlage aus einem StatefulSet enthält, können Sie Hooks vor und nach dem Sichern der Volumes ausführen. Hooks sind Befehle, die in Anwendungscontainern ausgeführt werden. Diese Hooks werden häufig für Flush-, Quiesce- oder Unquiesce-Vorgänge verwendet und bieten eine anwendungskonsistente Sicherung.

Hinweise

Damit Sie ProtectedApplication-Ressourcen verwenden können, benötigen Sie Folgendes:

  • Sie müssen die ProtectedApplication-Ressource definieren, bevor Sie einen Sicherungsplan erstellen können. Weitere Informationen finden Sie unter Eine Reihe von Sicherungen planen.
  • Die erforderliche Identitäts- und Zugriffsrolle:

    • Für Nutzer mit der Rolle „Plattformadministrator“:
      • Administrator für Sicherungen von Nutzerclustern: Verwaltet Sicherungsressourcen wie Sicherungs- und Wiederherstellungspläne in Nutzerclustern. Bitten Sie Ihren IAM-Administrator der Organisation, Ihnen die Rolle „User Cluster Backup Admin“ (user-cluster-backup-admin) zuzuweisen.
    • Für Nutzer mit der Rolle „Application Operator“ (AO):
      • Backup Creator: Erstellt manuelle Sicherungen und führt Wiederherstellungen durch. Bitten Sie Ihren Projekt-IAM-Administrator, Ihnen die Rolle „Backup Creator“ (backup-creator) zuzuweisen.
    • Weitere Informationen finden Sie unter Rollendefinitionen.

Geschützte Anwendungsressourcen bereitstellen

Das folgende Beispiel zeigt eine Deployment-Spezifikation mit einer ProtectedApplication-Ressource, die alle Ressourcen sichert, die der Anwendung während der Sicherung zugeordnet wurden, 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

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 einem bestimmten Selektor innerhalb desselben Namespace entsprechen.
  • applicationName: Wenn type gleich ApplicationName ist, wird der Name der sig-apps-Anwendung im selben Namespace angegeben.
  • selector: Wenn type Selector ist, wird der Label-Selektor angegeben, mit dem Ressourcen im selben Namespace ausgewählt werden.
components Die Liste der Komponenten für die geschützte Anwendung, z. B. Bereitstellungen oder zustandsorientierte Sets:
  • 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