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:
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: userErsetzen Sie Folgendes:
PROJECT_NAME: der Name des Projekts.
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: StandardErsetzen Sie Folgendes:
BUCKET_NAME: der Name des Buckets.LOCATION_TYPE: Der Replikationstyp. Bei der synchronen Replikation ist der Wertsyncz1z2. Bei der asynchronen Replikation ist der Wertasyncz1z2.DESCRIPTION: eine Textbeschreibung des Buckets.
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_NAMEWarten Sie, bis der Bucket-Status
readylautet.
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.
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 :)Rufen Sie den Secret-Inhalt ab:
kubectl get secret -n PROJECT_NAME BUCKET_SECRET -o yaml > bucket_secret.yamlErstellen Sie dasselbe Secret im Verwaltungscluster der Organisation in Zone 1 und Zone 2. Entfernen Sie
resourceVersion,uidundcreationTimeStampaus 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.
Verwenden Sie den folgenden Befehl in einem globalen Organisationscluster, um Bucket-Details wie FQDN und Endpunkte abzurufen. Extrahieren Sie
fullyQualifiedNameundzonalEndpointsaus der Ausgabe:kubectl get buckets.object.global.gdc.goog -n PROJECT_NAME BUCKET_NAME -o yamlVerwenden 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: S3Ersetzen 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.
Prüfen Sie, ob das Sicherungs-Repository erfolgreich erstellt wurde:
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAMEKommentieren 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_NAMEErstellen 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: S3Prüfen Sie, ob das Sicherungs-Repository erfolgreich erstellt wurde:
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAMEAnnotieren 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
- Informationen zum manuellen Wiederherstellen von Sicherungen
- Manuelle Wiederherstellung für eine Sicherung erstellen