Importar discos virtuais

Neste documento, descrevemos as etapas para importar imagens de disco de máquina virtual (VM) para o Google Distributed Cloud (GDC) com isolamento físico.

Importe os discos virtuais atuais, geralmente chamados de discos de referência ou imagens de referência, para o GDC para economizar tempo e use a imagem resultante para criar máquinas virtuais. A ferramenta de importação é compatível com os formatos de imagem RAW e QCOW.

Este documento é destinado a desenvolvedores em grupos de administradores de plataforma ou operadores de aplicativos que criam imagens de VM. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

Antes de começar

Antes de continuar, verifique se você tem:

Prepare o ambiente

  • A CLI gdcloud baixada, instalada e configurada. Todos os comandos da CLI para o GDC usam a CLI gdcloud ou a CLI kubectl e exigem um ambiente de sistema operacional (SO).

Solicitar papéis do IAM

Para receber as permissões necessárias para importar discos virtuais, peça ao administrador do projeto do IAM para conceder a você os seguintes papéis no projeto:

  • Administrador do projeto de máquina virtual (project-vm-admin): criar, modificar, listar e excluir VMs no namespace do projeto.

  • Leitor do projeto (project-viewer): visualizar todos os recursos no namespace do projeto.

  • Administrador de projeto de imagem de máquina virtual (project-vm-image-admin): criar, listar e excluir imagens de VM no namespace do projeto.

Todos os papéis de VM precisam ser vinculados ao namespace do projeto em que a VM reside. Siga as etapas para verificar seu acesso.

Importar discos virtuais

É possível importar arquivos de disco virtual diretamente da sua estação de trabalho. A ferramenta de importação faz o upload automático do arquivo para um bucket de repositório de objetos no projeto.

Para importar os discos virtuais, use a CLI gdcloud ou a API Administrador de Máquina Virtual.

gdcloud

O comando import verifica se a imagem fornecida pelo GDC tem os pacotes necessários para configurar as credenciais de conexão com a instância usando o Secure Shell (SSH) e o protocolo de área de trabalho remota (RDP). Isso inclui pacotes para o ambiente de convidado.

O comando também instala pacotes para o Network Time Protocol (NTP) e cloud-init para que a instância seja executada corretamente no GDC.

  • Para criar uma imagem de inicialização, use o comando gdcloud compute images import:
gdcloud compute images import IMAGE_NAME \
  --source-file=SOURCE_FILE \
  --os=IMAGE_OS \
  --timeout=TIMEOUT

Substitua as seguintes variáveis:

  • IMAGE_NAME: o nome da imagem de destino O nome não pode ter mais de 35 caracteres.
  • SOURCE_FILE: o arquivo de disco virtual. Esse arquivo é um arquivo local na estação de trabalho. É possível fornecer um caminho absoluto ou relativo.
  • IMAGE_OS: o SO no disco a ser importado.
  • TIMEOUT: o tempo que uma importação pode durar antes de falhar com "TIMEOUT". Por exemplo, se você especificar 2h, o processo vai falhar após 2 horas. O tempo limite padrão é 1h.

A operação de upload pode levar um longo período, dependendo do tamanho do disco virtual e da velocidade da conexão de rede. A operação de importação pode demorar bastante para ser executada, dependendo do tamanho do disco.

API

Para importar um disco virtual pela API, faça o seguinte:

  1. Crie um recurso personalizado VirtualMachineImageImport no servidor da API Management para iniciar o processo de importação de imagens:

    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
    

    Substitua as seguintes variáveis:

    • MANAGEMENT_API_SERVER: o arquivo kubeconfig do servidor de API de gerenciamento.
    • IMAGE_NAME: o nome da imagem a ser importada. O nome não pode ter mais de 35 caracteres.
    • PROJECT_ID: o ID do projeto em que você quer importar a imagem.
    • SOURCE_FILE: o nome do arquivo de origem que contém o upload do disco virtual para o repositório de objetos. Esse valor é a seção do caminho do repositório de objetos após vm-images-bucket/.
    • IMAGE_OS: o SO no disco a ser importado.
    • DISK_SIZE: o tamanho mínimo de um disco criado com base nessa imagem. Use um buffer de pelo menos 20% além do tamanho do sistema de arquivos da imagem original. Por exemplo, use pelo menos 12G para um disco virtual com um tamanho de sistema de arquivos original de 10G.
  2. Monitore o progresso da importação consultando o status do recurso personalizado VirtualMachineImageImport:

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

Limpar recursos

O processo de importação envolve o upload do arquivo de disco virtual para o repositório de objetos. Se você usar a CLI gdcloud, ela vai excluir o objeto quando o comando for concluído, mesmo que a importação falhe. Se você interromper o comando ou importar a imagem com a API, o arquivo de disco virtual poderá permanecer no bucket de repositório de objetos chamado vm-images-bucket até que você o exclua manualmente.

A seguir