Este documento ajuda você a planejar, projetar e implementar a migração de um ambiente autogerenciado do Kubernetes para o Google Kubernetes Engine (GKE). Se feita incorretamente, a migração de aplicativos de um ambiente para outro pode ser uma tarefa desafiadora. Portanto, você precisa planejar e executar 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: 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:
- Migrar contêineres para o Google Cloud: como migrar o Kubernetes para o GKE (este documento)
- Migrar contêineres para o Google Cloud: migrar do OpenShift para o GKE Enterprise
Este documento é útil se você planeja migrar de um ambiente autogerenciado do Kubernetes para o GKE. É possível que seu ambiente seja executado localmente, em um ambiente de hospedagem particular ou em outro provedor de nuvem. Este documento também é útil se você estiver avaliando a oportunidade de migrar e quiser saber como funciona esse processo.
Ao usar o GKE, você tem os seguintes benefícios:
- Não é preciso gerenciar nós do plano de controle (mestre).
- É possível usar a experiência do Google para segurança, rede, upgrades do Kubernetes e provisionamento automático de nós.
- É possível escalonar automaticamente os clusters adicionando nós ou ajustando os limites de solicitação de CPU e memória para pods.
No diagrama a seguir, veja o caminho da sua jornada de migração.
Durante cada etapa da migração, siga as fases definidas em Migrar para o Google Cloud: primeiros passos:
- Como avaliar e descobrir as cargas de trabalho.
- Como planejar e criar uma base.
- Como implantar suas cargas de trabalho.
- Como otimizar seu ambiente.
Avaliar o ambiente
Na fase de avaliação, você determina os requisitos e as dependências para migrar o ambiente autogerenciado do Kubernetes para o GKE:
- Crie um inventário abrangente dos seus aplicativos.
- Catalogue seus apps de acordo com as propriedades e dependências deles.
- Treine e instrua suas equipes no Google Cloud.
- Crie um experimento e uma prova de conceito no Google Cloud.
- Calcule o custo total de propriedade (TCO) do ambiente de destino.
- Escolha as cargas de trabalho que você quer migrar primeiro.
As seções a seguir dependem de Migrar para o Google Cloud: avaliar e descobrir as cargas de trabalho.
Criar seus inventários
Para definir o escopo da migração, você precisa entender o ambiente atual do Kubernetes. Primeiro, você coleta informações sobre os clusters e, em seguida, concentra-se nas cargas de trabalho implantadas nesses clusters e nas dependências delas. No final da fase de avaliação, você tem dois inventários: um para os clusters e outro para as cargas de trabalho implantadas nesses clusters.
Para criar o inventário dos clusters, considere o seguinte para cada cluster:
- Número e tipo de nós. Quando você sabe a quantidade de nós e as características de cada nó no ambiente atual, você dimensiona os clusters ao migrar para o GKE. Os nós no novo ambiente são executados em uma geração de arquitetura de hardware diferente daquelas que você usa no ambiente. O desempenho de cada geração de arquitetura é diferente. Portanto, o número de nós necessários no novo ambiente pode ser diferente do ambiente. Avalie qualquer tipo de hardware que você esteja usando nos nós, como dispositivos de armazenamento de alto desempenho, GPUs e TPUs.
- Cluster interno ou externo. Avalie a quais agentes, internos ou externos, cada cluster está exposto. Para oferecer suporte aos casos de uso, essa avaliação inclui as cargas de trabalho em execução no cluster e as interfaces que interagem com os clusters.
- Multilocação Se você estiver gerenciando clusters multilocatários no seu ambiente, avalie se ele funciona no novo ambiente do Google Cloud. Agora é um bom momento para avaliar como melhorar seus clusters multilocatários porque sua estratégia multilocatário influencia a forma como você cria sua base no Google Cloud.
- Versão do Kubernetes Colete informações sobre a versão do Kubernetes dos clusters para avaliar se há incompatibilidade entre essas versões e as disponíveis no GKE. Se você estiver executando uma versão mais antiga ou lançada recentemente, talvez esteja usando recursos indisponíveis no GKE. Talvez os recursos estejam obsoletos ou a versão do Kubernetes que os envia ainda não esteja disponível no GKE.
- Ciclo de upgrade do Kubernetes. Para manter um ambiente confiável, entenda como você está lidando com upgrades do Kubernetes e como seu ciclo de upgrade está relacionado aos upgrades do GKE.
- Pools de nós. Se você estiver usando qualquer forma de agrupamento de nós, considere como esses agrupamentos são mapeados para o conceito de pools de nós no GKE porque seus critérios de agrupamento talvez não sejam adequados para o GKE.
- Inicialização do nó. Avalie como inicializar cada nó antes de marcá-lo como disponível para executar suas cargas de trabalho. Assim, é possível transferir esses procedimentos de inicialização para o GKE.
Os itens a seguir que você avalia no seu inventário concentram-se na segurança da infraestrutura e dos clusters do Kubernetes:
- Namespaces: Se você usa namespaces do Kubernetes nos clusters para separar recursos logicamente, avalie quais recursos estão em cada namespace e entenda por que você criou essa separação. Por exemplo, é possível usar namespaces como parte da sua estratégia de multilocação. Talvez você tenha cargas de trabalho implantadas em namespaces reservados para componentes do sistema do Kubernetes e talvez não tenha tanto controle no GKE.
- Controle de acesso baseado em papéis (RBAC) Se você usa a autorização RBAC nos clusters, liste uma descrição de todos os ClusterRoles e ClusterRoleBindings configurados nos clusters.
- Políticas de rede: Liste todas as políticas de rede configuradas nos clusters e entenda como as políticas de rede funcionam no GKE.
- Contextos de segurança do pod. Colete informações sobre os Contextos de segurança do pod que você configurou nos clusters e saiba como eles funcionam no GKE.
- Contas de serviço. Se algum processo no cluster estiver interagindo com o servidor da API Kubernetes, colete informações sobre as contas de serviço que estão sendo usadas.
Depois de concluir o inventário de clusters do Kubernetes e avaliar a segurança do ambiente, crie o inventário das cargas de trabalho implantadas nesses clusters. Ao avaliar suas cargas de trabalho, colete informações sobre os seguintes aspectos:
- Pods e controladores. Para dimensionar os clusters no novo ambiente, avalie quantas instâncias de cada carga de trabalho você implantou e se está usando cotas de recursos, e calcule os limites de consumo de recursos. Reúna informações sobre as cargas de trabalho em execução nos nós do plano de controle de cada cluster e os controladores que cada carga de trabalho usa. Por exemplo, quantas implantações você está usando? Quantos DaemonSets você está usando?
- Jobs e CronJobs. Os clusters e as cargas de trabalho podem precisar executar jobs ou cron jobs como parte dos procedimentos de inicialização ou operação. Avalie quantas instâncias de Jobs e CronJobs você implantou e as responsabilidades e critérios de conclusão de cada instância.
- Escalonadores automáticos do Kubernetes. Para migrar as políticas de escalonamento automático no novo ambiente, saiba como o escalonador automático horizontal de pods, o Autoescalonador de Pods Vertical e o escalonador automático de pod multidimensional funciona no GKE.
- Cargas de trabalho sem estado e com estado. As cargas de trabalho sem estado não armazenam dados ou estado no cluster nem no armazenamento permanente. Os aplicativos com estado salvam dados para uso posterior. Para cada carga de trabalho, avalie quais componentes são sem estado e quais são com estado, tendo em vista que migrar cargas de trabalho com estado normalmente é mais difícil do que migrar sem estado.
- Recursos do Kubernetes. No inventário do cluster, você sabe qual versão do Kubernetes cada cluster executa. Revise as Notas de lançamento de cada versão do Kubernetes para saber quais recursos são enviados e quais recursos estão obsoletos. Em seguida, avalie suas cargas de trabalho em relação aos recursos do Kubernetes necessários. A meta desta tarefa é saber se você está usando recursos obsoletos ou que ainda não estão disponíveis no GKE. Se você encontrar recursos indisponíveis, migre dos recursos obsoletos e adote os novos quando eles estiverem disponíveis no GKE.
- Storage. Para cargas de trabalho com estado, avalie se elas usam PersistenceVolumeClaims. Liste todos os requisitos de armazenamento, como tamanho e modo de acesso, e como esses PersistenceVolumeClaims são mapeados para PersistenceVolumes. Para contabilizar o crescimento futuro, avalie se você precisa expandir qualquer PersistenceVolumeClaim.
- Configuração e injeção de segredo. Para evitar a recriação dos artefatos implantáveis sempre que houver uma alteração na configuração do ambiente, injete a configuração e os segredos nos pods usando ConfigMaps e Secrets. Para cada carga de trabalho, avalie quais ConfigMaps e Secrets a carga de trabalho está usando e como você está preenchendo esses objetos.
- Dependências Suas cargas de trabalho provavelmente não funcionam isoladamente. Talvez elas tenham dependências internas ao cluster ou dependências de sistemas externos. Colete as dependências para cada carga de trabalho e se as cargas de trabalho tiverem tolerância quando as dependências estiverem indisponíveis. Por exemplo, dependências comuns incluem sistemas de arquivos distribuídos, bancos de dados, plataformas de distribuição secretas, sistemas de gerenciamento de identidade e acesso, mecanismos de descoberta de serviços e outros sistemas externos.
- Serviços do Kubernetes Para expor suas cargas de trabalho a clientes internos e externos, use Serviços. Para cada serviço, você precisa saber o tipo. Para serviços expostos externamente, avalie como esses serviços interagem com o restante da sua infraestrutura. Por exemplo, como sua infraestrutura é compatível com serviços LoadBalancer e objetos de Entrada? Quais controladores de Entrada você implantou nos clusters?
- Service mesh. Se você estiver usando uma malha de serviço no ambiente, avalie como ela é configurada. Você também precisa saber quantos clusters ela abrange, quais serviços fazem parte da malha e como modificar a topologia da malha. Por exemplo, você está usando uma injeção automática de arquivo secundário para adicionar arquivos secundários automaticamente aos pods do Kubernetes?
- Taints e tolerâncias e afinidade e antiafinidade. Para cada pod e nó, avalie se você configurou taints, tolerâncias ou afinidades de nós para personalizar a programação de pods nos clusters do Kubernetes. Essas propriedades também fornecem insights sobre possíveis configurações não homogêneas de nós ou pods e podem fazer com que os pods, os nós ou ambos precisem ser avaliados com foco e cuidado especiais. Por exemplo, se você configurou um conjunto específico de pods para ser programado apenas em determinados nós no cluster do Kubernetes, isso pode significar que os pods precisam de recursos especializados disponíveis apenas nesses nós.
Depois de avaliar os clusters e as cargas de trabalho, avalie o restante dos serviços e aspectos de suporte na infraestrutura, como os seguintes:
- StorageClasses e PersistentVolumes. Avalie como sua infraestrutura faz backup de PersistentVolumeClaims listando StorageClasses para provisionamento dinâmico e PersistentVolumes provisionados estaticamente. Para cada PersistentVolume, considere os seguintes itens: capacidade, modo de volume, modo de acesso, classe, política de reivindicação, opções de ativação e afinidade de nó.
- VolumeSnapshots e VolumeSnapshotContents. Para cada PersistentVolume, avalie se você configurou algum VolumeSnapshot, e se precisa migrar algum VolumeSnapshotContents existente.
- Drivers da interface de armazenamento em contêineres (CSI, na sigla em inglês) Se implantados nos clusters, avalie se esses drivers são compatíveis com o GKE e se é necessário adaptar a configuração dos volumes para trabalhar com drivers CSI compatíveis com o GKE
- Armazenamento de dados. Se você depender de sistemas externos para provisionar PersistentVolumes, forneça uma maneira para as cargas de trabalho no ambiente do GKE usarem esses sistemas. A localidade dos dados afeta o desempenho das cargas de trabalho com estado porque a latência entre os sistemas externos e o ambiente do GKE é proporcional à distância entre eles. Para cada sistema de armazenamento de dados externo, considere o tipo, como volumes de blocos, armazenamento de arquivos ou armazenamento de objetos, e quaisquer requisitos de desempenho e disponibilidade que precisam ser cumpridos.
- Geração de registros, monitoramento e rastreamento. Colete informações sobre seus sistemas de monitoramento, geração de registros e rastreamento. É possível integrar seus sistemas ao Google Cloud Observability ou usar o Google Cloud Observability como sua única ferramenta de monitoramento, registro e rastreamento. Por exemplo, é possível integrar o Google Cloud Observability a outros serviços, configurar interfaces de geração de registros para suas linguagens de programação preferidas e usar o agente do Cloud Logging nas VMs. O GKE é integrado ao Google Cloud Observability e aos Registros de auditoria do Cloud. Você também pode Personalize o Fluent Bit para registros do Google Kubernetes Engine e processar registros em grande escala com o Dataflow.
- Recursos personalizados e complementos do Kubernetes. Colete informações sobre os recursos personalizados do Kubernetes e os complementos do Kubernetes implantados nos clusters porque eles podem não funcionar no GKE ou talvez seja necessário modificá-los. Por exemplo, se um recurso personalizado interagir com um sistema externo, será necessário avaliar se isso é aplicável ao seu ambiente do Google Cloud.
Concluir a avaliação
Depois de criar os inventários relacionados aos clusters e às cargas de trabalho do Kubernetes, conclua as outras atividades da fase de avaliação em Migrar para o Google Cloud: avaliar e descobrir suas cargas de trabalho.
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:
- Crie uma hierarquia de recursos.
- Configurar o gerenciamento de identidade e acesso.
- Configurar o faturamento.
- Configurar a conectividade de rede.
- Aumente sua segurança.
- Configure o monitoramento e os alertas.
Se você já adotou a infraestrutura como código para gerenciar as cargas de trabalho no ambiente do Kubernetes, aplique o mesmo processo ao ambiente do Google Cloud. Você analisa os descritores do Kubernetes porque alguns recursos do Google Cloud que o GKE provisiona automaticamente são configuráveis usando rótulos e anotações do Kubernetes. Por exemplo, é possível provisionar um balanceador de carga interno em vez de um externo adicionando uma anotação a um serviço LoadBalancer.
As seções a seguir dependem de Migrar para o Google Cloud: criar sua base.
Criar uma hierarquia de recursos
Para projetar uma hierarquia de recursos eficiente, considere como suas estruturas empresariais e organizacionais são mapeadas para o Google Cloud, conforme detalhado em Migrar para o Google Cloud: criar sua base.
Por exemplo, caso precise de um ambiente multilocatário no GKE, é possível escolher entre as seguintes opções:
- Criação de um projeto do Google Cloud para cada locatário.
- Compartilhamento de um projeto entre locatários diferentes e provisionamento de vários clusters do GKE.
- Uso de namespaces do Kubernetes.
Sua escolha depende das suas necessidades de isolamento, complexidade e escalabilidade. Por exemplo, um projeto por locatário faz com que os locatários sejam isolados, mas o gerenciamento da hierarquia de recursos se torna mais complexo devido ao grande número de projetos. No entanto, embora o gerenciamento de namespaces do Kubernetes seja relativamente mais fácil do que uma hierarquia de recursos complexa, essa opção não garante tanto isolamento. Por exemplo, o plano de controle pode ser compartilhado entre os locatários.
Configure o gerenciamento de identidade e acesso
O gerenciamento de identidade e acesso fornece as ferramentas para configurar centralmente o controle de acesso detalhado aos recursos da nuvem. Para mais informações, consulte Identity and Access Management.
Analise como o RBAC do Kubernetes interage com o gerenciamento de identidade e acesso no Google Cloud e configure o RBAC de acordo com os requisitos coletados na fase de avaliação.
Configure o faturamento
Antes de provisionar recursos do Google Cloud, configure o Faturamento do Cloud e entenda o modelo de preços do GKE. Veja mais informações em Faturamento.
Configurar a conectividade de rede
A configuração de rede é um aspecto fundamental do seu ambiente. Avalie o modelo de rede do GKE e os requisitos de conectividade das suas cargas de trabalho. Em seguida, é possível começar a planejar sua configuração de rede. Para mais informações, consulte conectividade e rede.
Proteger sua segurança
Entender as diferenças entre o modelo de segurança do ambiente e o modelo do Google Cloud e como aumentar a segurança dos clusters do GKE é essencial para proteger os recursos críticos. Para mais informações, consulte Segurança.
Configurar o monitoramento e os alertas
Ter uma visão clara do desempenho da infraestrutura e das cargas de trabalho é fundamental para encontrar áreas de melhoria. O GKE tem integrações avançadas com o Google Cloud Observability. Assim, você recebe informações de registro e monitoramento sobre clusters e cargas de trabalho do GKE dentro desses clusters. Para mais informações, consulte monitoramento e alertas.
Implantar suas cargas de trabalho
Na fase de implantação, faça o seguinte:
- Provisione e configure o ambiente do GKE.
- Configure os clusters do GKE.
- Migre dados do seu ambiente de origem para o Google Cloud.
- Implante as cargas de trabalho no ambiente do GKE.
- Valide suas cargas de trabalho.
- Exponha cargas de trabalho em execução no GKE.
- Desloque o tráfego do ambiente de origem para o ambiente do GKE.
- Desativar o ambiente de origem.
Provisionar e configurar a plataforma e os ambientes de execução
Antes de migrar qualquer carga de trabalho para o novo ambiente do Google Cloud, você precisa provisionar os clusters do GKE.
Após a fase de avaliação, você tem conhecimento suficiente para provisionar os clusters do GKE no novo ambiente do Google Cloud para atender às suas necessidades. É possível provisionar o seguinte:
- O número de clusters, o número de nós por cluster, os tipos de clusters, a configuração de cada cluster e cada nó e os planos de escalonabilidade de cada cluster.
- O modo de operação de cada cluster. O GKE oferece dois modos de operação para clusters: GKE Autopilot e GKE Standard.
- O número de clusters particulares.
- A escolha entre rede nativa de VPC ou baseada em roteador.
- As versões do Kubernetes e os canais de lançamento necessários nos clusters do GKE.
- Os pools de nós para agrupar logicamente os nós nos clusters do GKE e caso seja necessário criar pools de nós automaticamente com o provisionamento automático de nós.
- Os procedimentos de inicialização que é possível transferir do seu ambiente para o ambiente do GKE e novos procedimentos que podem ser implementados. Por exemplo, é possível inicializar automaticamente os nós do GKE implementando um ou vários procedimentos de inicialização com privilégios para cada nó ou pool de nós nos clusters.
- Os planos de escalonabilidade para cada cluster
- Os recursos adicionais do GKE necessários, como o Cloud Service Mesh e os complementos do GKE, como o Backup para GKE.
Para mais informações sobre o provisionamento de clusters do GKE, consulte:
- Sobre as opções de configuração de clusters.
- Crie diferentes tipos de clusters do GKE.
- Gerencie, configure e implante clusters do GKE.
- Noções básicas sobre a segurança do GKE.
- Aumente a segurança do cluster.
Configurar os clusters
Depois de provisionar os clusters do GKE e antes de implantar qualquer carga de trabalho ou migrar dados, configure namespaces, RBAC, políticas de rede, Cotas de recursos, e outros objetos do Kubernetes e do GKE para cada cluster do GKE.
Para configurar objetos do Kubernetes e do GKE nos clusters do GKE, recomendamos que você faça o seguinte:
- Verifique se você tem as credenciais e permissões necessárias para acessar os clusters no ambiente de origem e no GKE.
- Avalie se os objetos nos clusters do Kubernetes no ambiente de origem são compatíveis com o GKE e como as implementações que respaldam esses objetos são diferentes do ambiente de origem e do GKE.
- Refatore qualquer objeto incompatível para torná-lo compatível com o GKE ou desative-o.
- Migre esses objetos para os clusters do GKE.
- Configure todos os objetos adicionais necessários nos clusters do GKE.
Migrar a configuração do cluster
Para migrar a configuração dos clusters do Kubernetes do ambiente de origem para os clusters do GKE, use a seguinte abordagem:
Se você adotou processos de infraestrutura como código para configurar objetos nos clusters do Kubernetes no seu ambiente de origem, é possível:
- Migre objetos compatíveis com o GKE apenas com pequenas alterações de metadados, como nomes de objetos, local ou namespace, usando ferramentas do Kubernetes (kubectl) ou serviços gerenciados (Config Sync) do Google Analytics.
- Refatore ou desative objetos que não são compatíveis com o GKE.
Se você não adotou os processos de infraestrutura como código, pode:
Migrar dados
Para migrar dados de suas cargas de trabalho com estado do ambiente de origem para o ambiente do GKE, recomendamos que você projete um plano de migração de dados seguindo as orientações em Migrar para o Google Cloud: transferir grandes conjuntos de dados.
Você provisiona toda a infraestrutura de armazenamento necessária antes de mover seus dados. Se você estiver usando provisionadores do StorageClass, configure-os nos novos clusters.
Para mais informações sobre as opções de armazenamento de dados disponíveis no GKE, consulte configuração de armazenamento. Por exemplo, é possível usar discos permanentes do Compute Engine, zonais ou replicados em uma região, ou usar o Filestore.
Depois de provisionar as StorageClasses, todos os PersistentVolumes necessários para armazenar os dados a serem migrados são provisionados. Em seguida, migre os dados do ambiente de origem para esses PersistentVolumes. As especificidades dessa migração de dados dependem das características do ambiente de origem. Por exemplo:
- Provisione uma instância do Compute Engine.
- Anexe um disco permanente à instância do Compute Engine.
- Copie os dados do ambiente de origem para o disco permanente.
- Encerre a instância do Compute Engine.
- Desanexe o disco permanente da instância do Compute Engine.
- Configure o disco permanente como um PersistentVolume do GKE.
- Desative a instância do Compute Engine.
Para mais informações sobre o uso de discos permanentes do Compute Engine como PersistentVolumes do GKE, consulte Como usar discos permanentes preexistentes como PersistentVolumes.
Implantar suas cargas de trabalho
Para implantar suas cargas de trabalho, recomendamos uma das seguintes abordagens:
- Implemente um processo de implantação no Google Cloud.
- Refatore os processos para implantar cargas de trabalho no ambiente do GKE.
A fase de implantação também é uma chance de modernizar seus processos de implantação e cargas de trabalho. Por exemplo, se você estiver usando pods no ambiente, considere migrar essas cargas de trabalho para Implantações.
Para mais informações sobre a refatoração dos processos de implantação, consulte Migrar para o Google Cloud: migrar de implantações manuais para contêineres e automação. Ele guia contém orientações para migrar de implantações manuais para ferramentas de automação e orquestração de contêineres.
Quando os processos de implantação estiverem prontos, implante as cargas de trabalho no GKE.
Implementar um processo de implantação no Google Cloud
Para implementar os processos de implantação no Google Cloud, use a escalonabilidade, as operações gerenciadas e a segurança por design nos produtos do Google Cloud.
Para mais informações sobre como implementar os processos de implantação no Google Cloud, consulte:
- Migrar para o Google Cloud: implantar suas cargas de trabalho
- Visão geral do Cloud Build
- Armazenar artefatos de versão no Artifact Registry
- Visão geral do Cloud Deploy
Refatorar os processos de implantação
Embora não seja estritamente necessário para um resultado bem-sucedido, você também pode refatorar os processos de implantação durante a migração. Por exemplo, é possível modernizar e automatizar os processos de implantação e implementá-los no Google Cloud.
A migração dos processos de implantação para o Google Cloud ao mesmo tempo que a migração de cargas de trabalho pode ser complexa e aumentar o risco de falha. Para migrações particularmente complexas, considere também migrar o processo de implantação pela segunda vez e continuar usando os atuais para implantar cargas de trabalho no ambiente do GKE. Essa abordagem ajuda a reduzir a complexidade da migração. Ao continuar usando os processos de implantação atuais, você pode simplificar o processo de migração.
Validar suas cargas de trabalho
Depois de implantar cargas de trabalho no ambiente do GKE, mas antes de expô-las aos usuários, recomendamos que você realize testes e validação abrangentes. Esse teste pode ajudar a verificar se as cargas de trabalho estão se comportando conforme o esperado. Por exemplo, você pode fazer o seguinte:
- Realizar testes de integração, teste de carga, teste de conformidade, teste de confiabilidade e outros procedimentos de verificação que ajudam a garantir que suas cargas de trabalho estejam funcionando dentro dos parâmetros esperados e de acordo com as especificações deles.
- Examinar registros, métricas e relatórios de erros no Google Cloud Observability para identificar possíveis problemas e identificar tendências para antecipá-los.
Para mais informações sobre a validação da carga de trabalho, consulte Como testar a confiabilidade.
Expor as cargas de trabalho
Depois de concluir o teste de validação das cargas de trabalho em execução no ambiente do GKE, exponha suas cargas de trabalho para torná-las acessíveis.
Para expor cargas de trabalho em execução no ambiente do GKE, use os serviços do Kubernetes e uma malha de serviço.
Para mais informações sobre como o GKE é compatível com os serviços do Kubernetes, consulte Serviços.
Para mais informações sobre como expor cargas de trabalho em execução no GKE, consulte:
- Expor aplicativos usando serviços
- Sobre o Gateway
- Ingress do GKE para balanceadores de carga de aplicativo externos
- Da borda à malha: expor aplicativos de malha de serviço pela da Entrada do GKE
Transferir o tráfego para seu ambiente do Google Cloud
Depois de verificar se as cargas de trabalho estão em execução no ambiente do GKE e depois de expô-las aos clientes, você transfere o tráfego do ambiente de origem para o ambiente do GKE. Para evitar migrações em grande escala e todos os riscos relacionados, recomendamos transferir gradualmente o tráfego do ambiente de origem para o GKE.
Dependendo de como você criou o ambiente do GKE, há várias opções para implementar um mecanismo de balanceamento de carga que transfira gradualmente o tráfego do ambiente de origem para o ambiente de destino. Por exemplo, é possível implementar uma política de resolução de DNS que resolva registros DNS de acordo com alguma política para resolver uma determinada porcentagem de solicitações para endereços IP pertencentes ao ambiente do GKE. Também é possível implementar um mecanismo de balanceamento de carga usando endereços IP virtuais e balanceadores de carga de rede.
Depois de começar a transferir gradualmente o tráfego para o ambiente do GKE, recomendamos que você monitore o comportamento das cargas de trabalho à medida que as cargas aumentam.
Por fim, você realizará uma substituição, que acontece ao transferir todo o tráfego do ambiente de origem para o ambiente do GKE.
Para mais informações sobre balanceamento de carga, consulte Balanceamento de carga no front-end.
Desative o ambiente de origem
Depois que as cargas de trabalho no ambiente do GKE estiverem exibindo as solicitações corretamente, desative o ambiente de origem.
Antes de começar a desativar recursos no ambiente de origem, recomendamos que você faça o seguinte:
- Faça backup dos dados para ajudar a restaurar os recursos no ambiente de origem.
- Notifique os usuários antes de desativar o ambiente.
Para desativar o ambiente de origem, faça o seguinte:
- Desative as cargas de trabalho em execução nos clusters do ambiente de origem.
- Exclua os clusters no ambiente de origem.
- Exclua os recursos associados a esses clusters, como grupos de segurança, balanceadores de carga e redes virtuais.
Para evitar a saída de recursos órfãos, a ordem em que os recursos são desativados no ambiente de origem é importante. Por exemplo, determinados provedores exigem a desativação dos serviços do Kubernetes que levem à criação de balanceadores de carga antes de poderem desativar as redes virtuais que contêm esses balanceadores de carga.
Otimizar o ambiente
A otimização é a última fase da migração. Nesta fase, você torna seu ambiente mais eficiente do que antes. Nesta fase, você executa várias iterações de um loop repetível até que o ambiente atenda aos requisitos de otimização. As etapas desse loop repetível são as seguintes:
- Avaliação do ambiente, das equipes e do ciclo de otimização atuais.
- Estabelecimento dos seus requisitos e metas de otimização.
- Otimização do seu ambiente e das suas equipes.
- Ajuste do loop de otimização.
As seções a seguir dependem de Migrar para o Google Cloud: otimize seu ambiente.
Avaliar o ambiente, as equipes e o ciclo de otimização atuais
Embora a primeira avaliação se concentre na migração do seu ambiente para o GKE, essa avaliação é personalizada para a fase de otimização.
Estabelecer seus requisitos de otimização
Revise os seguintes requisitos de otimização para seu ambiente do GKE:
- Implemente processos avançados de implantação. Processos como implantações canário ou implantações azul-verde oferecem mais flexibilidade e aumentam a confiabilidade do ambiente, estendendo os testes e reduzindo o impacto de qualquer problema para os usuários.
- Configure uma malha de serviço Ao apresentar uma malha de serviço ao seu ambiente, você usa alguns recursos para seus serviços, como observabilidade, gerenciamento de tráfego e autenticação recíproca, e reduz o esforço das equipes de DevOps. É possível implantar uma malha de serviço de vários clusters para segmentar melhor suas cargas de trabalho ou uma malha de serviço expandida para oferecer suporte à migração para o novo ambiente.
- Configure o escalonamento automático. Você tem diferentes opções complementares para escalonar automaticamente seu ambiente do GKE. É possível escalonar automaticamente os clusters e as cargas de trabalho dentro de cada cluster. Ao configurar o escalonador automático de cluster, é possível redimensionar automaticamente um cluster do GKE com base nas demandas das cargas de trabalho, adicionando ou removendo nós de trabalho no cluster. Se você quiser escalonar automaticamente suas cargas de trabalho, ajuste as solicitações e os limites de consumo da CPU e da memória com o escalonador automático do pod vertical. Ao usar o escalonador automático, não é necessário pensar nos valores a serem especificados para as solicitações de CPU e memória de cada contêiner. Também é possível exportar as métricas fornecidas pelo autoescalador para dimensionar cargas de trabalho do GKE corretamente.
- Reduza os custos com máquinas virtuais preemptivas (VMs). Se algumas das suas cargas de trabalho forem tolerantes a ambientes de execução sem garantias de disponibilidade, implante essas cargas de trabalho em um pool de nós composto de VMs preemptivas. As VMs preemptivas têm um preço menor do que as VMs padrão do Compute Engine. Assim, é possível reduzir os custos dos clusters.
- Integre o GKE a outros produtos. Alguns produtos do Google Cloud são integrados ao GKE para aumentar a segurança do seu ambiente. Por exemplo, é possível analisar contêineres em busca de vulnerabilidades ou usar imagens de base gerenciadas no Container Registry.
- Projete os clusters do GKE para serem fungíveis. Considerando os clusters como faturáveis e automatizando o provisionamento e a configuração, é possível simplificar e generalizar os processos operacionais para mantê-los e também simplificar futuras migrações e upgrades de cluster do GKE. Por exemplo, se você precisar fazer upgrade de um cluster do GKE para uma nova versão do GKE, será possível provisionar e configurar automaticamente um novo cluster atualizado, implantar cargas de trabalho automaticamente no novo cluster e desativar o cluster antigo e desatualizado do GKE.
Arquitetar um ambiente de vários clusters Ao implementar um ambiente de vários clusters no GKE, faça o seguinte
- Reduza as chances de introduzir pontos únicos de falha na sua arquitetura.
- Aproveite a maior flexibilidade da possibilidade de testar alterações de configuração em um subconjunto dos clusters do GKE.
- Distribua cargas de trabalho nos clusters do GKE.
Embora seja possível atender a alguns desses requisitos de otimização em um ambiente do Kubernetes, é mais fácil no GKE porque não é necessário perder tempo mantendo o cluster em execução. Em vez disso, é possível se concentrar na própria otimização.
Concluir a otimização
Depois de preencher a lista de requisitos de otimização, conclua o restante das atividades da fase de otimização.
A seguir
- Leia sobre como começar a migração para o Google Cloud.
- Entenda como aumentar a segurança do cluster e leia a visão geral de segurança do GKE.
- Inicializar automaticamente os nós do GKE com o DaemonSets.
- Encontre ajuda para sua migração para o Google Cloud.
- Confira arquiteturas de referência, diagramas, tutoriais e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.