En esta página, se describe cómo configurar repositorios de copias de seguridad para buckets de doble zona aislados de Google Distributed Cloud (GDC). Esto te permite mantener una alta disponibilidad para los datos y las aplicaciones críticos, y minimizar el tiempo de inactividad en caso de que se produzca una falla en la zona. En esta página, se describen los pasos para crear buckets de zona doble, copiar secretos de bucket y configurar repositorios de copias de seguridad en varias zonas.
Esta página está destinada a los administradores de TI que pertenecen al grupo de administradores de la plataforma y que son responsables de administrar los recursos dentro de su organización, y a los desarrolladores de aplicaciones que pertenecen al grupo de operadores de aplicaciones y que son responsables de desarrollar y mantener las aplicaciones en un universo de GDC.
Para obtener más información, consulta Audiences for GDC air-gapped documentation.
Antes de comenzar
Antes de usar los servicios de copia de seguridad y restablecimiento para buckets de doble zona de GDC, debes tener lo siguiente:
- Es 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 dentro de un proyecto, usa el cliente de la 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 se requiere para crear buckets de doble zona.
Crea un bucket de doble zona
Para crear un bucket de doble zona, primero deberás crear un recurso de proyecto en el que se ubicará el bucket. Para crear un proyecto, sigue 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: userReemplaza lo siguiente:
PROJECT_NAME: el nombre del proyecto.
Crea un bucket de doble zona:
apiVersion: object.global.gdc.goog/v1 kind: Bucket metadata: name: BUCKET_NAME namespace: PROJECT_NAME spec: location: LOCATION_TYPE description: DESCRIPTION storageClass: StandardReemplaza lo siguiente:
BUCKET_NAME: el nombre del bucket.LOCATION_TYPE: Es el tipo de replicación. Para la replicación síncrona, el valor essyncz1z2. Para la replicación asíncrona, el valor esasyncz1z2.DESCRIPTION: Es una descripción de texto del bucket.
Crea una cuenta de servicio y una vinculación de rol de Identity and Access Management (IAM) para otorgar los permisos necesarios para el 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_NAMEEspera a que el estado del bucket muestre
ready.
Copia el secreto del bucket en ambas zonas
Después de configurar el bucket y los permisos necesarios, se genera un secreto en un clúster de organización global que se puede identificar por sus anotaciones.
Verifica que se haya generado un secreto con la anotación 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 el contenido del Secret:
kubectl get secret -n PROJECT_NAME BUCKET_SECRET -o yaml > bucket_secret.yamlCrea el mismo secreto en el clúster de administración de la organización en la zona 1 y la zona 2. Asegúrate de borrar
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
Crea repositorios de copias de seguridad
Después de configurar el bucket y los secretos, crea un repositorio de copias de seguridad en la zona 1 y la zona 2.
Para obtener detalles del bucket, como el FQDN y los extremos, 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 copias de seguridad de lectura y escritura en la zona 1 del clúster de administración, usa el siguiente comando. Asegúrate de usar el extremo zonal de la 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: S3Reemplaza lo siguiente:
BACKUP_REPOSITORY_NAME: Es el nombre del repositorio de copias de seguridad.ENDPOINT: Es el extremo zonal de la zona 1.BUCKET_FULL_NAME: Es el nombre del bucket completamente calificado.BUCKET_SECRET: Es el secreto del bucket.
Verifica que el repositorio de copias de seguridad se haya creado correctamente:
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAMEAnota el repositorio de copias de seguridad con anotaciones de bucket 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 en el clúster de administración. Usa el extremo 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: S3Verifica que el repositorio de copias de seguridad se haya 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
Crea copias de seguridad de las cargas de trabajo en los repositorios de copias de seguridad
Después de configurar los repositorios de copias de seguridad, sigue los pasos para crear copias de seguridad de tus cargas de trabajo y restablecerlas.
Próximos pasos
- Más información sobre el restablecimiento manual de copias de seguridad
- Crea un restablecimiento manual para una copia de seguridad