En esta página se describe cómo configurar repositorios de copias de seguridad para los buckets de doble zona con air gap de Google Distributed Cloud (GDC). De esta forma, puedes mantener una alta disponibilidad de los datos y las aplicaciones críticos, a la vez que minimizas el tiempo de inactividad en caso de que se produzca un fallo en una zona. En esta página se explica cómo crear segmentos birregionales, copiar secretos de segmentos y configurar repositorios de copia de seguridad en varias zonas.
Esta página está dirigida a los administradores de TI del grupo de administradores de la plataforma, que se encargan de gestionar los recursos de su organización, y a los desarrolladores de aplicaciones del grupo de operadores de aplicaciones, que se encargan de desarrollar y mantener aplicaciones en un universo de GDC.
Para obtener más información, consulta Audiencias de la documentación aislada de GDC.
Antes de empezar
Antes de usar los servicios de copia de seguridad y restauración de los contenedores de doble zona de GDC, debes tener lo siguiente:
- Un entorno aprovisionado con un mínimo de dos zonas.
- Acceso al cliente de la organización global o al cliente raíz global.
- Si tu carga de trabajo se aprovisiona en un proyecto, usa el cliente de organización global.
- Si tu carga de trabajo se aprovisiona en la raíz, usa el cliente raíz global.
- El rol
global-project-bucket-admin, que es necesario para crear segmentos de doble zona.
Crear un segmento de dos zonas
Para crear un segmento de doble zona, primero debe crear un recurso de proyecto en el que se ubicará el segmento. Para crear un proyecto, siga estos pasos:
Crea un recurso de proyecto en un clúster de organización global:
apiVersion: resourcemanager.global.gdc.goog/v1 kind: Project metadata: namespace: platform name: PROJECT_NAME labels: object.gdc.goog/tenant-category: userHaz los cambios siguientes:
PROJECT_NAME: el nombre del proyecto.
Crea un segmento de dos zonas:
apiVersion: object.global.gdc.goog/v1 kind: Bucket metadata: name: BUCKET_NAME namespace: PROJECT_NAME spec: location: LOCATION_TYPE description: DESCRIPTION storageClass: StandardHaz los cambios siguientes:
BUCKET_NAME: el nombre del segmento.LOCATION_TYPE: el tipo de réplica. En el caso de la replicación síncrona, el valor essyncz1z2. En el caso de la replicación asíncrona, el valor esasyncz1z2.DESCRIPTION: una descripción de texto del contenedor.
Crea una cuenta de servicio y una vinculación de rol de Gestión de Identidades y Accesos (IAM) para conceder los permisos necesarios al segmento:
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_NAMEEspera a que el estado del contenedor muestre
ready.
Copia el secreto del segmento en ambas zonas.
Una vez que se hayan configurado el bucket y los permisos necesarios, se generará un secreto en un clúster de organización global que se puede identificar por sus anotaciones.
Comprueba que se haya generado un secreto con la anotación del segmento:
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 el contenido del secreto:
kubectl get secret -n PROJECT_NAME BUCKET_SECRET -o yaml > bucket_secret.yamlCrea el mismo secreto en el clúster de gestión de la organización en la zona 1 y la zona 2. Asegúrate de eliminar
resourceVersion,uidycreationTimeStampdel archivo YAML para evitar errores de creación:# zone-1 kubectl apply -f bucket_secret.yaml # zone-2 kubectl apply -f bucket_secret.yaml
Crear repositorios de copias de seguridad
Una vez configurados el segmento y los secretos, crea un repositorio de copias de seguridad en la zona 1 y en la zona 2.
Para obtener detalles de un bucket, como el nombre de dominio completo y los endpoints, usa el siguiente comando en un clúster de organización global. Extrae
fullyQualifiedNameyzonalEndpointsdel resultado:kubectl get buckets.object.global.gdc.goog -n PROJECT_NAME BUCKET_NAME -o yamlPara crear un repositorio de lectura, escritura y copia de seguridad en la zona 1 del clúster de gestión, usa el siguiente comando. Asegúrate de usar el endpoint zonal de 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: S3Haz los cambios siguientes:
BACKUP_REPOSITORY_NAME: el nombre del repositorio de la copia de seguridad.ENDPOINT: el endpoint zonal de zone-1.BUCKET_FULL_NAME: el nombre del segmento completo.BUCKET_SECRET: el secreto del cubo.
Comprueba que el repositorio de copias de seguridad se ha creado correctamente:
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAMEAnota el repositorio de copias de seguridad con anotaciones de cubos de doble 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 repositorio de solo lectura en la zona 2 del clúster de gestión. Usa el endpoint zonal de zone-2 para este 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: S3Comprueba que el repositorio de copias de seguridad se ha creado correctamente:
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAMEAnota el recurso del repositorio de copias de seguridad subyacente con las siguientes anotaciones:
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
Crear copias de seguridad de las cargas de trabajo en los repositorios de copias de seguridad
Una vez que hayas configurado los repositorios de copias de seguridad, sigue los pasos para crear copias de seguridad y restaurar tus cargas de trabajo.
Pasos siguientes
- Información sobre las restauraciones manuales de copias de seguridad
- Crear una restauración manual de una copia de seguridad