Importar discos virtuales

En este documento, se describen los pasos para importar imágenes de disco de máquina virtual (VM) a Google Distributed Cloud (GDC) aislado.

Importa tus discos virtuales existentes, que suelen llamarse discos dorados o imágenes doradas, a GDC para ahorrar tiempo y usar la imagen resultante para crear máquinas virtuales. La herramienta de importación admite los formatos de imagen RAW y QCOW.

Este documento está dirigido a los desarrolladores de los grupos de administradores de plataformas o de operadores de aplicaciones que crean imágenes de VM. Para obtener más información, consulta Públicos de la documentación de GDC aislado.

Antes de comenzar

Antes de continuar, asegúrate de cumplir los siguientes requisitos:

Prepare el entorno

  • La CLI de gdcloud descargada, instalada y configurada. Todos los comandos de la CLI para GDC usan la CLI de gdcloud o la CLI de kubectl, y requieren un entorno de sistema operativo (SO).

Solicita roles de IAM

Para obtener los permisos que necesitas para importar discos virtuales, pídele a tu administrador de proyectos de IAM que te otorgue los siguientes roles en tu proyecto:

  • Administrador de proyectos de máquinas virtuales (project-vm-admin): Crea, modifica, enumera y borra VMs en el espacio de nombres del proyecto.

  • Visualizador del proyecto (project-viewer): Permite ver todos los recursos dentro del espacio de nombres del proyecto.

  • Administrador de proyectos de imágenes de máquinas virtuales (project-vm-image-admin): Crea, enumera y borra imágenes de VM en el espacio de nombres del proyecto.

Todos los roles de VM deben vincularse al espacio de nombres del proyecto en el que reside la VM. Sigue los pasos para verificar tu acceso.

Importar discos virtuales

Puedes importar archivos de disco virtual directamente desde tu estación de trabajo. La herramienta de importación sube automáticamente el archivo a un bucket de almacenamiento de objetos en tu proyecto.

Para importar tus discos virtuales, usa la CLI de gdcloud o la API de Virtual Machine Manager.

gdcloud

El comando import verifica que la imagen proporcionada por GDC tenga los paquetes necesarios para configurar las credenciales de conexión a la instancia con Secure Shell (SSH) y el protocolo de escritorio remoto (RDP). Esto incluye paquetes para el entorno de invitado.

El comando también instala paquetes para el protocolo NTP y cloud-init para que la instancia se ejecute correctamente en GDC.

  • Para crear una imagen de arranque, usa el comando gdcloud compute images import:
gdcloud compute images import IMAGE_NAME \
  --source-file=SOURCE_FILE \
  --os=IMAGE_OS \
  --timeout=TIMEOUT

Reemplaza las siguientes variables:

  • IMAGE_NAME: El nombre de la imagen de destino. El nombre no debe tener más de 35 caracteres.
  • SOURCE_FILE: El archivo del disco virtual. Este archivo es un archivo local en tu estación de trabajo. Puedes proporcionar una ruta de acceso absoluta o relativa.
  • IMAGE_OS: Es el SO del disco que se importará.
  • TIMEOUT: Es el tiempo que puede durar una importación antes de que falle con el mensaje "TIMEOUT". Por ejemplo, si especificas 2h, el proceso falla después de 2 horas. El tiempo de espera predeterminado es 1h.

La operación de carga puede tardar un período prolongado, según el tamaño del disco virtual y la velocidad de la conexión de red. La importación puede tardar varios minutos en ejecutarse en función del tamaño del disco.

API

Para importar un disco virtual a través de la API, haz lo siguiente:

  1. Crea un recurso personalizado VirtualMachineImageImport en el servidor de la API de Management para iniciar el proceso de importación de imágenes:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT_ID \
      apply -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineImageImport
    metadata:
      name: IMAGE_NAME
      namespace: PROJECT_ID
    spec:
      source:
        objectStorage:
          bucketRef:
            name: vm-images-bucket
          objectName: SOURCE_FILE
      imageMetadata:
        name: IMAGE_NAME
        operatingSystem: IMAGE_OS
        minimumDiskSize: DISK_SIZE
    EOF
    

    Reemplaza las siguientes variables:

    • MANAGEMENT_API_SERVER: Es el archivo kubeconfig para el servidor de la API de administración.
    • IMAGE_NAME: Es el nombre de la imagen que se importará. El nombre no debe tener más de 35 caracteres.
    • PROJECT_ID: el ID del proyecto en el que deseas importar la imagen.
    • SOURCE_FILE: Es el nombre del archivo de origen que contiene la carga del disco virtual en el almacén de objetos. Este valor es la sección de la ruta de acceso del almacén de objetos después de vm-images-bucket/.
    • IMAGE_OS: Es el SO del disco que se importará.
    • DISK_SIZE: Es el tamaño mínimo de un disco que creas a partir de esta imagen. Usa un búfer de al menos un 20% por encima del tamaño del sistema de archivos de la imagen original. Por ejemplo, usa al menos 12G para un disco virtual con un tamaño de sistema de archivos original de 10G.
  2. Supervisa el progreso de la importación consultando el estado del recurso personalizado VirtualMachineImageImport:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT_ID \
      get virtualmachineimageimport.virtualmachine.gdc.goog IMAGE_NAME \
      -o jsonpath='{.status}'
    

Limpia los recursos

El proceso de importación implica subir el archivo de disco virtual al almacén de objetos. Si usas la CLI de gdcloud, esta borra el objeto cuando finaliza el comando, incluso si la importación falla. Si interrumpes el comando o importas la imagen con la API, es posible que el archivo de disco virtual permanezca en el bucket de almacén de objetos llamado vm-images-bucket hasta que borres el archivo de forma manual.

¿Qué sigue?