Este documento planeja e projeta um caminho de migração de implantações manuais para implantações automatizadas contentorizadas no Google Cloud usando ferramentas nativas da nuvem e serviços gerenciados do Google Cloud.
Este documento faz parte da série de várias partes a seguir sobre a migração para o Google Cloud:
- Migrar para o Google Cloud: primeiros passos
- Migrar para o Google Cloud: avalie e descubra suas cargas de trabalho
- Migrar para o Google Cloud: crie sua base
- Migrar para o Google Cloud: transferir grandes conjuntos de dados
- Migrar para o Google Cloud: implantar suas cargas de trabalho
- Migrar para o Google Cloud: migrar de implantações manuais para implantações automatizadas conteinerizadas (este documento)
- Migrar para o Google Cloud: otimize seu ambiente
- Migração para o Google Cloud: práticas recomendadas para validar um plano de migração
- Migre para o Google Cloud: reduza os custos
Este documento é útil se você planeja modernizar seus processos de implantação, se está migrando de processos manuais e legados para implantações automatizadas e contentorizadas ou se está avaliando a oportunidade de migrar e querem explorar a aparência.
Antes de iniciar essa migração, avalie o escopo da migração e o status dos processos de implantação atuais e defina suas expectativas e metas. Escolha o ponto de partida de acordo com a implantação atual das cargas de trabalho:
- As cargas de trabalho estão sendo implantadas manualmente.
- As cargas de trabalho estão sendo implantadas com ferramentas de gerenciamento de configuração (CM).
É difícil migrar de implantações manuais diretamente para implantações totalmente automatizadas e contentorizadas. Em vez disso, recomendamos os seguintes passos de migração:
Durante cada etapa da migração, siga as fases definidas em Migrar para o Google Cloud: primeiros passos:
- Avaliar e descobrir as cargas de trabalho
- Planejar e construir uma base
- Implante suas cargas de trabalho.
- Otimize o ambiente e as cargas de trabalho.
O diagrama a seguir ilustra as fases de migração de cada passo.
Esse caminho de migração é ideal, mas é possível interromper antes do processo de migração se os benefícios do próximo passo superarem os custos do seu caso específico. Por exemplo, se não planeja implantar automaticamente suas cargas de trabalho, é possível interromper depois da implantação usando ferramentas de orquestração de contêineres. É possível revisitar este documento no futuro, quando estiver pronto para continuar a jornada.
Ao avançar de um passo da migração para o próximo, há uma fase de transição em que você pode usar diferentes processos de implantação ao mesmo tempo. Na verdade, não é preciso escolher apenas uma opção de implantação para todas as suas cargas de trabalho. Por exemplo, é possível ter um ambiente híbrido em que gerencia sua infraestrutura aplicando o padrão de IaC, enquanto ainda implanta suas cargas de trabalho com ferramentas de orquestração de contêineres.
Migrar para as ferramentas de orquestração de contêineres
Um dos primeiros passos para migrar de implantações manuais é implantar suas cargas de trabalho com ferramentas de orquestração de contêineres. Neste passo, você criará e implementará um processo de implantação para processar cargas de trabalho em contêiner usando ferramentas de orquestração de contêineres, como o Kubernetes.
Se as cargas de trabalho ainda não estiverem contentorizadas, um esforço significativo será gasto para contentorizá-las. Nem todas as cargas de trabalho são adequadas para serem contentorizadas. Se estiver implantando uma carga de trabalho que não é pronta para a nuvem ou para contentorização, talvez não valha a pena contentorizar essas cargas de trabalho. Algumas cargas de trabalho não são compatíveis com contentorização por motivos técnicos ou de licenciamento.
Avaliar e descobrir as cargas de trabalho
Para definir o escopo da migração, primeiro é preciso um inventário dos artefatos que estão sendo produzidos e implantados com as dependências deles em outros sistemas e artefatos. Para criar esse inventário, é preciso usar a experiência das equipes que projetaram e implementaram seus processos atuais de produção e implantação de artefatos. O documento Migrar para o Google Cloud: avaliar e descobrir cargas de trabalho discute como avaliar o ambiente durante uma migração e como criar um inventário de de aplicativos.
Para cada artefato, é preciso avaliar a cobertura atual do teste. É preciso ter uma cobertura de teste adequada para todos os artefatos antes de passar para o próximo passo. Se for preciso testar e validar manualmente cada artefato, a automação não trará benefícios. Adote uma metodologia que destaque a importância dos testes, como o desenvolvimento orientado a testes.
Ao avaliar seus procedimentos, pense em quantas versões diferentes dos artefatos você pode ter em produção. Por exemplo, se a versão mais recente de um artefato for várias versões antes das instâncias compatíveis, será necessário projetar um modelo compatível com as duas versões.
Considere também a estratégia de ramificação usada para gerenciar sua codebase. Uma estratégia de ramificação é apenas parte de um modelo de colaboração que é preciso avaliar, além de avaliar os processos de colaboração mais amplos dentro e fora das suas equipes. Por exemplo, se você adotar uma estratégia de ramificação flexível, mas não a adaptar ao processo de comunicação, a eficiência dessas equipes poderá ser reduzida.
Nesta fase de avaliação, também é possível determinar como tornar os artefatos que está produzindo mais eficientes e adequados para a conteinerização do que os processos de implantação atuais. Uma maneira de melhorar a eficiência é avaliar o seguinte:
- Partes comuns: avaliar o que seus artefatos têm em comum. Por exemplo, se você tiver bibliotecas comuns e outras dependências de tempo de execução, pense em consolidá-las em um único ambiente de execução.
- Requisitos do ambiente de execução: avaliar se é possível simplificar os ambientes de execução para reduzir a variação. Por exemplo, se estiver usando diferentes ambientes de execução para executar todas as cargas de trabalho, considere começar a partir de uma base comum para reduzir a carga de manutenção.
- Componentes desnecessários: avaliar se os artefatos contêm partes desnecessárias. Por exemplo, é possível ter ferramentas utilitárias, como ferramentas de depuração e solução de problemas, que não são estritamente necessárias.
- Configuração e injeção secreta: avaliar como você está configurando seus artefatos de acordo com os requisitos do ambiente de execução. Por exemplo, seu sistema de injeção de configuração atual pode não ser compatível com um ambiente em contêiner.
- Requisitos de segurança: avaliar se o modelo de segurança do contêiner atende aos seus requisitos. Por exemplo, o modelo de segurança de um ambiente contentorizado pode entrar em conflito com o requisito de uma carga de trabalho para ter privilégios de superusuário, acesso direto aos recursos do sistema ou locatário único.
- Requisitos de lógica de implantação: avalie se você precisa implementar processos avançados de implantação. Por exemplo, se for preciso implementar um processo de implantação canário, é possível determinar se a ferramenta de orquestração de contêineres é compatível.
Planejar e construir uma base
Em seguida, provisione e configure a infraestrutura e os serviços do Google Cloud para dar suporte aos processos de implantação no Google Cloud. O documento Migrar para o Google Cloud: criar sua base contém orientações sobre como criar sua base.
Para ter a flexibilidade necessária para gerenciar os recursos do Google Cloud, recomendamos criar uma hierarquia de recursos do Google Cloud que ofereça suporte a vários ambientes, como desenvolvimento, teste e cargas de trabalho de produção.
Ao estabelecer identidades de usuário e serviço, para ter o melhor isolamento, é preciso ter pelo menos uma conta de serviço para cada passo do processo de implantação. Por exemplo, se o processo executar os passos para produzir o artefato e gerenciar o armazenamento desse artefato em um repositório, será preciso de pelo menos duas contas de serviço. Se quiser provisionar e configurar ambientes de desenvolvimento e teste para os processos de implantação, talvez seja preciso criar mais contas de serviço. Se tiver um conjunto distinto de contas de serviço por ambiente, os ambientes serão independentes entre si. Embora essa configuração aumente a complexidade da sua infraestrutura e sobrecarregue sua equipe de operações, ela oferece a flexibilidade de testar e validar cada alteração nos processos de implantação.
Também é preciso provisionar e configurar os serviços e a infraestrutura para oferecer suporte às suas cargas de trabalho em contêiner:
- Configure um registro para armazenar suas imagens de contêiner, como o Artifact Registry, e para isolar esse registro e as tarefas de manutenção relacionadas, configure-o em um projeto dedicado do Google Cloud.
- Provisione e configure os clusters do Kubernetes necessários para oferecer suporte às suas cargas de trabalho. Dependendo do ambiente atual e das metas, use serviços como o Google Kubernetes Engine (GKE) e o GKE Enterprise.
- Provisione e configure o armazenamento permanente para suas cargas de trabalho com estado. Para obter mais informações, consulte Visão geral do armazenamento do Google Kubernetes Engine.
Ao usar ferramentas de orquestração de contêineres, não é preciso se preocupar com o provisionamento da infraestrutura ao implantar novas cargas de trabalho. Por exemplo, é possível usar o Autopilot para gerenciar automaticamente a configuração do cluster do GKE.
Implantar os artefatos com ferramentas de orquestração de contêineres
Com base nos requisitos que você reuniu na fase de avaliação e na fase básica deste passo, faça o seguinte:
- Contentorize suas cargas de trabalho em um contêiner.
- Implemente procedimentos de implantação para processar suas cargas de trabalho contentorizadas.
A contentorização de cargas de trabalho não é uma tarefa comum. Consulte a seguir uma lista geral de atividades necessárias para adaptar e estender para contentorizar suas cargas de trabalho. Sua meta é atender às suas próprias necessidades, como gerenciamento de tráfego e rede, armazenamento permanente, injeção de secrets e configuração e requisitos de tolerância a falhas. Neste documento, abordamos duas atividades: criar um conjunto de imagens de contêineres para usar como base e criar um conjunto de imagens de contêiner para suas cargas de trabalho.
Primeiro, automatize a produção de artefatos para não precisar produzir manualmente uma nova imagem para cada nova implantação. O processo de criação do artefato precisa ser acionado automaticamente sempre que o código-fonte for modificado para que você tenha feedback imediato sobre cada alteração.
Siga os seguintes passos para produzir cada imagem:
- Crie a imagem.
- Execute o conjunto de testes.
- Armazene a imagem em um registro.
Por exemplo, é possível usar o Cloud Build para criar seus artefatos, executar os conjuntos de testes neles e, se os testes forem bem-sucedidos, armazenar os resultados no Container Registry. Para mais informações sobre como criar imagens de contêiner, consulte Práticas recomendadas para criar contêineres.
Também é preciso estabelecer regras e convenções para identificar seus artefatos. Ao produzir suas imagens, rotule cada uma delas para tornar cada execução dos processos repetível. Por exemplo, uma convenção estabelecida é identificar versões usando o controle de versão semântico em que você marca as imagens de contêiner ao produzir uma versão. Ao produzir imagens que ainda precisam ser trabalhadas antes do lançamento, é possível usar um identificador que as vincule ao ponto da base do código de quando ocorreu o processo de produção delas. Por exemplo, se você estiver usando repositórios Git, será possível usar o hash de confirmação como um identificador para a imagem do contêiner correspondente que você produziu quando enviou uma confirmação para a ramificação principal do repositório.
Durante a fase de avaliação deste passo, foram coletadas informações sobre seus artefatos, as partes comuns e os requisitos de ambiente de execução deles. Com essas informações, é possível projetar e criar um conjunto de imagens de contêineres de base e outro conjunto de imagens para suas cargas de trabalho. Use as imagens de base como ponto de partida para criar as imagens para suas cargas de trabalho. O conjunto de imagens de base precisa ser bem controlado e suportado para evitar a propagação de ambientes de execução incompatíveis.
Ao produzir imagens de contêineres a partir de imagens de base, lembre-se de estender seus conjuntos de testes para cobrir as imagens, não apenas as cargas de trabalho dentro de cada imagem. Use ferramentas como InSpec, ServerSpec e RSpec para executar conjuntos de testes de conformidade nos ambientes de execução.
Ao terminar de contentorizar as cargas de trabalho e implementar os procedimentos para produzir automaticamente essas imagens de contêineres, implemente os procedimentos de implantação para usar as ferramentas de orquestração de contêineres. Na fase de avaliação, use as informações sobre os requisitos de lógica de implantação que coletou para criar procedimentos de implantação avançados. Ao usar ferramentas de orquestração de contêineres, é possível se concentrar em compor a lógica de implantação usando os mecanismos fornecidos, em vez de precisar implementá-los manualmente.
Ao projetar e implementar os procedimentos de implantação, pense em como injetar arquivos de configuração e secrets nas cargas de trabalho e como gerenciar dados para cargas de trabalho com estado. Os arquivos de configuração e a injeção de secret são fundamentais para produzir artefatos imutáveis. Ao implantar artefatos imutáveis, é possível fazer o seguinte:
- Por exemplo, é possível implantar seus artefatos no ambiente de desenvolvimento. Em seguida, depois de testar e validá-los, mova-os para seu ambiente de controle de qualidade. Por fim, mova-os para o ambiente de produção.
- Assim, as chances de ter problemas nos seus ambientes de produção são reduzidas, porque o mesmo artefato passou por várias atividades de teste e validação.
Se as cargas de trabalho forem com estado, sugerimos provisionar e configurar o armazenamento permanente necessário para seus dados. No Google Cloud, há opções diferentes:
- Discos permanentes gerenciados com GKE
- Serviços de banco de dados totalmente gerenciados, como Cloud SQL, Firestore e Spanner
- Serviços de armazenamento de arquivos como o Filestore
- Serviços de armazenamento de objetos, como o Cloud Storage
Ao produzir automaticamente os artefatos para implantar, é possível configurar os ambientes de execução para as ferramentas usadas para implantar suas cargas de trabalho. Para controlar o ambiente de execução das ferramentas de implantação, configure o ambiente como uma compilação no Cloud Build e use-a como o único meio de implantar os artefatos nos ambientes. Ao usar o Cloud Build, não é preciso que cada operador configure um ambiente de execução nas máquinas. É possível auditar imediatamente o procedimento que cria o ambiente de execução e o conteúdo dele inspecionando o código-fonte da configuração de compilação.
Otimizar o ambiente
Depois de implementar o processo de implantação, é possível usar ferramentas de orquestração de contêineres para começar a otimizar os processos de implantação. Para mais informações, consulte Migrar para o Google Cloud: otimizar o ambiente.
Os requisitos dessa iteração de otimização são os seguintes:
- Estender o sistema de monitoramento conforme necessário.
- Estender a cobertura do teste.
- Aumentar a segurança do ambiente.
Estender o sistema de monitoramento para abranger a produção de artefatos, os procedimentos de implantação e todos os novos ambientes de execução.
Se quiser monitorar, automatizar e codificar seus processos o máximo possível, recomendamos aumentar a cobertura dos testes. Na fase de avaliação, você garantiu pelo menos uma cobertura de teste de ponta a ponta. Durante a fase de otimização, é possível expandir seus conjuntos de testes para abranger mais casos de uso.
Por fim, se quiser aumentar a segurança dos seus ambientes, configure a autorização binária para permitir que apenas um conjunto de imagens assinadas seja implantado nos clusters. Também é possível ativar o Artifact Analysis para verificar se há vulnerabilidades em imagens de contêiner armazenadas no Artifact Registry.
Migrar para a automação de implantação
Depois de migrar para as ferramentas de orquestração de contêineres, é possível migrar para a automação de implantação completa e estender os procedimentos de produção e implantação de artefatos para implantar automaticamente suas cargas de trabalho.
Avaliar e descobrir as cargas de trabalho
Com base na avaliação anterior, agora é possível se concentrar nos requisitos dos processos de implantação:
- Passos de aprovação manual: avalie se é preciso oferecer suporte aos passos manuais nos procedimentos de implantação.
- Unidades de implantação por tempo: avalie quantas implantações por unidade de tempo são necessárias para oferecer suporte.
- Fatores que causam uma nova implantação: avalie quais sistemas externos interagem com os procedimentos de implantação.
Se for preciso oferecer suporte aos passos de implantação manual, isso não significa que seu procedimento não pode ser automatizado. Nesse caso, automatize cada passo do procedimento e posicione os portões de aprovação manual quando apropriado.
O suporte a várias implantações por dia ou por hora é mais complexo do que oferecer algumas implantações por mês ou por ano. No entanto, se não implantar com frequência, sua agilidade e sua capacidade de reagir a problemas e enviar novos recursos em suas cargas de trabalho poderão ser reduzidas. Por isso, antes de projetar e implementar um procedimento de implantação totalmente automatizado, é uma boa ideia definir suas expectativas e metas.
Avalie também quais fatores acionam uma nova implantação nos seus ambientes de execução. Por exemplo, é possível implantar cada nova versão no ambiente de desenvolvimento, mas implantá-la no ambiente de controle de qualidade somente se atender a certos critérios de qualidade.
Planejar e construir uma base
Para estender a base criada no passo anterior, é possível provisionar e configurar serviços para dar suporte aos procedimentos de implantação automatizada.
Para cada um dos ambientes de execução, configure a infraestrutura necessária para dar suporte aos procedimentos de implantação. Por exemplo, ao provisionar e configurar os procedimentos de implantação nos ambientes de desenvolvimento, controle de qualidade, pré-produção e produção, você terá a liberdade e a flexibilidade para testar alterações nos procedimentos. No entanto, se uma única infraestrutura for usada para implantar os ambientes de execução, os ambientes serão mais simples de gerenciar, mas menos flexíveis quando precisar alterar os procedimentos.
Ao provisionar as contas de serviço e os papéis, considere isolar os ambientes e as cargas de trabalho criando contas de serviço dedicadas que não compartilham responsabilidades. Por exemplo, não reutilize as mesmas contas de serviço para os diferentes ambientes de execução.
Implantar seus artefatos com procedimentos totalmente automatizados
Nesta fase, configure os procedimentos de implantação para implantar os artefatos sem qualquer interferência manual, exceto os passos de aprovação.
Use ferramentas como o Cloud Deploy para implementar os procedimentos de implantação automatizada, de acordo com os requisitos reunidos na fase de avaliação dessa etapa de migração.
Para qualquer artefato, cada procedimento de implantação precisa executar as seguintes tarefas:
- Implante o artefato no ambiente de execução de destino.
- Insira os arquivos de configuração e os secrets no artefato implantado.
- Execute o conjunto de testes de conformidade no artefato recém-implantado.
- Promover o artefato para o ambiente de produção.
Verifique se os procedimentos de implantação fornecem interfaces para acionar novas implantações de acordo com seus requisitos.
A revisão de código é um passo necessário ao implementar procedimentos de implantação automatizados, devido ao curto ciclo de feedback que faz parte desses procedimentos por padrão. Por exemplo, se implantar alterações no ambiente de produção sem qualquer revisão, isso afetará a estabilidade e a confiabilidade do ambiente de produção. Uma alteração não analisada, incorreta ou mal-intencionada pode causar uma interrupção do serviço.
Otimize seu ambiente
Depois de automatizar os procedimentos de implantação, é possível executar outra iteração de otimização. Os requisitos dessa iteração são os seguintes:
- Estenda seu sistema de monitoramento para abranger a infraestrutura de suporte aos procedimentos de implantação automatizada.
- Implemente padrões de implantação mais avançados.
- Implemente um procedimento de acesso imediato.
Um sistema de monitoramento eficaz permite que você planeje outras otimizações para seu ambiente. Ao medir o comportamento do seu ambiente, é possível encontrar gargalos que estão prejudicando seu desempenho ou outros problemas, como acessos e explorações não autorizados ou acidentais. Por exemplo, configure o ambiente para receber alertas quando o consumo de determinados recursos atingir um limite.
Quando conseguir orquestrar contêineres com eficiência, será possível implementar padrões avançados de implantação, dependendo das suas necessidades. Por exemplo, é possível implementar implantações azul-verde para aumentar a confiabilidade do ambiente e reduzir o impacto de qualquer problema para os usuários.
A seguir
- Otimizar o ambiente.
- Saiba quando buscar ajuda para suas migrações.
- Confira arquiteturas de referência, diagramas, tutoriais e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.