Migrar uma VM do Linux usando o Migrate to Containers

Neste guia de início rápido, você criará uma máquina virtual (VM) do Compute Engine e usará o Migrate to Containers para migrar a VM para o Google Kubernetes Engine (GKE).

Antes de começar

  1. No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  2. Verifique se a cobrança está ativada para o seu projeto do Google Cloud. Saiba como verificar se o faturamento está ativado em um projeto.

  3. Ative a API Compute Engine.

    Ativar a API do Compute Engine

  4. Ative a API GKE:

    Ativar a API GKE

  5. Para usar os exemplos de linha de comando deste guia, faça o seguinte:

    1. Instale ou atualize para a versão mais recente da Google Cloud CLI.
    2. Defina uma região e uma zona padrão.

Criar uma VM do Compute Engine com um servidor da Web

Nesta seção, você verá como criar uma VM simples do Compute Engine que exibirá uma página da Web "Hello, World!" que você pode usar para testes após a conclusão da migração.

  1. No console do Google Cloud, clique em Botão "Ativar shell"Ativar o Cloud Shell.

    Acessar o Console do Google Cloud

  2. Para criar uma VM, execute o seguinte comando:

    gcloud compute instances create quickstart-instance \
      --zone=us-central1-a --machine-type=e2-standard-2 \
      --subnet=default --scopes="cloud-platform" \
      --tags=http-server,https-server --image=ubuntu-minimal-1604-xenial-v20210119a \
      --image-project=ubuntu-os-cloud --boot-disk-size=10GB --boot-disk-type=pd-standard \
      --boot-disk-device-name=quickstart-instance
    
  3. Para criar uma regra de firewall que permita solicitações para a instância por HTTP, execute o seguinte comando:

    gcloud compute firewall-rules create default-allow-http \
     --direction=INGRESS --priority=1000 --network=default --action=ALLOW \
     --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server
    
  4. No console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar instâncias de VM

  5. Para se conectar à VM quickstart-instance, localize a linha da VM e clique em SSH.

    A conexão é estabelecida em uma nova guia.

  6. Para instalar o pacote apache2, na nova guia de comando quickstart-instance, execute o seguinte:

    sudo apt-get update && sudo apt-get install apache2 -y
    
  7. Depois da instalação do Apache, o sistema operacional inicia automaticamente o servidor Apache.

  8. Na mesma guia, para substituir a página da Web padrão do servidor da Web Apache por uma nova, execute o seguinte comando:

    echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
    
  9. Volte para a página Instâncias de VM e copie o endereço IP externo exibido para quickstart-instance.

  10. Cole o endereço IP da VM na barra de endereço do navegador. Insira o prefixo http://.

    Você verá a página "Hello, World!".

  11. Na página Instâncias de VM, marque a caixa de seleção no lado esquerdo da linha para quickstart-instance.

  12. Para interromper a VM, clique em Parar na parte superior da página.

    É necessário interromper a VM antes de iniciar uma migração. É possível iniciá-la novamente após a migração.

Crie um cluster de processamento

Nesta seção, você cria um cluster do GKE no Google Cloud, que é usado como um cluster de processamento.

  1. No console do Google Cloud, clique em Botão "Ativar shell"Ativar o Cloud Shell.

    Acessar o Console do Google Cloud

  2. Para criar um novo cluster do Kubernetes para usá-lo como cluster de processamento, execute o seguinte comando:

    gcloud container clusters create migration-processing \
     --zone=us-central1-a --machine-type e2-standard-4 \
     --image-type ubuntu_containerd --num-nodes 1 \
     --enable-stackdriver-kubernetes \
     --subnetwork "projects/PROJECT_ID/regions/us-central1/subnetworks/default"
    

    Substitua PROJECT_ID pela ID do seu projeto.

    Aguarde alguns minutos para que a criação do cluster seja concluída.

Instalar o Migrate to Containers

  1. No console do Google Cloud, acesse a página Migrate to Containers.

    Acessar o Migrate to Containers

  2. Clique na guia Clusters de processamento e, depois, em Adicionar cluster de processamento.

  3. Na lista Tipo de SO das cargas de trabalho, selecione Linux e clique em Avançar.

  4. Na lista Selecionar um cluster, selecione migration-processing e clique em Avançar.

  5. Na seção Configuração, não altere os valores padrão e clique em Avançar.

  6. Na seção Conta de serviço, selecione Criar uma nova conta de serviço.

  7. No campo Nome da conta de serviço, insira quickstart-sa1.

  8. Clique em Continuar e em Implantar.

    Aguarde alguns minutos para que a configuração do cluster de processamento seja concluída.

Migrar a VM do Compute Engine

Nas seções a seguir, você especifica a origem da migração como uma VM do Compute Engine. Nesta etapa, as especificações de origem são adicionadas ao plano de migração. Em seguida, crie um plano de migração com detalhes da migração e use-o para migrar a VM.

Especifique a origem da migração

  1. No console do Google Cloud, acesse a página Migrate to Containers.

    Acessar o Migrate to Containers

  2. Clique em Adicionar origem.

  3. Na lista Selecionar um cluster de processamento, selecione migration-processing e clique em Avançar.

  4. No campo Nome, use quickstart-source.

  5. Deixe o Tipo de origem como Compute Engine e clique em Avançar.

  6. No campo Projeto, especifique o ID do projeto que contém a VM que você quer migrar.

  7. Selecione Criar uma nova conta de serviço para criar uma conta que permite usar o Compute Engine como uma origem de migração.

  8. No campo Nome da conta de serviço, insira quickstart-sa2.

  9. Clique em Continuar e em Adicionar origem.

Crie uma migração

  1. No console do Google Cloud, acesse a página Migrate to Containers.

    Acessar o Migrate to Containers

  2. Clique em Criar migração.

  3. No campo Nome da migração, insira quickstart-migration.

  4. Na lista Selecionar origem, selecione quickstart-source.

  5. Na lista Tipo de carga de trabalho, selecione Contêiner do sistema Linux.

  6. No campo Nome da instância, insira quickstart-instance.

  7. Clique em Criar migração.

    A migração é adicionada à tabela Migrações. No entanto, a criação da migração pode levar alguns minutos para ser concluída. Quando ela for concluída, a coluna Status será atualizada na tabela Migrações.

Implantar a carga de trabalho migrada

Para gerar os artefatos de contêiner de destino como parte do processamento de uma VM para migração, faça o seguinte:

  1. No console do Google Cloud, acesse a página Migrate to Containers.

    Acessar o Migrate to Containers

  2. Para quickstart-migration, na coluna Próximas etapas, selecione Opções: Gerar artefatos. Quando os artefatos são gerados, a coluna Status da migração é atualizada.

  3. Quando a migração for concluída, clique em Botão "Ativar shell"Ativar o Cloud Shell.

  4. Para fazer o download dos artefatos YAML gerados, execute o seguinte comando:

    migctl migration get-artifacts quickstart-migration
    

    O comando faz o download dos seguintes arquivos gerados durante a migração:

    • deployment_spec.yaml: o arquivo YAML que configura a carga de trabalho.
    • Dockerfile: usado para criar a imagem da VM migrada.
    • migration.yaml: uma cópia do plano de migração.
    • blocklist.yaml: a lista de serviços de contêiner que devem ser desativados com base nas configurações do plano de migração.
  5. Para abrir o editor do Cloud Shell, clique em Abrir editor.

  6. Abra o arquivo deployment_spec.yaml e localize o objeto Service com o nome quickstart-instance. Ele deve aparecer como mostrado abaixo:

    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: null
      name: quickstart-instance
    spec:
      clusterIP: None
      selector:
        app: quickstart-instance
      type: ClusterIP
    status:
      loadBalancer: {}
    
    ---
    
  7. Abaixo da definição Service mostrada acima, cole a definição Service destacada em azul abaixo, que expõe a porta 80 para acesso ao servidor da Web por HTTP:

    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: null
      name: quickstart-instance
    spec:
      clusterIP: None
      selector:
        app: quickstart-instance
      type: ClusterIP
    status:
      loadBalancer: {}
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: hello-service
    spec:
      selector:
        app: quickstart-instance
      ports:
        - protocol: TCP
          port: 80
          targetPort: 80
      type: LoadBalancer
    
    ---
    

    Se necessário, corrija o recuo da definição Service no arquivo.

  8. Salve o arquivo.

  9. Clique em Abrir terminal.

  10. Para implantar a VM migrada, execute o seguinte comando:

    skaffold run -d eu.gcr.io/PROJECT_ID
    

    Substitua PROJECT_ID pela ID do seu projeto.

  11. Para saber o endereço IP externo da VM migrada, execute o seguinte comando:

    kubectl get service hello-service
    

    Quando o servidor da Web estiver pronto, você verá um endereço IP externo para a hello-service adicionada.

    kubectl get service hello-service
    NAME            TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)        AGE
    hello-service   LoadBalancer   10.23.241.124   ##.##.###.##   80:32611/TCP   5m4s
    
  12. Para verificar se a migração foi bem-sucedida, abra uma nova guia do navegador e acesse a página da Web no endereço IP externo (use HTTP, não HTTPS).

    http://##.##.###.##
    

    Se o texto Hello World! for exibido na tela, significa que a migração da VM foi bem-sucedida.

    Se não for possível acessar a carga de trabalho migrada, veja como resolver problemas conhecidos.

Limpar

Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.

Excluir a migração

  1. No console do Google Cloud, acesse a página Migrate to Containers.

    Acessar o Migrate to Containers

  2. Clique na guia Migrações para exibir uma tabela com as migrações disponíveis.
  3. Para quickstart-migration, clique em Excluir, no lado direito da tabela, e selecione Excluir migração.

Excluir a origem da migração

  1. No console do Google Cloud, acesse a página Migrate to Containers.

    Acessar o Migrate to Containers

  2. Clique em Gerenciar origens para exibir a lista de origens disponíveis.
  3. Para quickstart-source, clique em Excluir, no lado direito da tabela.
  4. Para confirmar a exclusão, digite o texto mostrado e clique em Excluir novamente.

Excluir o cluster do GKE

  1. No Console do Google Cloud, acesse a página do Google Kubernetes Engine.

    Acessar o Google Kubernetes Engine

  2. Selecione migration-processing e clique em Excluir.
  3. Quando solicitado a confirmar, clique em Excluir novamente.

Excluir as contas de serviço

  1. No Console do Google Cloud, acesse a página Contas de serviço.

    Acessar Contas de serviço

  2. Selecione o projeto em que você criou as contas de serviço.
  3. Selecione quickstart-sa1 e quickstart-sa2 e clique em Excluir excluir.
  4. Quando solicitado a confirmar, clique em Excluir novamente.

Excluir a VM

  1. No console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar instâncias de VM

  2. Clique no nome quickstart-instance.
  3. Na parte superior da página de detalhes da instância, clique em Excluir.

A seguir