Como migrar uma VM monolítica: visão geral e configuração
Neste tutorial, mostramos como analisar um aplicativo de amostra ainda não totalmente modernizado e as etapas necessárias para migrar todos os serviços dele para o GKE. Este aplicativo executa alguns dos serviços dele em um cluster do GKE e o restante dos serviços como um monolítico em uma VM.
Este tutorial está dividido em quatro seções:
-
Nesta seção, você verá o contexto por trás deste tutorial, além de configurar a infraestrutura e as ferramentas necessárias para continuar com o restante do tutorial.
Descoberta e avaliação (dia zero).
Em seguida, verá como usar as ferramentas de descoberta para avaliar se a VM é adequada para a migração, bem como criar um cluster de processamento na preparação para a migração.
Migração e implantação (primeiro dia).
Após ser avaliado, você aprenderá a criar um plano de migração para sua VM monolítica, com uma migração completa de imagens e dados, e implantar seus artefatos recém-criados no Kubernetes.
-
Por fim, você aprenderá como implantar rapidamente alterações de código-fonte no ambiente em contêiner, além de aprender sobre microsserviços, observabilidade e práticas recomendadas de modernização.
Context
Atualmente, uma grande parcela de aplicativos legados em grandes empresas é monolítica e está em execução em pilhas de tecnologia proprietárias ou máquinas virtuais (VMs) com uso intenso de computação. Esses serviços geralmente são cruciais para o funcionamento de um aplicativo maior, mas acumulam muitos custos operacionais, como taxas operacionais e de licenciamento. No entanto, devido a natureza deles, pode ser difícil migrar as VMs para uma solução mais leve, como contêineres em um cluster do GKE.
Neste tutorial, você aprende como aproveitar o Migrate to Containers para mover um serviço monolítico e o banco de dados dele, facilmente e sem alterações de código, de uma VM para um ambiente do GKE, reduzindo assim as taxas operacionais e o atrito de desenvolvimento. Em seguida, você aprenderá a aproveitar a nova carga de trabalho migrada implantando alterações no código-fonte e práticas recomendadas de modernização.
O aplicativo de amostra usado é o Bank of Anthos (em inglês), uma simulação de um serviço de banco de varejo, completo com a própria rede de processamento de transações e bancos de dados.
Os serviços de front-end da Web, usuários e contatos do Bank of Anthos, além do banco de dados da conta, já são microsserviços em contêineres executados em contêineres no GKE. No entanto, o livro-razão e o banco de dados de transações monolíticos ainda estão em execução em uma única máquina virtual. Para reduzir os custos operacionais sem interromper os fluxos de trabalho atuais, é necessário migrar facilmente essa VM para o GKE.
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.
Ferramentas necessárias
Siga este tutorial usando o Cloud Shell, que vem
pré-instalado com as ferramentas de linha de comando gcloud
, kubectl
, git
e migctl
usadas
neste tutorial. Ao usar o Cloud Shell, você não precisa instalar essas
ferramentas de linha de comando na sua estação de trabalho.
Para usar o Cloud Shell:
- Acesse o console do Google Cloud.
Clique no botão Ativar Cloud Shell na parte superior da janela do Console do Google Cloud.
Uma sessão do Cloud Shell é aberta dentro de um novo frame na parte inferior do Console do Google Cloud, e exibe um prompt de linha de comando.
APIs necessárias
Ativar o suporte para o Compute Engine
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
- Ative a API Compute Engine.
Ativar e configurar o GKE
Antes de começar, verifique se você realizou as tarefas a seguir:
- Ativar a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a Google Cloud CLI para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão
mais recente executando
gcloud components update
.
Implantar o Bank of Anthos
Nesta seção, você implantará a VM monolítica do livro-razão no Compute Engine, além de criar o cluster do GKE em que o restante dos serviços do Bank of Anthos residirá.
Defina as variáveis de ambiente necessárias para a implantação monolítica do Bank of Anthos.
export PROJECT_ID=PROJECT_ID
export ZONE=COMPUTE_ZONE
Clone o repositório do Bank of Anthos no diretório principal.
git clone https://github.com/GoogleCloudPlatform/bank-of-anthos ${HOME}/bank-of-anthos
Implante o monolítico do Bank of Anthos no Compute Engine.
cd ${HOME}/bank-of-anthos
make monolith-deploy
Este comando cria uma VM no Compute Engine usando a imagem do banco de dados do Bank of Anthos.
Crie uma regra de firewall que permita solicitações à instância de VM na porta 8080, que é usada pelo serviço de front-end para se comunicar com o monolítico.
gcloud compute --project=PROJECT_ID firewall-rules create default-allow-http \ --direction=INGRESS --priority=1000 --network=default --action=ALLOW \ --rules=tcp:8080 --source-ranges=0.0.0.0/0 --target-tags=monolith
Crie um cluster do GKE que hospede o restante dos serviços do Bank of Anthos.
gcloud container clusters create boa-cluster \ --zone COMPUTE_ZONE --project=PROJECT_ID \ --machine-type=e2-standard-4 --num-nodes=4 \ --subnetwork=default
Depois que o cluster for criado, busque as credenciais e configure o contexto do Kubernetes para apontar para ele.
gcloud container clusters get-credentials boa-cluster \ --zone COMPUTE_ZONE --project=PROJECT_ID
Substitua o ID do projeto no ConfigMap usado para descrever como os serviços do GKE podem se comunicar com a VM monolítica do livro razão.
sed -i 's/\[PROJECT_ID\]/'PROJECT_ID'/g' ${HOME}/bank-of-anthos/src/ledgermonolith/config.yaml
Veja este arquivo para confirmar que as alterações foram aplicadas.
cat ${HOME}/bank-of-anthos/src/ledgermonolith/config.yaml | grep ADDR
Você verá que o ID do projeto foi interpolado nos hosts de serviço do livro razão.
TRANSACTIONS_API_ADDR: "ledgermonolith-service.c.PROJECT_ID.internal:8080" BALANCES_API_ADDR: "ledgermonolith-service.c.PROJECT_ID.internal:8080" HISTORY_API_ADDR: "ledgermonolith-service.c.PROJECT_ID.internal:8080" CONTACTS_API_ADDR: "contacts:8080" USERSERVICE_API_ADDR: "userservice:8080
Aplique os vários serviços do Bank of Anthos no cluster.
cd ${HOME}/bank-of-anthos/
kubectl apply -f src/ledgermonolith/config.yaml
kubectl apply -f extras/jwt/jwt-secret.yaml
kubectl apply -f kubernetes-manifests/accounts-db.yaml
kubectl apply -f kubernetes-manifests/userservice.yaml
kubectl apply -f kubernetes-manifests/contacts.yaml
kubectl apply -f kubernetes-manifests/frontend.yaml
kubectl apply -f kubernetes-manifests/loadgenerator.yaml
É possível verificar os estados do pod com o seguinte comando:
kubectl get pods
Pode levar alguns minutos para que todos os pods estejam em execução.
NAME READY STATUS RESTARTS AGE accounts-db-0 1/1 Running 0 51s contacts-d5dcdc87c-5l9xf 1/1 Running 0 50s frontend-5768bd978-s6vkq 1/1 Running 0 50s loadgenerator-8485dfd-wjvst 1/1 Running 0 50s userservice-8477dfcb46-htw96 1/1 Running 0 51s
Depois que todos os pods forem definidos como
Running
, é possível encontrar o endereço IP externo do serviçofrontend
do LoadBalancer.kubectl get service frontend
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE frontend LoadBalancer 10.79.248.161 ##.##.##.##. 80:31304/TCP 4m
Por fim, é possível abrir um navegador e acessar a página da Web no endereço IP externo encontrado acima (use HTTP, em vez de HTTPS).
http://EXTERNAL_IP
Faça o login com as credenciais padrão e veja as transações no painel. As transações listadas vêm do monolítico do livro razão atualmente hospedado em uma VM.
Limpeza
Para evitar cobranças desnecessárias do Google Cloud, exclua os recursos usados para este tutorial assim que terminar. Esses recursos são:
- O cluster do GKE
boa-cluster
- A VM do Compute Engine
ledgermonolith-service
Exclua esses recursos manualmente ou siga as etapas abaixo para excluir seu projeto, o que também removerá todos os recursos.
A seguir
Agora que você ativou as APIs necessárias e implantou a configuração do Bank of Anthos, vá para a próxima seção do tutorial, Descoberta e avaliação, em que você aprenderá como usar as ferramentas de descoberta de migração para avaliar se a VM é adequada para migração usando as ferramentas Migrate to Containers.
Ao terminar este tutorial, não se esqueça de limpar o projeto e os recursos do Google Cloud.