Questa pagina descrive come configurare i repository di backup per i bucket dual-zone isolati da internet di Google Distributed Cloud (GDC). In questo modo puoi mantenere l'alta affidabilità per dati e applicazioni critici, riducendo al minimo i tempi di inattività in caso di errore a livello di zona. Questa pagina descrive i passaggi per creare bucket a doppia zona, copiare i secret dei bucket e configurare i repository di backup in più zone.
Questa pagina è rivolta agli amministratori IT del gruppo di amministratori della piattaforma responsabili della gestione delle risorse all'interno della propria organizzazione e agli sviluppatori di applicazioni del gruppo di operatori delle applicazioni responsabili dello sviluppo e della manutenzione delle applicazioni in un universo GDC.
Per saperne di più, consulta la documentazione relativa ai segmenti di pubblico per GDC air-gap.
Prima di iniziare
Prima di utilizzare i servizi di backup e ripristino per i bucket GDC a doppia zona, devi disporre di quanto segue:
- Un ambiente di cui è stato eseguito il provisioning con un minimo di due zone.
- Accesso al client dell'organizzazione globale o al client root globale.
- Se il tuo workload viene eseguito il provisioning all'interno di un progetto, utilizza il client dell'organizzazione globale.
- Se il tuo carico di lavoro viene eseguito il provisioning alla radice, utilizza il client radice globale.
- Il ruolo
global-project-bucket-admin, necessario per creare bucket dual-zone.
Crea un bucket dual-zone
Per creare un bucket dual-zone, devi prima creare una risorsa di progetto in cui risiederà il bucket. Per creare un progetto:
Crea una risorsa di progetto in un cluster dell'organizzazione globale:
apiVersion: resourcemanager.global.gdc.goog/v1 kind: Project metadata: namespace: platform name: PROJECT_NAME labels: object.gdc.goog/tenant-category: userSostituisci quanto segue:
PROJECT_NAME: il nome del progetto.
Crea un bucket dual-zone:
apiVersion: object.global.gdc.goog/v1 kind: Bucket metadata: name: BUCKET_NAME namespace: PROJECT_NAME spec: location: LOCATION_TYPE description: DESCRIPTION storageClass: StandardSostituisci quanto segue:
BUCKET_NAME: il nome del bucket.LOCATION_TYPE: il tipo di replica. Per la replica sincrona, il valore èsyncz1z2. Per la replica asincrona, il valore èasyncz1z2.DESCRIPTION: una descrizione testuale del bucket.
Crea un account di servizio e un binding del ruolo IAM (Identity and Access Management) per concedere le autorizzazioni richieste per il 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_NAMEAttendi che lo stato del bucket mostri
ready.
Copia il secret del bucket in entrambe le zone
Dopo aver configurato il bucket e le autorizzazioni richieste, viene generato un secret in un cluster dell'organizzazione globale, che può essere identificato dalle relative annotazioni.
Verifica che sia stato generato un secret con l'annotazione del 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 :)Recupera i contenuti del secret:
kubectl get secret -n PROJECT_NAME BUCKET_SECRET -o yaml > bucket_secret.yamlCrea lo stesso secret nel cluster di gestione dell'organizzazione nella zona 1 e nella zona 2. Assicurati di cancellare
resourceVersion,uidecreationTimeStampdal file YAML per evitare errori di creazione:# zone-1 kubectl apply -f bucket_secret.yaml # zone-2 kubectl apply -f bucket_secret.yaml
Crea repository di backup
Dopo aver configurato il bucket e i secret, crea un repository di backup nella zona 1 e nella zona 2.
Per ottenere i dettagli del bucket, come FQDN ed endpoint, utilizza il seguente comando in un cluster dell'organizzazione globale. Estrai
fullyQualifiedNameezonalEndpointsdall'output:kubectl get buckets.object.global.gdc.goog -n PROJECT_NAME BUCKET_NAME -o yamlPer creare un repository di backup di lettura/scrittura nella zona 1 del cluster di gestione, utilizza il seguente comando. Assicurati di utilizzare l'endpoint zonale della zona 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: S3Sostituisci quanto segue:
BACKUP_REPOSITORY_NAME: il nome del repository di backup.ENDPOINT: l'endpoint zonale della zona 1.BUCKET_FULL_NAME: il nome del bucket completo.BUCKET_SECRET: il secret del bucket.
Controlla che il repository di backup sia stato creato correttamente:
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAMEAnnota il repository di backup con le annotazioni del bucket a doppia zona:
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_NAMECrea un repository di sola lettura nella zona 2 nel cluster di gestione. Utilizza l'endpoint a livello di zona della zona 2 per questo comando:
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: S3Controlla che il repository di backup sia stato creato correttamente:
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAMEAnnota la risorsa del repository di backup sottostante con le seguenti annotazioni:
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
Eseguire il backup dei carichi di lavoro nei repository di backup
Dopo aver configurato i repository di backup, segui i passaggi per eseguire il backup e il ripristino dei tuoi carichi di lavoro.