Sicherungs-Repository für Dual-Zone-Buckets einrichten

Auf dieser Seite wird beschrieben, wie Sie Sicherungs-Repositories für Google Distributed Cloud (GDC) mit Air Gap und Dual-Zone-Buckets konfigurieren. So können Sie die Hochverfügbarkeit für kritische Daten und Anwendungen aufrechterhalten und gleichzeitig die Ausfallzeiten bei einem Zonenausfall minimieren. Auf dieser Seite wird beschrieben, wie Sie Buckets für zwei Zonen erstellen, Bucket-Secrets kopieren und Backup-Repositories in mehreren Zonen einrichten.

Diese Seite richtet sich an IT-Administratoren in der Gruppe „Plattformadministrator“, die für die Verwaltung von Ressourcen in ihrer Organisation verantwortlich sind, und an Anwendungsentwickler in der Gruppe „Anwendungsoperator“, die für die Entwicklung und Wartung von Anwendungen in einem GDC-Universum verantwortlich sind.

Weitere Informationen finden Sie unter Zielgruppen für die GDC-Dokumentation für Air-Gap-Umgebungen.

Hinweise

Bevor Sie Sicherungs- und Wiederherstellungsdienste für GDC-Buckets mit zwei Zonen verwenden können, benötigen Sie Folgendes:

  • Eine Umgebung, die mit mindestens zwei Zonen bereitgestellt wird.
  • Zugriff auf den globalen Organisationsclient oder den globalen Stammclient.
    • Wenn Ihre Arbeitslast in einem Projekt bereitgestellt wird, verwenden Sie den globalen Organisationsclient.
    • Wenn Ihre Arbeitslast im Stammverzeichnis bereitgestellt wird, verwenden Sie den globalen Stammclient.
  • Die Rolle global-project-bucket-admin, die zum Erstellen von Buckets in zwei Zonen erforderlich ist.

Dual-Zone-Bucket erstellen

Wenn Sie einen Bucket mit zwei Zonen erstellen möchten, müssen Sie zuerst eine Projektressource erstellen, in der sich der Bucket befindet. So erstellen Sie ein Projekt:

  1. Projektressource in einem globalen Organisationscluster erstellen:

    apiVersion: resourcemanager.global.gdc.goog/v1
    kind: Project
    metadata:
      namespace: platform
      name: PROJECT_NAME
      labels:
        object.gdc.goog/tenant-category: user
    

    Ersetzen Sie Folgendes:

    • PROJECT_NAME: der Name des Projekts.
  2. Dual-Zone-Bucket erstellen:

    apiVersion: object.global.gdc.goog/v1
    kind: Bucket
    metadata:
      name: BUCKET_NAME
      namespace: PROJECT_NAME
    spec:
      location: LOCATION_TYPE
      description: DESCRIPTION
      storageClass: Standard
    

    Ersetzen Sie Folgendes:

    • BUCKET_NAME: der Name des Buckets.
    • LOCATION_TYPE: Der Replikationstyp. Bei der synchronen Replikation ist der Wert syncz1z2. Bei der asynchronen Replikation ist der Wert asyncz1z2.
    • DESCRIPTION: eine Textbeschreibung des Buckets.
  3. Erstellen Sie ein Dienstkonto und eine IAM-Rollenbindung (Identity and Access Management), um die erforderlichen Berechtigungen für den Bucket zu gewähren:

    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. Warten Sie, bis der Bucket-Status ready lautet.

Bucket-Secret in beide Zonen kopieren

Nachdem der Bucket und die erforderlichen Berechtigungen konfiguriert wurden, wird in einem globalen Organisationscluster ein Secret generiert, das anhand seiner Anmerkungen identifiziert werden kann.

  1. Prüfen Sie, ob ein Secret mit der Anmerkung des Buckets generiert wurde:

    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. Rufen Sie den Secret-Inhalt ab:

    kubectl get secret -n PROJECT_NAME BUCKET_SECRET -o yaml > bucket_secret.yaml
    
  3. Erstellen Sie dasselbe Secret im Verwaltungscluster der Organisation in Zone 1 und Zone 2. Entfernen Sie resourceVersion, uid und creationTimeStamp aus der YAML-Datei, um Erstellungsfehler zu vermeiden:

    # zone-1
    kubectl apply -f bucket_secret.yaml
    
    # zone-2
    kubectl apply -f bucket_secret.yaml
    

Sicherungs-Repositories erstellen

Nachdem Sie den Bucket und die Secrets konfiguriert haben, erstellen Sie ein Sicherungs-Repository in Zone 1 und Zone 2.

  1. Verwenden Sie den folgenden Befehl in einem globalen Organisationscluster, um Bucket-Details wie FQDN und Endpunkte abzurufen. Extrahieren Sie fullyQualifiedName und zonalEndpoints aus der Ausgabe:

    kubectl get buckets.object.global.gdc.goog -n PROJECT_NAME BUCKET_NAME -o yaml
    
  2. Verwenden Sie den folgenden Befehl, um im Verwaltungscluster ein Lese-/Schreib-Sicherungs-Repository in Zone 1 zu erstellen. Verwenden Sie den zonalen Endpunkt von 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: S3
    

    Ersetzen Sie Folgendes:

    • BACKUP_REPOSITORY_NAME: der Name des Sicherungs-Repositorys.
    • ENDPOINT: der zonale Endpunkt von Zone 1.
    • BUCKET_FULL_NAME: der Name des vollständig qualifizierten Buckets.
    • BUCKET_SECRET: Das Secret des Buckets.
  3. Prüfen Sie, ob das Sicherungs-Repository erfolgreich erstellt wurde:

    kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME
    
  4. Kommentieren Sie das Sicherungs-Repository mit Anmerkungen für Dual-Zone-Buckets:

    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. Erstellen Sie im Verwaltungscluster ein schreibgeschütztes Repository in Zone 2. Verwenden Sie für diesen Befehl den zonalen Endpunkt von Zone 2:

    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. Prüfen Sie, ob das Sicherungs-Repository erfolgreich erstellt wurde:

    kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME
    
  7. Annotieren Sie die zugrunde liegende Sicherungsrepository-Ressource mit den folgenden Annotationen:

    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
    

Arbeitslasten in den Sicherungs-Repositories sichern

Nachdem Sie die Sicherungs-Repositories konfiguriert haben, folgen Sie der Anleitung zum Sichern und Wiederherstellen von Arbeitslasten.

Nächste Schritte