Como migrar contêineres para o Google Cloud: primeiros passos

Neste documento, mostramos como planejar, projetar e implementar a migração de seus contêineres para o Google Cloud. Se feita incorretamente, a migração das cargas de trabalho de um ambiente para outro pode ser uma tarefa desafiadora. Portanto, planeje e execute a migração com cuidado.

Este documento faz parte de uma série sobre a migração 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.

Este documento faz parte de uma série que discute a migração de contêineres para o Google Cloud:

Este documento é útil para vários cenários, por exemplo: se você estiver começando com contêineres em execução no local, em um ambiente de hospedagem particular ou em outro provedor de nuvem, se estiver migrando toda a carga de trabalho para o Google Cloud ou se estiver mantendo parte da carga de trabalho no local ou em um ambiente de hospedagem particular.

Este documento também é útil se você estiver avaliando a oportunidade de migrar e quiser explorar as opções e as opções que você tem. Há vários ambientes para que um contêiner execute cargas de trabalho disponíveis no Google Cloud. Escolher uma opção em relação às outras depende de vários fatores, e nenhuma delas é inerentemente melhor do que as outras. Cada ambiente tem seus pontos fortes e fracos. Para escolher um ambiente, faça o seguinte:

  1. Estabeleça um conjunto de critérios para avaliar os ambientes do contêiner na execução das cargas de trabalho.
  2. Avalie cada ambiente de acordo com os critérios de avaliação.
  3. Escolha o ambiente que melhor atende às suas necessidades.

Você não precisa escolher o mesmo ambiente para todas as cargas de trabalho. Se você tiver diferentes tipos ou classes de cargas de trabalho, poderá escolher diferentes ambientes para cada um desses tipos ou classes.

Como projetar a migração para o Google Cloud

Para migrar seus contêineres do ambiente de origem para o Google Cloud, recomendamos que você siga o framework descrito na série sobre 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, avalia as cargas de trabalho que quer migrar para o Google Cloud e avalia qual ambiente é compatível com cada carga de trabalho.
  2. Planejar. Nesta fase, você cria a infraestrutura básica para suas cargas de trabalho, como provisionamento da hierarquia de recursos e configuração do acesso à rede.
  3. Implantar. Nesta fase, você migra os contêineres do ambiente de origem para o Google Cloud.
  4. Otimizar. Nesta fase, você começa a aproveitar as tecnologias e os recursos de nuvem.

Como estabelecer critérios para avaliar os ambientes de contêineres para executar cargas de trabalho

Para estabelecer os critérios e avaliar as opções do ambiente de contêiner para executar cargas de trabalho, considere os recursos mais importantes necessários nesses ambientes. Para coletar informações sobre quais recursos são mais necessários, avalie suas cargas de trabalho. Para mais informações sobre como avaliar as cargas de trabalho, consulte Migração para o Google Cloud: como avaliar e descobrir cargas de trabalho.

Esses critérios de avaliação e a ordem em que eles estão listados são exemplos. Avalie as cargas de trabalho para compilar uma lista dos critérios que são importantes para você e suas cargas de trabalho e organize-as de acordo com a importância. Por exemplo, após avaliar suas cargas de trabalho, pense nos seguintes critérios de avaliação, listados em ordem de importância:

  1. Desempenho. O ambiente aumenta a sobrecarga que pode prejudicar o desempenho das cargas de trabalho?
  2. Dimensionamento. Quais recursos de escalonabilidade o ambiente oferece? Elas são suficientes para os requisitos de escalonabilidade de suas cargas de trabalho, tanto em termos de tempo de reação quanto de lógica de escalonabilidade?
  3. Nível de controle e flexibilidade. Qual nível de controle você quer sobre o ambiente? É possível personalizar o ambiente de acordo com suas necessidades?
  4. Confiabilidade. Quais garantias o ambiente oferece? Elas são suficientes para suas cargas de trabalho? Ele é confiável o suficiente para implementar estratégias eficazes de alta disponibilidade e recuperação de desastres?
  5. Sobrecarga de gerenciamento. Quanto esforço é necessário para gerenciar o ambiente? Você precisa treinar suas equipes para reunir as habilidades necessárias ou pode usar o conhecimento existente?
  6. Requisitos para usar o serviço. Há algum requisito, contrato técnico ou interface que suas cargas de trabalho precisam seguir? Você precisa de um esforço significativo para tornar sua carga de trabalho compatível com o ambiente?
  7. Persistência de dados. O ambiente de contêiner para executar cargas de trabalho é compatível com a persistência de dados? Essa persistência é compatível com os requisitos de suas cargas de trabalho, incluindo desempenho, confiabilidade e regulamentações legais?
  8. Modelo de preços e custos. É possível usar o ambiente de maneira econômica? Você consegue um retorno adequado do investimento ao passar para um ambiente de contêiner para executar cargas de trabalho?
  9. Proteção futura. O ambiente oferece caminhos de upgrade que podem ser usados para evoluir cargas de trabalho?
  10. Integração com outros serviços. O ambiente se integra a outros serviços do Google Cloud e outros provedores de nuvem?
  11. Bloqueio. O ambiente bloqueia você para tecnologias, paradigmas ou interfaces específicas? O ambiente está dificultando a portabilidade das cargas de trabalho?
  12. Segurança. O ambiente atende aos seus requisitos de segurança e privacidade?

Como avaliar o ambiente do contêiner para executar cargas de trabalho

No Google Cloud, você tem diferentes opções para executar contêineres. Para escolher a melhor opção para suas cargas de trabalho, primeiro avalie-as de acordo com os critérios de avaliação estabelecidos anteriormente. Para cada ambiente, você atribui uma pontuação relativa a cada critério de avaliação em uma escala arbitrária e ordenada. Por exemplo, é possível atribuir a cada ambiente uma pontuação de uma escala de 1 a 10 em cada critério de avaliação.

Para executar contêineres no Google Cloud, recomendamos as seguintes opções, que são apresentadas em ordem crescente de controle sobre a infraestrutura subjacente:

  1. Ambiente flexível do App Engine
  2. Cloud Run e Cloud Run for Anthos
  3. Google Kubernetes Engine (GKE) e clusters do Anthos
  4. Compute Engine

Para atribuir pontuações a alguns dos critérios, leia a documentação do produto. Por exemplo, já é possível avaliar o ambiente flexível do App Engine em relação ao desempenho, à escalonabilidade, ao grau de controle e flexibilidade, à integração com outros serviços e aos critérios de dependência. No entanto, para atribuir pontuações em relação a outros critérios, talvez seja necessário projetar e executar comparações e simulações mais detalhadas. Por exemplo, talvez você precise comparar o desempenho de diferentes ambientes de execução do contêiner para avaliar se eles adicionam sobrecarga considerável às cargas de trabalho.

Ambiente flexível do App Engine

O ambiente flexível do App Engine permite executar uma implementação de um ambiente de execução flexível que você consegue personalizar de acordo com suas próprias necessidades, começando em um conjunto predefinido de imagens de contêiner. As instâncias em contêiner das cargas de trabalho são executadas em máquinas virtuais (VMs) gerenciadas do Compute Engine.

Use a lista a seguir para avaliar o ambiente flexível do App Engine com base nos critérios que você estabeleceu anteriormente:

  1. Desempenho. O ambiente flexível do App Engine usa contêineres do Docker, que têm desempenho semelhante a cargas de trabalho fora de contêineres. Portanto, eles não adicionam sobrecarga de desempenho considerável.
  2. Dimensionamento. O ambiente flexível do App Engine é mais adequado para aplicativos que recebem tráfego constante e têm flutuações de tráfego regulares e predominantemente previsíveis. O ambiente flexível do App Engine tem um tempo de inicialização de instâncias medido em minutos. Ele permite escalonar as instâncias das cargas de trabalho em uma instância. Se você precisar de um ambiente que se adapte a zero instâncias, recomendamos escolher uma das outras opções.
  3. Nível de controle e flexibilidade. O ambiente flexível do App Engine é útil quando você precisa executar um serviço da Web não compatível com o ambiente padrão e quando é necessário personalizar um ambiente predefinido. O ambiente flexível do App Engine não permite personalizar as VMs subjacentes do Compute Engine. Portanto, se você precisa de controle da infraestrutura subjacente, recomendamos escolher uma das outras opções.
  4. Confiabilidade. As VMs do Compute Engine que executam as cargas de trabalho em contêiner são totalmente gerenciadas e verificadas constantemente na integridade. As VMs são atualizadas continuamente com atualizações do sistema operacional e patches de segurança e são reinicializadas semanalmente. Você não precisa se preocupar com a confiabilidade do ambiente. Em vez disso, foque na confiabilidade de suas cargas de trabalho.
  5. Sobrecarga de gerenciamento. O ambiente flexível do App Engine executa as cargas de trabalho em contêineres nas VMs do Compute Engine totalmente gerenciadas. Assim, você não precisa se esforçar para gerenciar o ambiente do contêiner para executar cargas de trabalho.
  6. Requisitos para usar o serviço. Para serem executadas no ambiente flexível do App Engine, as cargas de trabalho precisam aderir a um conjunto de regras explicadas em Como criar ambientes de execução personalizados. Por exemplo, a carga de trabalho precisa detectar atividade na porta 8080 e processar determinados sinais POSIX. Se não for possível dedicar mais esforços para tornar suas cargas de trabalho compatíveis com o ambiente flexível do App Engine, escolha uma das outras opções. Para mais informações sobre as limitações do ambiente flexível do App Engine, consulte os problemas conhecidos do ambiente flexível do App Engine.
  7. Persistência de dados. O ambiente flexível do App Engine é compatível com armazenamento temporário inicial. Basta inicializar um disco sempre que uma VM do Compute Engine é iniciada. Se as cargas de trabalho tiverem requisitos de persistência de dados, avalie-as com cuidado para identificar se você também precisa de um serviço de persistência de dados externo.
  8. Modelo de preços e custos. O custo do ambiente flexível do App Engine inclui os recursos de VM do Compute Engine que as cargas de trabalho usam.
  9. Proteção futura. O ambiente flexível do App Engine permite criar ambientes personalizados para as cargas de trabalho em contêiner. Use esse recurso para os caminhos de upgrade e pipelines de implantação necessários para suas cargas de trabalho. Por exemplo, é possível atualizar os componentes que são pré-instalados nas imagens de base do ambiente flexível do App Engine para que correspondam às versões necessárias.
  10. Integração com outros serviços. O ambiente flexível do App Engine é integrado a outras APIs e serviços do Google Cloud.
  11. Bloqueio. O ambiente flexível do App Engine requer que você coloque suas cargas de trabalho em contêineres com base em um conjunto de imagens de contêiner predefinidas. Se você migrar do ambiente flexível do App Engine para outro serviço, talvez seja necessário planejar mais esforços para refatorar as imagens do contêiner.
  12. Segurança. As cargas de trabalho em execução no ambiente flexível do App Engine se beneficiam de duas camadas de isolamento: a camada do Docker e a camada do Compute Engine. Também é possível proteger as cargas de trabalho em execução no ambiente flexível do App Engine com solicitações HTTPS, controle de acesso, firewall do App Engine e Scanner de segurança na Web.

Para mais informações, consulte Como escolher um ambiente do App Engine.

Cloud Run e Cloud Run for Anthos

O Cloud Run é uma plataforma gerenciada para executar cargas de trabalho em contêiner sem estado e desenvolvidas no Knative. As cargas de trabalho em contêiner gerenciadas pelo Cloud Run podem ser executadas no seguinte:

  • Se você escolher o Cloud Run, suas cargas de trabalho serão executadas em uma infraestrutura gerenciada pelo Google.
  • Se você escolher o Cloud Run para Anthos, suas cargas de trabalho serão executadas no GKE, que pode ser no Google Cloud, no local ou em outros provedores de nuvem.

Use a lista a seguir para avaliar o Cloud Run e o Cloud Run para Anthos em relação aos critérios que você estabeleceu anteriormente:

  1. Desempenho. O Cloud Run e o Cloud Run for Anthos usam contêineres do Docker, que têm desempenho semelhante a cargas de trabalho fora de contêineres. Portanto, os contêineres não adicionam nenhuma sobrecarga de desempenho considerável.
  2. Dimensionamento. O Cloud Run escalona automaticamente as instâncias das cargas de trabalho e permite que você escalone seu aplicativo para zero instâncias. Esse recurso é útil quando as cargas de trabalho não precisam ter instâncias em execução o tempo todo. Para minimizar o tempo de inicialização da instância, otimize a inicialização das cargas de trabalho.
  3. Nível de controle e flexibilidade. O Cloud Run e o Cloud Run para Anthos são adequados para cargas de trabalho que exigem o controle total do ambiente em contêiner em que suas cargas de trabalho são executadas. Porém, você não precisa personalizar esse ambiente.
  4. Confiabilidade. O Cloud Run e o Cloud Run for Anthos se integram ao Cloud Monitoring, Cloud Logging, Cloud Audit Logs e o Error Reporting para que você tenha cobertura no monitoramento de desempenho e acesso a registros de contêiner, solicitação, erro e auditoria.
  5. Sobrecarga de gerenciamento. O Cloud Run e o Cloud Run for Anthos gerenciam o ambiente para que você possa se concentrar nas cargas de trabalho, em vez de se esforçar para provisionar, configurar e manter a infraestrutura subjacente.
  6. Requisitos para usar o serviço. Suas cargas de trabalho precisam aderir a um contrato de ambiente de execução do contêiner. Portanto, se você não puder fazer mais esforço para torná-las compatíveis com o Cloud Run, recomendamos escolher uma das outras opções. Para mais informações sobre as limitações do Cloud Run, consulte Problemas conhecidos do Cloud Run.
  7. Persistência de dados. O Cloud Run e o Cloud Run for Anthos foram projetados para executar contêineres sem estado. Se as cargas de trabalho tiverem requisitos de persistência de dados, será necessário provisionar e configurar outro sistema de persistência de dados. Se você precisar de um ambiente de execução de contêiner para cargas de trabalho com estado, recomendamos escolher uma opção diferente.
  8. Modelo de preços e custos. O Cloud Run cobra pelos recursos de computação que suas cargas de trabalho usam. O Cloud Run for Anthos está incluído na assinatura do Anthos.
  9. Proteção futura. O Cloud Run permite fazer reversões, lançamentos graduais e migração de tráfego. Use esses recursos nos seus pipelines de implantação.
  10. Integração com outros serviços. O Cloud Run pode se conectar a uma rede de nuvem privada virtual (VPC) que permite acesso a VMs do Compute Engine e a qualquer outro recurso com endereços IP internos.
  11. Bloqueio. O Cloud Run é desenvolvido no Knative. Se você se esforçar para tornar suas cargas de trabalho compatíveis com o Knative, poderá executar suas cargas de trabalho em contêineres no Cloud Run, no GKE, em clusters do Anthos no VMware ou em qualquer outro ambiente de execução compatível com Knative sem qualquer modificação adicional.
  12. Segurança. As cargas de trabalho em execução no Cloud Run são colocadas no sandbox usando o gVisor. O Cloud Run for Anthos não usa sandbox de contêiner, mas sim recursos padrão de isolamento de contêiner do Kubernetes. Proteja os recursos do Cloud Run ao gerenciar o acesso com o gerenciamento de identidade e acesso (IAM) e configurar uma identidade de serviço

Para mais informações, consulte Como escolher uma plataforma do Cloud Run.

Clusters do GKE e do Anthos

Os clusters do GKE e do Anthos são serviços gerenciados pelo Google que oferecem um ambiente de contêiner para executar cargas de trabalho. Os clusters do GKE e do Anthos executam as cargas de trabalho em contêineres nos clusters do Kubernetes. Graças ao GKE, aos clusters executados no Google Cloud e aos clusters do Anthos, os clusters podem ser executados no Google Cloud, no local ou em outros ambientes de nuvem pública.

Use a lista a seguir para avaliar os clusters do GKE e do Anthos em relação aos critérios que você estabeleceu anteriormente:

  1. Desempenho. Os clusters do GKE e do Anthos usam contêineres do Docker, que têm desempenho semelhante a cargas de trabalho fora de contêineres. Portanto, os contêineres não adicionam nenhuma sobrecarga de desempenho considerável.
  2. Dimensionamento. Os clusters do GKE e do Anthos incluem lógica de escalonamento ajustada que você pode adaptar às suas próprias necessidades. É possível dimensionar as cargas de trabalho e os clusters de clusters do GKE e do Anthos vertical e horizontalmente. Se você não precisa de lógica de dimensionamento complexa, recomendamos escolher uma opção diferente, senão poderá precisar de esforço significativo para configurar mecanismos de escalonabilidade eficazes.
  3. Nível de controle e flexibilidade. É possível provisionar e configurar clusters de clusters do GKE e do Anthos de acordo com suas necessidades. É possível personalizar cada aspecto dos nós do cluster, incluindo armazenamento, rede e segurança. O Google gerencia o plano de controle para você. Assim, se você precisar personalizar a configuração do plano de controle, recomendamos escolher uma opção diferente.
  4. Confiabilidade. Os clusters do GKE e do Anthos se integram ao Cloud Monitoring e ao Cloud Logging para que você tenha uma cobertura completa sobre o monitoramento de desempenho e o acesso a registros de contêiner, solicitação, erro e auditoria. É possível aumentar a confiabilidade do ambiente com clusters regionais do GKE e opções de alta disponibilidade de clusters do Anthos.
  5. Sobrecarga de gerenciamento. Com o GKE, você não precisa gerenciar o plano de controle dos clusters. Os clusters do Anthos permitem gerenciar todos os clusters do Kubernetes com o mesmo conjunto de ferramentas e processos. Esse recurso reduz bastante o esforço necessário para gerenciar o ambiente. No entanto é necessário gerenciar parte da infraestrutura subjacente. Por exemplo, com o GKE, é possível gerenciar os nós do cluster. A maioria das operações de gerenciamento pode ser automatizada, mas ainda é algo que você precisa considerar ao planejar o esforço necessário para manter o ambiente. Se você precisa de um ambiente de contêiner totalmente gerenciado para executar cargas de trabalho, recomendamos escolher uma opção diferente.
  6. Requisitos para usar o serviço. Para implantar as cargas de trabalho nos clusters do GKE ou do Anthos, coloque-os em contêineres.
  7. Persistência de dados. O GKE e o Anthos podem executar aplicativos com estado e armazenamento em disco permanente.
  8. Modelo de preços e custos. O GKE cobra uma taxa de gerenciamento de clusters, além dos recursos que seus nós de cluster usam. Os clusters do Anthos estão incluídos na assinatura do Anthos.
  9. Proteção futura. Os clusters do GKE e do Anthos têm os recursos para executar processos complexos de implantação.
  10. Integração com outros serviços. As cargas de trabalho implantadas nos clusters do GKE e do Anthos poderão ter acesso a outros serviços do Google Cloud se você configurar os sistemas de conectividade, autenticação e autorização necessários.
  11. Bloqueio. Depois da conteinerização das cargas de trabalho para executá-las nos clusters do GKE ou do Anthos, é possível transferi-las para outros ambientes com pequenos ajustes. O Kubernetes é uma plataforma portátil e não bloqueia você no ambiente de fornecedores.
  12. Segurança. O GKE oferece várias maneiras de proteger os nós, o plano de controle e as cargas de trabalho:

Para mais informações, consulte a visão geral de segurança do GKE.

Para mais informações sobre como migrar para os clusters do GKE e do Anthos, consulte Como migrar contêineres para o Google Cloud: migração do Kubernetes para o GKE e Como migrar contêineres para o Google Cloud: migração do OpenShift para o Anthos.

Compute Engine

O Compute Engine permite criar e executar VMs na infraestrutura do Google.

Embora seja possível executar contêineres em VMs do Compute Engine, recomendamos que você escolha um dos outros ambientes de contêiner para executar cargas de trabalho descritas neste documento. O esforço necessário para operar um ambiente autogerenciado em execução no Compute Engine supera significativamente os benefícios recebidos.

No entanto, se você optar por executar contêineres nas VMs do Compute Engine, use a lista a seguir para avaliar o Compute Engine com base nos critérios estabelecidos anteriormente:

  1. Desempenho. As VMs do Compute Engine não têm um ambiente de execução de contêiner pré-instalado. Portanto, escolha a que melhor atenda aos seus requisitos.
  2. Dimensionamento. O Compute Engine usa grupos de instâncias gerenciadas para escalonar automaticamente instâncias de VM. Ao configurar os mecanismos de escalonamento automático de um grupo de instâncias gerenciadas, defina os sinais de escalonamento automático que o Compute Engine usa para escalonar ou desativar o grupo de instâncias gerenciadas.
  3. Nível de controle e flexibilidade. É possível personalizar cada aspecto do provisionamento e configuração de cada VM do Compute Engine, desde que você siga as cotas de recursos do Compute Engine.
  4. Confiabilidade. É possível monitorar as VMs do Compute Engine com o Cloud Monitoring, o Cloud Logging e os registros de auditoria do Cloud para que você tenha uma cobertura completa sobre o monitoramento e os registros de desempenho. O Compute Engine também usa grupos de instâncias gerenciadas, verificação de integridade da instância e recuperação automática.
  5. Sobrecarga de gerenciamento. As VMs do Compute são autogerenciadas. Portanto, planeje um esforço operacional considerável para gerenciar o ambiente de maneira eficaz.
  6. Requisitos para usar o serviço. Contanto que suas cargas de trabalho sejam executadas em um dos sistemas operacionais compatíveis, é possível executá-las em VMs do Compute Engine. Para mais informações sobre as limitações do Compute Engine, consulte Problemas conhecidos do Compute Engine.
  7. Persistência de dados. O Compute Engine tem opções diferentes para persistência de dados, como discos permanentes zonais, discos permanentes regionais e unidades de estado sólido locais.
  8. Modelo de preços e custos. O Compute Engine cobra pelos recursos que suas cargas de trabalho precisam.
  9. Proteção futura. É possível instalar qualquer ferramenta de integração, implantação, provisionamento ou configuração nas VMs do Compute Engine para os processos de implantação.
  10. Integração com outros serviços. As cargas de trabalho implantadas no Compute Engine podem ter acesso a outros serviços do Google Cloud se você configurar os sistemas de conectividade, autenticação e autorização necessários.
  11. Bloqueio. Ao usar o Compute Engine, você não fica preso a nenhum produto ou serviço proprietário. É possível criar suas próprias imagens do sistema operacional para que os processos de provisionamento e configuração sejam automatizados e portáteis.
  12. Segurança. O Compute Engine ajuda a melhorar a segurança do ambiente:

Para mais informações, consulte Como proteger o Google Cloud.

Como escolher a opção certa para seu ambiente de destino

Nas seções anteriores, você atribuiu um valor a todos os critérios de cada produto. Para calcular a pontuação total de cada ambiente de contêiner para executar cargas de trabalho, some todas as pontuações desse ambiente com base nos critérios. Por exemplo, se um ambiente marcou 10 no critério de desempenho e 6 no critério de escalonabilidade, a pontuação total desse ambiente será 16.

Também é possível atribuir pesos diferentes à pontuação de acordo com cada critério, para representar a importância de cada um para a avaliação. Por exemplo, se o desempenho for mais importante que a escalonabilidade na avaliação, defina multiplicadores que reflitam isso: um multiplicador de 1,0 para o desempenho e um multiplicador de 0,7 para escalonabilidade. Depois, use esses multiplicadores para calcular a pontuação total de uma opção.

Depois de calcular a pontuação total de cada ambiente que você avaliou, organize os ambientes pela pontuação total, em ordem decrescente. Em seguida, escolha a opção que tenha a maior pontuação como o ambiente de sua preferência.

Há várias maneiras de representar esses dados. Por exemplo, é possível visualizar os resultados com um gráfico adequado para representar dados multivariáveis, como um gráfico de radar.

A seguir