Ce document explique comment utiliser les ressources ProtectedApplication pour personnaliser le comportement de sauvegarde et de restauration dans Google Distributed Cloud (GDC) avec air gap.
Ces étapes sont facultatives et ne sont pas nécessaires pour configurer la sauvegarde et la restauration de vos charges de travail. Les ressources ProtectedApplication sont des ressources Kubernetes facultatives dans des espaces de noms qui personnalisent la sauvegarde et la restauration d'applications avec état individuelles. Sans ressources ProtectedApplication, les restrictions suivantes s'appliquent :
- Vous limitez la précision du champ d'application de la sauvegarde et de la restauration au niveau de l'espace de noms.
- Aucune opération de vidage et de mise au repos n'est effectuée sur les charges de travail pendant l'exécution de la sauvegarde.Par conséquent, les machines virtuelles dotées de plusieurs disques peuvent ne pas être cohérentes après la restauration.
Les ressources ProtectedApplication sont des ressources d'espace de noms Kubernetes facultatives utilisées pour personnaliser la sauvegarde et la restauration des applications avec état individuelles.
La ressource ProtectedApplication définit les ressources Kubernetes qui appartiennent à une instance d'application. Vous pouvez configurer manuellement une orchestration spécialisée à l'aide de la commande kubectl pour créer une sauvegarde et une restauration de ces applications dans les scénarios suivants :
- Pour identifier un ensemble de ressources dans un espace de noms pouvant être sauvegardées ou restaurées indépendamment des autres ressources de cet espace de noms. Un
ProtectedApplicationest l'entité d'espace de noms la plus précise que vous pouvez identifier pour un champ d'application de sauvegarde ou de restauration. - Fournir une orchestration de sauvegarde spécialisée chaque fois que l'opération
ProtectedApplicationse produit dans le cadre d'une sauvegarde. En particulier, siProtectedApplicationcontient des ressourcesPersistentVolumeClaim(PVC) directement ou via un modèle d'unStatefulSet, vous pouvez exécuter des hooks avant et après la sauvegarde des volumes. Les hooks sont des commandes qui s'exécutent dans les conteneurs d'application. Ces hooks sont souvent utilisés pour les opérations de vidage, de suspension ou de reprise, et fournissent une sauvegarde cohérente au niveau de l'application.
Avant de commencer
Définissez la ressource ProtectedApplication avant de créer un plan de sauvegarde. Pour en savoir plus, consultez Planifier un ensemble de sauvegardes.
Demander des rôles IAM
Pour utiliser les ressources ProtectedApplication, demandez à votre administrateur d'organisation IAM ou à votre administrateur de projet IAM de vous attribuer l'un des rôles suivants :
Administrateur de sauvegarde de cluster d'utilisateur (
user-cluster-backup-admin) : crée, obtient, liste, surveille, met à jour, corrige et supprime des ressources de sauvegarde telles que des plans de sauvegarde et de restauration dans les clusters d'utilisateur. Contactez l'administrateur de l'organisation IAM pour demander ce rôle.Créateur de sauvegardes (
backup-creator) : crée, obtient, liste, surveille, met à jour, corrige et supprime les requêtes de sauvegarde manuelle et les requêtes de restauration manuelle. Contactez l'administrateur de projet IAM pour demander ce rôle.
Déployer des ressources d'application protégée
L'extrait YAML suivant est un exemple de spécification Deployment avec une ressource ProtectedApplication qui sauvegarde toutes les ressources associées à l'application pendant la sauvegarde et restaure toutes les ressources lors de la restauration :
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: {}
Spécifiez ProtectedApplication dans la liste des selectedApplications de backupScope. Exemple :
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
Cet exemple inclut les valeurs suivantes :
| Valeur | Description |
|---|---|
resourceSelection |
Définit comment identifier les ressources appartenant à l'application protégée :
|
components |
Liste des composants de l'application protégée, tels que les déploiements ou les ensembles avec état :
|
Étapes suivantes
- Pour sélectionner une stratégie d'application protégée, consultez Stratégies d'application protégée.