Crea un repositorio de copias de seguridad

En esta página, se describe cómo crear un repositorio de copias de seguridad para máquinas virtuales (VM) en Google Distributed Cloud (GDC) aislado.

Antes de crear copias de seguridad o instantáneas, debes definir al menos un repositorio de copias de seguridad que se pueda compartir entre varias copias de seguridad o instantáneas. Un repositorio de copias de seguridad le indica al sistema de copias de seguridad dónde almacenar o recuperar las copias de seguridad. Los repositorios de copias de seguridad para VMs están restringidos al servidor de la API de Management.

Antes de comenzar

Antes de crear un repositorio de copias de seguridad, debes aprovisionar el almacenamiento subyacente y configurar los permisos necesarios, incluidos los siguientes:

  • Un bucket de almacenamiento de objetos y un extremo compatible con S3
  • Una cuenta de servicio con acceso otorgado al bucket y sus credenciales de S3
  • Los roles de IAM necesarios son los siguientes:

    • Administrador de copias de seguridad de la organización: Administra recursos de copias de seguridad, como planes de copias de seguridad y restablecimiento en clústeres de usuario.
    • Secret Viewer: Visualiza los secretos de Kubernetes en los proyectos.

    Pídele al administrador de IAM de la organización que te otorgue los roles de administrador de copias de seguridad de la organización (organization-backup-admin) y visualizador de secretos (secret-viewer). Para obtener más información, consulta Definiciones de roles.

Crea un repositorio de copias de seguridad

Crea un repositorio con la consola de GDC o la API.

Console

  1. Accede a la consola de GDC.
  2. En el menú de navegación, haz clic en Copia de seguridad para máquinas virtuales > Repositorios.
  3. Haz clic en Crear repositorio.
  4. Ingresa un nombre de repositorio y una descripción opcional.
  5. En el campo Extremo del URI de S3, ingresa un extremo con el nombre de dominio completamente calificado de tu sitio de almacenamiento de objetos, como https://objectstorage.ORG.ZONE.DOMAIN.SUFFIX:PORT. Por ejemplo, https://objectstorage.org-1.zone1.google.gdch.test. Para obtener el valor del recurso personalizado Bucket, ejecuta el siguiente comando:

    kubectl get Bucket BUCKET_NAME -n NAMESPACE -o json | jq -r '.status.endpoint'
    
  6. En el campo Nombre del bucket, ingresa el nombre de dominio completamente calificado del bucket. Puedes obtener este nombre en la página Detalles del bucket en la consola de GDC o, para obtener el valor del recurso personalizado Bucket, ejecuta el siguiente comando:

    kubectl get Bucket BUCKET_NAME -n NAMESPACE -o json | jq -r '.status.fullyQualifiedName'
    
  7. En el campo Región del bucket, ingresa la región en la que se creó el bucket y obtén el valor del recurso personalizado del bucket ejecutando el siguiente comando:

    kubectl get Bucket BUCKET_NAME -n NAMESPACE -o json | jq -r '.status.region'
    
  8. En los campos ID de clave de acceso y Clave de acceso, ingresa el ID de la clave de acceso y la clave de acceso secreta. Para obtener más información sobre cómo obtener estas credenciales, consulta Otorga y obtén acceso bucket de almacenamiento.

  9. Haz clic en Crear.

API

Crea un recurso personalizado BackupRepository con tus credenciales de S3.

  1. Obtén el nombre del secreto que contiene las credenciales de S3:

    export PROJECT_NAME=PROJECT_NAME
    export SA_NAME=SA_NAME
    kubectl get secrets --namespace $PROJECT_NAME -o json | jq -r --arg USER_NAME "${SA_NAME:?}" '.items[] | select( (.metadata.annotations."object.gdc.goog/subject"==$USER_NAME)) | .metadata.name'
    

    Asegúrate de registrar el nombre secreto que devolvió el comando y úsalo como SECRET_NAME en el siguiente paso.

    Reemplaza lo siguiente:

    • PROJECT_NAME: nombre del proyecto.
    • SA_NAME: Es el nombre de la cuenta de servicio que se usa para acceder al almacenamiento de objetos.
  2. Para obtener detalles del bucket, como el FQDN y los extremos, extrae los valores fullyQualifiedName y zonalEndpoints del resultado:

    kubectl get buckets -n PROJECT_NAME BUCKET_NAME -o yaml
    
  3. Crea un BackupRepository dentro del servidor de la API de Management:

    apiVersion: backup.gdc.goog/v1
    kind: BackupRepository
    metadata:
      name: REPOSITORY_NAME
    spec:
      secretReference:
        namespace: PROJECT_NAME
        name: SECRET_NAME
      endpoint: ENDPOINT
      type: "S3"
      s3Options:
        bucket: BUCKET_FQDN
        region: REGION
        forcePathStyle: FORCE_PATH_STYLE
      importPolicy: IMPORT_POLICY
    

    Reemplaza lo siguiente:

    • REPOSITORY_NAME: Es el nombre del repositorio de copias de seguridad.
    • PROJECT_NAME: nombre del proyecto.
    • SA_NAME: Es el nombre de la cuenta de servicio que se usa para acceder al almacenamiento de objetos.
    • SECRET_NAME: Es el nombre del Secret que muestra el comando kubectl get secrets.
    • ENDPOINT: Es el nombre de dominio completamente calificado del sistema de almacenamiento, por ejemplo, https://objectstorage.google.gdch.test. Para el campo type, solo se admite el valor S3.
    • BUCKET_FQDN: Es el nombre completamente calificado del bucket.
    • REGION: Es la región en la que se creó el bucket.
    • FORCE_PATH_STYLE: Usa el campo forcePathStyle para forzar URLs con estilo de ruta de acceso para los objetos. Este campo debe tener un valor de true o false.
    • IMPORT_POLICY: Se establece en uno de los siguientes valores:
      • ReadWrite: Este repositorio se puede usar para programar o crear copias de seguridad, planes de copias de seguridad y restablecimientos.
      • ReadOnly: Este repositorio solo se puede usar para importar y ver copias de seguridad. No se pueden crear copias de seguridad ni recursos nuevos en este repositorio, pero los restablecimientos pueden usar y hacer referencia a copias de seguridad de solo lectura para el restablecimiento. No hay restricciones sobre la frecuencia con la que se puede usar un repositorio de copias de seguridad como ReadOnly.

    El comando BackupRepository crea un recurso BackupRepository habilitado para lectura y escritura en el servidor de la API de Management que tiene el mismo nombre.

¿Qué sigue?