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
ProtectedApplicationist die detaillierteste Namespace-Entität, die Sie für einen Sicherungs- oder Wiederherstellungsbereich identifizieren können. - Spezialisierte Sicherungsorchestrierung, wenn die
ProtectedApplicationin den Bereich einer Sicherung fällt. Insbesondere wenn dieProtectedApplicationPersistentVolumeClaim-Ressourcen (PVC) entweder direkt oder über eine Vorlage aus einerStatefulSetenthä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:
|
components |
Die Liste der Komponenten für die geschützte Anwendung, z. B. Deployments oder StatefulSets:
|
Nächste Schritte
- Informationen zum Auswählen einer Strategie für geschützte Anwendungen finden Sie unter Strategien für geschützte Anwendungen.