Configura un repository di backup per i bucket dual-zone

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:

  1. 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: user
    

    Sostituisci quanto segue:

    • PROJECT_NAME: il nome del progetto.
  2. 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: Standard
    

    Sostituisci 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.
  3. 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_NAME
    
  4. Attendi 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.

  1. 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 :)
    
  2. Recupera i contenuti del secret:

    kubectl get secret -n PROJECT_NAME BUCKET_SECRET -o yaml > bucket_secret.yaml
    
  3. Crea lo stesso secret nel cluster di gestione dell'organizzazione nella zona 1 e nella zona 2. Assicurati di cancellare resourceVersion, uid e creationTimeStamp dal 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.

  1. Per ottenere i dettagli del bucket, come FQDN ed endpoint, utilizza il seguente comando in un cluster dell'organizzazione globale. Estrai fullyQualifiedName e zonalEndpoints dall'output:

    kubectl get buckets.object.global.gdc.goog -n PROJECT_NAME BUCKET_NAME -o yaml
    
  2. Per 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: S3
    

    Sostituisci 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.
  3. Controlla che il repository di backup sia stato creato correttamente:

    kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME
    
  4. Annota 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_NAME
    
  5. Crea 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: S3
    
  6. Controlla che il repository di backup sia stato creato correttamente:

    kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME
    
  7. Annota 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.

Passaggi successivi