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) mit Air Gap 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.Das 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 identifizieren können.
  • Um eine spezielle Sicherungsorchestrierung bereitzustellen, wenn die ProtectedApplication in den Umfang 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 „Platform Administrator“ (PA):
      • 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 Backups 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

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

apiVersion: v1
kind: Namespace
metadata:
  name: USER_CLUSTER_NS
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: protected-application-deployment
  namespace: USER_CLUSTER_NS
  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: USER_CLUSTER_NS
  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_APP_NAME
  namespace: USER_CLUSTER_NS
spec:
  resourceSelection:
    type: Selector
    selector:
      matchLabels:
        app: protected
  components:
    - name: application-deployment
      resourceKind: Deployment
      resourceNames:
        - protected-application-deployment
      strategy:
        type: BackupAllRestoreAll

Ersetzen Sie Folgendes:

  • USER_CLUSTER_NS: der Namespace im Nutzercluster, in dem sich Ihre geschützte Anwendung befindet.
  • PROTECTED_APP_NAME: der Name Ihres ProtectedApplication.

Dieses Beispiel enthält die folgenden Werte für ProtectedApplication:

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 ApplicationName ist, wird der Name der sig-apps-Anwendung im selben Namespace angegeben. Dies ist die Anwendung, für die die Datenschutzspezifikation gilt.
  • 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.

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

apiVersion: backup.gdc.goog/v1
kind: BackupPlan
metadata:
  name: BACKUP_PLAN
  namespace: USER_CLUSTER_NS
spec:
  clusterName: USER_CLUSTER
  backupSchedule:
    cronSchedule: CRON_SCHEDULE
    paused: BACKUP_SCHEDULE_STATUS
  backupConfig:
    backupScope:
      selectedApplications:
        namespacedNames:
        - name: PROTECTED_APP_NAME
          namespace: USER_CLUSTER_NS
    backupRepository: BACKUP_REPOSITORY
    retentionPolicy:
      backupDeleteLockDays: BACKUP_DELETE_LOCK_DAYS
      backupRetainDays: BACKUP_RETAIN_DAYS

Ersetzen Sie Folgendes:

  • BACKUP_PLAN: der Name Ihres Sicherungsplans.
  • USER_CLUSTER: der Name Ihres Nutzerclusters.
  • CRON_SCHEDULE: Ein Crontab-Zeitplan, der angibt, wann Sicherungen geplant werden sollen, z. B. "*/30 * * * *". Das Mindestintervall zwischen geplanten Sicherungen beträgt 10 Minuten.
  • BACKUP_SCHEDULE_STATUS: Wenn true, werden keine regelmäßigen Sicherungen geplant.
  • PROTECTED_APP_NAME: Der Name, den Sie Ihrer ProtectedApplication-Ressource gegeben haben.
  • BACKUP_REPOSITORY: der Name des Sicherungs-Repositorys, das Sie zum Speichern von Sicherungen verwenden.
  • BACKUP_DELETE_LOCK_DAYS: verhindert das Löschen der Sicherung für die Anzahl der Tage, die nach der Erstellung der Sicherung angegeben wurden, z. B. 10 days.
  • BACKUP_RETAIN_DAYS: Definiert die Gesamtzahl der Tage, für die die Sicherung beibehalten wird. Nach diesem Zeitraum wird die Sicherung automatisch gelöscht. Wenn Sie diesen Wert auf eine höhere Zahl festlegen, kann es zu Speicherplatzmangel kommen. Wenn Sie ihn auf einen niedrigeren Wert festlegen, kann das Risiko eines Datenverlusts steigen. Wenn nicht angegeben, wird dieser Wert standardmäßig auf 35 festgelegt. Aufbewahrungsrichtlinien überschreiben nicht die Aufbewahrungsrichtlinien des Speicherorts und dürfen 90 Tage nicht überschreiten.

Nächste Schritte