Como migrar VMs para contêineres com o Migrate to Containers

Last reviewed 2021-10-21 UTC

Este documento é destinado a arquitetos de nuvem responsáveis por projetar e implementar um plano de migração para cargas de trabalho baseadas em máquina virtual em contêineres. Fornece orientação sobre como usar o Migrate to Containers para migrar máquinas virtuais (VMs) do ambiente de origem para contêineres em execução no Google Kubernetes Engine (GKE) ou no GKE Enterprise. O ambiente de origem pode ser executado em um ambiente local, em um ambiente de hospedagem particular ou em outra nuvem.

Neste documento, apresentamos uma visão geral do Migrate to Containers. Ele também contém pontos importantes a serem considerados ao planejar uma migração de VM para contêineres. Ele faz parte de uma série sobre como migrar para o Google Cloud. Se você tiver interesse em uma visão geral da série, consulte Migração para o Google Cloud: como escolher seu caminho de migração.

Leia este documento se você planeja migrar VMs que executam um sistema operacional compatível (SO), como Linux ou Windows, de um ambiente de origem compatível para um ambiente do GKE ou do GKE Enterprise com o Migrate to Containers. Esses ambientes de origem podem incluir o seguinte:

O Migrate to Containers permite que você coloque cargas de trabalho atuais baseadas em VM nos contêineres do GKE e do GKE Enterprise sem:

  • exigir acesso ao código-fonte
  • reescrever cargas de trabalho
  • conteinerizar suas cargas de trabalho manualmente

A migração de cargas de trabalho baseadas em VM com o Migrate to Containers oferece os seguintes benefícios:

  • Um ambiente em contêiner, incluindo:
  • Alta densidade de carga de trabalho
  • Mecanismos de orquestração avançados e gerenciamento de políticas
  • Canais de comunicação flexíveis entre serviços
  • Pode usar pipelines de integração e implantação contínuas
  • Pode ser movido de versões incompatíveis do SO
  • Pode iniciar a desativação do ambiente baseado em VM

A migração de cargas de trabalho baseadas em VM para contêineres com o Migrate to Containers é um dos passos possíveis na sua jornada de modernização da carga de trabalho. Migrar cargas de trabalho baseadas em VM com o Migrate to Containers ajuda a evitar as substituições caras necessárias para modernizar essas cargas. No entanto, elas não são transformadas em cargas de trabalho projetadas para serem executadas em um ambiente de nuvem.

Os candidatos de migração ideais incluem:

  • Cargas de trabalho em que a modernização por meio de uma substituição completa é impossível ou muito cara.
  • Cargas de trabalho com dependências desconhecidas que poderiam falhar devido a toques
  • Cargas de trabalho mantidas, mas não desenvolvidas ativamente
  • Cargas de trabalho que não são mais mantidas
  • Cargas de trabalho sem acesso ao código-fonte

É possível interagir com o Migrate to Containers de várias maneiras. Por exemplo, ele pode ser acessado no console do Google Cloud. Se for necessário automatizar o processo de migração e integrá-lo ao conjunto de ferramentas atual, use a interface de linha de comando e as definições de recursos personalizados (CRDs, na sigla em inglês) do Kubernetes do Migrate to Containers.

Para mais informações sobre as interfaces do Migrate to Containers, consulte APIs e referência | Migrate to Containers.

Este documento presume que você leu e está familiarizado com os seguintes documentos:

Como projetar a migração para o Google Cloud

Para migrar as VMs do ambiente de origem para contêineres em execução no Google Cloud, recomendamos seguir o framework descrito na série Migração para o Google Cloud.

No diagrama a seguir, veja o caminho da sua jornada de migração.

Caminho de migração com quatro fases.

O framework ilustrado no diagrama anterior tem quatro fases:

  1. Avaliar. Nesta fase, você avalia o ambiente de origem, analisa as cargas de trabalho que você quer migrar para o Google Cloud e define quais VMs são compatíveis com cada carga de trabalho.
  2. Planejar. Nesta fase, você cria a infraestrutura básica para o Migrate to Containers, como provisionar a hierarquia de recursos e configurar o acesso à rede.
  3. Implantar. Nesta fase, você migra as VMs do ambiente de origem para o GKE ou o GKE Enterprise com o Migrate to Containers.
  4. Otimizar. Nesta fase, você começa a aproveitar as tecnologias e os recursos de nuvem.

Como avaliar o ambiente de origem e as cargas de trabalho

Na fase de avaliação, você reúne informações sobre o ambiente de origem e as cargas de trabalho baseadas em VM que serão migradas. Isso ajuda a dimensionar os recursos necessários, tanto para a migração como para o ambiente de destino.

Na fase de avaliação, faça o seguinte:

  1. Crie um inventário abrangente das suas cargas de trabalho.
  2. Catalogue seus apps de acordo com as propriedades e dependências deles.
  3. Treine e instrua suas equipes no Google Cloud.
  4. Crie um experimento e uma prova de conceito no Google Cloud.
  5. Calcule o custo total de propriedade (TCO) do ambiente de destino.
  6. Escolha as cargas de trabalho que você quer migrar primeiro.

As seções a seguir dependem das informações em Migração para o Google Cloud: como avaliar e descobrir suas cargas de trabalho. No entanto, eles fornecem informações específicas para avaliar as cargas de trabalho baseadas em VM que você quer migrar para contêineres com o Migrate to Containers.

Criar seus inventários

Para definir o escopo da migração, é preciso entender seu ambiente atual baseado em VM. Para entender seu ambiente, colete informações sobre suas cargas de trabalho e as respectivas dependências.

Como criar um inventário dos aplicativos descreve como criar um inventário das cargas de trabalho no ambiente baseado em VM e nas dependências. Siga essas orientações e crie seus inventários antes de prosseguir com este documento.

Depois de criar um inventário das cargas de trabalho e das dependências, será preciso refiná-lo. Avalie os aspectos e recursos de interesse para sua organização quando migrar as cargas de trabalho baseadas em VM com o Migrate to Containers.

Para concluir o inventário das suas cargas de trabalho, considere o seguinte:

  • Ambiente de origem. O Migrate to Containers é compatível com a migração de VMs de diferentes ambientes de origem:

    • Compute Engine
    • VMware vSphere
    • VM do Microsoft Azure
    • Amazon EC2

    Para configurar corretamente o Migrate to Containers a fim de migrar as cargas de trabalho, é necessário avaliar o ambiente de origem.

  • Sistema operacional em execução nas VMs: colete informações sobre os sistemas operacionais e as licenças em execução nas VMs e verifique se os sistemas operacionais são compatíveis com o Migrate to Containers. Se você estiver executando um SO não compatível com o Migrate to Containers, faça upgrade para uma versão compatível ou altere seu SO para um SO compatível com o Migrate to Containers.

  • Cargas de trabalho nas VMs: avalie quais cargas de trabalho são implantadas em cada VM. Em seguida, mapeie as dependências entre suas cargas de trabalho e entre suas cargas de trabalho e serviços externos. Em seguida, reúna informações sobre as origens de configuração das cargas de trabalho. Por exemplo, você está usando variáveis de ambiente, um sistema de configuração distribuído ou servidores de metadados para configurar dinamicamente suas cargas de trabalho? Além disso, avalie como suas cargas de trabalho enviam informações para seu sistema de geração de registros.

  • Pontuação de adequação do Migrate to Containers: avalie se as cargas de trabalho podem ser migradas com o Migrate to Containers. O Migrate to Containers fornece uma ferramenta de avaliação de adequação para Linux e Windows, que pode ser executada nas VMs para calcular uma pontuação de adequação. Uma pontuação de baixa adequação indica que há problemas que precisam ser resolvidos antes de migrar suas cargas de trabalho. Por exemplo, se você ativou o Linux com segurança aprimorada nas suas VMs, pode ser necessário mais um esforço para atenuar essa dependência antes de migrá-los.

  • Serviços de rede: colete informações sobre a configuração dos serviços de rede e como as cargas de trabalho baseadas em VM usam esses serviços. Por exemplo, avalie como as cargas de trabalho usam o Sistema de Nome de Domínio (DNS), o Multicast DNS, os arquivos de hospedagem e outros mecanismos de descoberta de serviços para determinar a localização de outras cargas de trabalho e serviços. Em seguida, avalie o arquivo host de cada VM para qualquer entrada personalizada necessária para suas cargas de trabalho. Para mais informações sobre arquivos hosts, consulte Verificar e validar os recursos e descritores gerados.

  • Dependências de hardware: avalie qualquer tipo de hardware que você esteja usando no ambiente baseado em VM, como dispositivos de armazenamento de alto desempenho, GPUs, TPUs ou dispositivos de rede.

  • Cargas de trabalho sem estado e com estado: cargas de trabalho sem estado não armazenam estado no cluster ou no armazenamento permanente. As cargas de trabalho com estado salvam dados para uso posterior. Como a migração de cargas de trabalho com estado normalmente é mais difícil do que a migração sem estado, avalie quais cargas de trabalho são sem estado e quais são com estado.

  • Armazenamento: para cargas de trabalho com estado, faça uma lista dos seus requisitos de armazenamento. Veja algumas coisas que você precisa considerar ao criar uma lista:

    • Tipo de sistema de armazenamento (volumes de blocos, armazenamento de arquivos ou armazenamento de objetos)
    • Tamanho do sistema de armazenamento
    • Acesso da carga de trabalho ao sistema de armazenamento

      • Por exemplo, suas cargas de trabalho usam o Network File System (NFS) ou o Server Message Block (SMB) para acessar arquivos em uma rede?
      • Por exemplo, suas VMs executam servidores NFS ou SMB?

        Se as VMs executam servidores NFS no modo kernel, é necessário mais esforço para migrar esses servidores. É possível migrar esses servidores para outro ambiente de execução, como o Compute Engine ou o GKE. Ou então, é possível migrar dados para o Filestore, que é um serviço de armazenamento conectado à rede totalmente gerenciado.

    • Configuração do disco:

      • avaliar a configuração de todos os discos, partições de dados e volumes nas VMs, além dos recursos de segurança e confidencialidade de cada um.
  • Localidade dos dados: a localidade dos dados afeta o desempenho das cargas de trabalho com estado. A distância e a conectividade entre seus sistemas externos e o ambiente afetam a latência. Para cada sistema de armazenamento de dados externo, considere os requisitos de desempenho e disponibilidade que precisam ser atendidos.

Concluir a avaliação

Depois de criar os inventários relacionados ao ambiente e às cargas de trabalho baseadas em VM, conclua o restante das atividades da fase de avaliação documentadas em Migração para o Google Cloud: como avaliar e descobrir suas cargas de trabalho. Quando terminar esse trabalho, continue lendo este documento.

Como planejar e criar sua base

Na fase de planejamento e criação, você provisiona e configura a infraestrutura e os serviços de nuvem compatíveis com suas cargas de trabalho no Google Cloud:

  1. Crie uma hierarquia de recursos.
  2. Configure o gerenciamento de identidade e acesso.
  3. Configure o faturamento.
  4. Configurar a conectividade de rede.
  5. Aumente sua segurança.
  6. Configure o monitoramento e os alertas.

Para orientações sobre como criar a infraestrutura e os serviços de nuvem que suportam suas cargas de trabalho e as respectivas dependências, consulte Migração para o Google Cloud: como criar sua base. Siga essas diretrizes para criar uma base para os ambientes. Quando terminar, continue lendo este documento.

Depois de seguir as orientações em "Migração para o Google Cloud: como criar sua base", conclua seu trabalho de base configurando o Migrate to Containers:

  1. Confirme se as cargas de trabalho e o ambiente de origem atendem aos pré-requisitos do Migrate to Containers.
  2. Ative a API Migrate to Containers do Cloud.
  3. Provisione as contas de serviço que o Migrate to Containers usa para acessar recursos no ambiente de destino.
  4. Se você estiver migrando suas cargas de trabalho para os clusters do GKE ou do GKE no Google Cloud, configure o Migrate to Virtual Machines.
  5. Configure um cluster de processamento do Migrate to Containers. Um cluster de processamento do Migrate to Containers executa os componentes do Migrate to Containers durante a migração.
  6. Instale e configure o Migrate to Containers no cluster de processamento.

O artigo "Configurando o Migrate to Containers" mencionado anteriormente descreve como provisionar e configurar o Migrate to Containers e as dependências dele. Siga estas instruções para configurar o Migrate to Containers.

Quando terminar o trabalho descrito nesta seção, retorne a este documento.

Como migrar cargas de trabalho baseadas em VM para contêineres

Na fase de implantação, use os seguintes marcos para guiar você na migração das VMs do ambiente de origem para contêineres em execução no GKE ou no GKE Enterprise:

  1. Gerar e revisar planos de migração.
  2. Gere artefatos de contêiner e descritores de implantação.
  3. Verifique, valide e personalize os descritores de recursos que o Migrate to Containers geraram para você.
  4. Implante e valide as cargas de trabalho conteinerizadas no GKE ou no GKE Enterprise.
  5. Desinstale o Migrate to Containers.

Para mais informações sobre as etapas necessárias para migrar VMs com o Migrate to Containers, consulte Fazer uma migração.

Gerar e analisar o plano de migração

Crie um plano de migração no Migrate to Containers para suas cargas de trabalho baseadas em VM:

  1. Configurar os ambientes de origem como origens de migração do Migrate to Containers. Para migrar suas cargas de trabalho baseadas em VM, o Migrate to Containers precisa de informações sobre os ambientes de origem em que suas VMs são executadas atualmente. Você coletou essas informações executando as tarefas descritas na seção Criar seus inventários neste documento. Para mais informações sobre como configurar os ambientes de origem, consulte Como adicionar uma origem de migração (Linux) e Como adicionar uma origem de migração (Windows).
  2. Criar planos de migração. Para especificar quais cargas de trabalho baseadas em VM você quer migrar de um ambiente de origem para um ambiente de destino suportado, crie um plano de migração. Por exemplo, é possível configurar onde você quer armazenar os dados permanentes. Para mais informações sobre como criar e monitorar planos de migração, consulte Como criar uma migração (Linux) e Como criar uma migração (Windows).
  3. Revise e personalize os planos de migração. Depois de gerar planos de migração para cada uma das cargas de trabalho baseadas em VM que você quer migrar, recomendamos que você revise e personalize cada plano de migração para garantir que atenda aos seus requisitos. Para mais informações sobre como personalizar os planos de migração, consulte Como personalizar um plano de migração (Linux) e Como personalizar um plano de migração (Windows).

Quando terminar o trabalho descrito nesta seção, retorne a este documento.

Gere artefatos de contêiner e descritores de implantação

Para gerar os artefatos de contêiner de destino para suas cargas de trabalho, o Migrate to Containers cria uma imagem de contêiner comportando a carga de trabalho e os dados extraídos da VM no plano de migração. Em seguida, ele armazena uma cópia da imagem do contêiner no repositório de imagens do contêiner configurado. O Migrate to Containers também gera os descritores de implantação, que podem ser personalizados e usados para implantar instâncias das imagens de contêiner no ambiente de destino.

Para mais informações sobre como gerar artefatos de contêiner, consulte Como executar uma migração (Linux) e Como executar uma migração (Windows).

É possível monitorar o progresso dos artefatos de contêiner criados e migrados. Para mais informações sobre como monitorar uma migração, consulte Como monitorar uma migração (Linux) e Como monitorar uma migração (Windows).

Se você estiver gerando artefatos de contêiner para cargas de trabalho do Windows, use os artefatos e os descritores de implantação que o Migrate to Containers gerou para criar imagens de contêiner do Windows para essas cargas de trabalho. Para mais informações sobre como criar imagens de contêiner do Windows para suas cargas de trabalho, consulte Como criar uma imagem de contêiner do Windows.

Quando terminar o trabalho descrito nesta seção, retorne a este documento.

Verificar e validar os recursos e descritores gerados

Depois de gerar artefatos de contêiner e descritores de implantação com o Migrate to Containers, revise e atualize esses artefatos e descritores para garantir que eles atendam aos seus requisitos. O tempo necessário para atualizar os artefatos do contêiner e os descritores da implantação depende da quantidade de cargas de trabalho baseadas em VM que estão sendo migradas e da complexidade delas. Para mais informações sobre como analisar artefatos de contêiner e descritores de implantação, consulte Como analisar arquivos de implantação gerados (Linux) e Como criar uma imagem de contêiner do Windows. Por exemplo, considere os aspectos a seguir.

Como nomear recursos e descritores

Recursos e descritores de configuração e registro

Descritores e recursos de política e perfil

  • Listas de controle de acesso (ACLs) para cargas de trabalho do Windows: como os contêineres do Windows não são compatíveis com a configuração de ACLs ao criar imagens de contêiner do Windows, o Migrate to Containers não migra ACLs do Windows personalizadas. Se você precisar personalizar suas cargas de trabalho do Windows, consulte Como configurar ACLs.
  • Perfis do AppArmor: verifique se todos os perfis do AppArmor necessários para suas cargas de trabalho estão disponíveis no ambiente de destino. Caso contrário, as cargas de trabalho migradas talvez não sejam iniciadas.
  • Políticas de rede: se for necessário restringir o acesso aos pods que executam as cargas de trabalho, use o NetworkPolicies para controlar o fluxo de tráfego para e dos seus pods.

Outros recursos e descritores

Quando terminar o trabalho descrito nesta seção, retorne a este documento.

Implantar e validar cargas de trabalho em contêiner

Quando os descritores de implantação das cargas de trabalho estiverem prontos, execute as seguintes etapas:

  1. Implante suas cargas de trabalho migradas no ambiente de destino. Para ver orientações sobre como implantar cargas de trabalho do Linux e do Windows migradas, consulte Como implantar uma carga de trabalho do Linux em um cluster de destino e Como implantar uma carga de trabalho do Windows em um cluster de destino.
  2. Monitore suas cargas de trabalho migradas. Depois de implantar as cargas de trabalho migradas do Linux e do Windows, colete informações sobre o desempenho delas. Para mais informações, consulte Como monitorar cargas de trabalho migradas (Linux) e Como monitorar cargas de trabalho migradas (Windows).

  3. Integre as cargas de trabalho migradas. Depois que as cargas de trabalho implantadas no ambiente de destino funcionarem, integre-as. Integre os processos de geração e implantação de artefatos de contêiner das cargas de trabalho com seus processos e pipelines de implantação. Se você ainda não tem um processo de implantação automatizado e está implantando manualmente suas cargas de trabalho, é recomendável migrar de implantações manuais para implantações automatizadas.

Quando terminar o trabalho descrito nesta seção, retorne a este documento.

Desinstalar o Migrate to Containers

Depois de concluir a migração das cargas de trabalho com o Migrate to Containers, é recomendável que você:

  1. Verifique se você tem todas as referências aos artefatos que o Migrate to Containers gerou durante a migração.
  2. Desinstale o Migrate to Containers.

Quando terminar o trabalho descrito nesta seção, retorne a este documento.

Como otimizar o ambiente após a migração

Otimizar o ambiente é a última fase da migração. Para otimizar o ambiente do GKE e do GKE Enterprise, consulte Como otimizar seu ambiente.

A seguir