Configurar un repositorio de copias de seguridad para segmentos de dos zonas

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:

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

    Haz los cambios siguientes:

    • PROJECT_NAME: el nombre del proyecto.
  2. 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: Standard
    

    Haz 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 es syncz1z2. En el caso de la replicación asíncrona, el valor es asyncz1z2.
    • DESCRIPTION: una descripción de texto del contenedor.
  3. 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_NAME
    
  4. Espera 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.

  1. 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 :)
    
  2. Recupera el contenido del secreto:

    kubectl get secret -n PROJECT_NAME BUCKET_SECRET -o yaml > bucket_secret.yaml
    
  3. Crea 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, uid y creationTimeStamp del 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.

  1. 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 fullyQualifiedName y zonalEndpoints del resultado:

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

    Haz 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.
  3. Comprueba que el repositorio de copias de seguridad se ha creado correctamente:

    kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME
    
  4. Anota 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_NAME
    
  5. Crea 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: S3
    
  6. Comprueba que el repositorio de copias de seguridad se ha creado correctamente:

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