Configura un repositorio de copias de seguridad para buckets de doble zona

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:

  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
    

    Reemplaza lo siguiente:

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

    Reemplaza lo siguiente:

    • BUCKET_NAME: el nombre del bucket.
    • LOCATION_TYPE: Es el tipo de replicación. Para la replicación síncrona, el valor es syncz1z2. Para la replicación asíncrona, el valor es asyncz1z2.
    • DESCRIPTION: Es una descripción de texto del bucket.
  3. 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_NAME
    
  4. Espera 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.

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

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

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.

  1. Para obtener detalles del bucket, como el FQDN y los extremos, 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 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: S3
    

    Reemplaza 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.
  3. Verifica que el repositorio de copias de seguridad se haya creado correctamente:

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

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