Cette page explique comment configurer des dépôts de sauvegarde pour les buckets Google Distributed Cloud (GDC) à double zone isolés. Cela vous permet de maintenir une haute disponibilité pour les données et applications critiques tout en minimisant les temps d'arrêt en cas de défaillance d'une zone. Cette page explique comment créer des buckets bizones, copier des secrets de bucket et configurer des dépôts de sauvegarde dans plusieurs zones.
Cette page s'adresse aux administrateurs informatiques du groupe des administrateurs de plate-forme, qui sont chargés de gérer les ressources au sein de leur organisation, et aux développeurs d'applications du groupe des opérateurs d'applications, qui sont chargés de développer et de gérer les applications dans un univers GDC.
Pour en savoir plus, consultez la documentation sur les audiences pour GDC air-gapped.
Avant de commencer
Avant d'utiliser les services de sauvegarde et de restauration pour les buckets GDC à double zone, vous devez disposer des éléments suivants :
- Environnement provisionné avec au moins deux zones.
- Accès au client de l'organisation mondiale ou au client racine mondial.
- Si votre charge de travail est provisionnée dans un projet, utilisez le client d'organisation global.
- Si votre charge de travail est provisionnée à la racine, utilisez le client racine global.
- Le rôle
global-project-bucket-admin, qui est requis pour créer des buckets bizones.
Créer un bucket bizonal
Pour créer un bucket à double zone, vous devez d'abord créer une ressource de projet dans laquelle le bucket résidera. Pour créer un projet, procédez comme suit :
Créez une ressource de projet dans un cluster d'organisation global :
apiVersion: resourcemanager.global.gdc.goog/v1 kind: Project metadata: namespace: platform name: PROJECT_NAME labels: object.gdc.goog/tenant-category: userRemplacez les éléments suivants :
PROJECT_NAME: nom du projet.
Créez un bucket bizonal :
apiVersion: object.global.gdc.goog/v1 kind: Bucket metadata: name: BUCKET_NAME namespace: PROJECT_NAME spec: location: LOCATION_TYPE description: DESCRIPTION storageClass: StandardRemplacez les éléments suivants :
BUCKET_NAME: nom du bucket.LOCATION_TYPE: type de réplication. Pour la réplication synchrone, la valeur estsyncz1z2. Pour la réplication asynchrone, la valeur estasyncz1z2.DESCRIPTION: description textuelle du bucket.
Créez un compte de service et une liaison de rôle IAM (Identity and Access Management) pour accorder les autorisations requises pour le bucket :
apiVersion: v1 kind: ServiceAccount metadata: name: BUCKET_NAME-sa namespace: PROJECT_NAME --- apiVersion: iam.global.gdc.goog/v1 kind: IAMRoleBinding metadata: namespace: PROJECT_NAME name: BUCKET_NAME-admin-binding spec: roleRef: apiGroup: iam.global.gdc.goog kind: IAMRole name: project-bucket-object-admin subjects: - kind: ServiceAccount name: BUCKET_NAME-sa namespace: PROJECT_NAMEAttendez que l'état du bucket indique
ready.
Copier le secret du bucket dans les deux zones
Une fois le bucket et les autorisations requises configurés, un secret est généré dans un cluster d'organisation global, qui peut être identifié par ses annotations.
Vérifiez qu'un secret a été généré avec l'annotation du bucket :
export BUCKET_SECRET=$(kubectl get secret -n PROJECT_NAME -o jsonpath="{range .items[*]}{.metadata.name}{':'}{.metadata.annotations['object\.gdc\.goog/subject']}{'\n'}{end}" | grep :BUCKET_NAME | cut -f1 -d :)Récupérez le contenu du secret :
kubectl get secret -n PROJECT_NAME BUCKET_SECRET -o yaml > bucket_secret.yamlCréez le même secret dans le cluster de gestion de l'organisation, dans les zones 1 et 2. Veillez à supprimer
resourceVersion,uidetcreationTimeStampdu fichier YAML pour éviter les erreurs de création :# zone-1 kubectl apply -f bucket_secret.yaml # zone-2 kubectl apply -f bucket_secret.yaml
Créer des dépôts de sauvegarde
Une fois le bucket et les secrets configurés, créez un dépôt de sauvegarde dans la zone 1 et la zone 2.
Pour obtenir des informations sur le bucket, comme le nom de domaine complet et les points de terminaison, exécutez la commande suivante dans un cluster d'organisation global. Extrayez
fullyQualifiedNameetzonalEndpointsdu résultat :kubectl get buckets.object.global.gdc.goog -n PROJECT_NAME BUCKET_NAME -o yamlPour créer un dépôt de sauvegarde en lecture et écriture dans la zone 1 du cluster de gestion, utilisez la commande suivante. Veillez à utiliser le point de terminaison zonal de la zone 1 :
apiVersion: backup.gdc.goog/v1 kind: BackupRepository metadata: annotations: backup.gdc.goog/dz-bucket: "true" backup.gdc.goog/dz-bucket-info-namespace: PROJECT_NAME finalizers: - backup.gdc.goog/sentinel-finalizer generation: 1 name: BACKUP_REPOSITORY_NAME spec: endpoint: ENDPOINT force: false importPolicy: ReadWrite s3Options: bucket: BUCKET_FULL_NAME forcePathStyle: true region: zone2 secretReference: name: BUCKET_SECRET namespace: PROJECT_NAME type: S3Remplacez les éléments suivants :
BACKUP_REPOSITORY_NAME: nom du dépôt de sauvegarde.ENDPOINT: point de terminaison zonal de la zone 1.BUCKET_FULL_NAME: nom complet du bucket.BUCKET_SECRET: secret du bucket.
Vérifiez que le dépôt de sauvegarde a bien été créé :
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAMEAnnotez le dépôt de sauvegarde avec des annotations de bucket bizone :
kubectl -n PROJECT_NAME annotate --overwrite backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME backup.gdc.goog/dz-bucket="true" kubectl -n PROJECT_NAME annotate --overwrite backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME backup.gdc.goog/dz-bucket-info-namespace=PROJECT_NAMECréez un dépôt en lecture seule dans la zone 2 du cluster de gestion. Utilisez le point de terminaison zonal de la zone 2 pour cette commande :
apiVersion: backup.gdc.goog/v1 kind: ClusterBackupRepository metadata: annotations: backup.gdc.goog/dz-bucket: "true" backup.gdc.goog/dz-bucket-info-namespace: PROJECT_NAME finalizers: - backup.gdc.goog/sentinel-finalizer generation: 1 name: BACKUP_REPOSITORY_NAME spec: endpoint: ENDPOINT force: false importPolicy: ReadOnly s3Options: bucket: BUCKET_FULL_NAME forcePathStyle: true region: zone2 secretReference: name: BUCKET_SECRET namespace: PROJECT_NAME type: S3Vérifiez que le dépôt de sauvegarde a bien été créé :
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAMEAnnotez la ressource de dépôt de sauvegarde sous-jacente avec les annotations suivantes :
kubectl -n PROJECT_NAME annotate --overwrite backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME backup.gdc.goog/dz-bucket="true" kubectl -n PROJECT_NAME annotate --overwrite backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME backup.gdc.goog/dz-bucket-info-namespace=PROJECT_NAME
Sauvegarder les charges de travail dans les dépôts de sauvegarde
Une fois les dépôts de sauvegarde configurés, suivez les étapes pour sauvegarder et restaurer vos charges de travail.
Étapes suivantes
- En savoir plus sur la restauration manuelle des sauvegardes
- Créer une restauration manuelle pour une sauvegarde