1. Visão geral
Neste laboratório, você vai implantar um microsserviço de dois níveis com um pod em execução no Autopilot do GKE e conectá-lo a uma instância particular do banco de dados do AlloyDB. O aplicativo de atendimento ao cliente faz parte do sistema Cymbal Eats e oferece funcionalidades para gerenciar usuários registrados. O aplicativo de atendimento ao cliente é um microsserviço baseado em Java que usa o framework Quarkus (em inglês).
O AlloyDB oferece suporte à conectividade de rede por meio de endereços IP internos particulares configurados para acesso a serviços particulares.
O acesso a serviços particulares é implementado como uma conexão de peering de VPC entre sua rede VPC e a rede VPC do Google Cloud subjacente onde residem os recursos (clusters e instâncias) do AlloyDB. A conexão particular permite que os recursos na sua rede VPC se comuniquem com os recursos do AlloyDB que eles acessam exclusivamente usando endereços IP internos. Os recursos da sua rede VPC não precisam de acesso à Internet ou endereços IP externos para acessar os recursos do AlloyDB.
O que é o Autopilot do GKE?
O Autopilot do GKE é um modo de operação em que o Google gerencia a configuração do cluster, incluindo nós, escalonamento, segurança e outras configurações predefinidas. Os clusters do Autopilot são otimizados para executar a maioria das cargas de trabalho de produção e provisionar recursos de computação com base nos manifestos do Kubernetes. A configuração simplificada segue as práticas recomendadas do GKE e as recomendações para configuração de clusters e cargas de trabalho, escalonabilidade e segurança. Para conferir uma lista de configurações integradas, consulte a tabela de comparação do Autopilot e do Standard.
O que é o AlloyDB?
Um serviço de banco de dados totalmente compatível e compatível com PostgreSQL para suas cargas de trabalho empresariais mais exigentes de banco de dados. O AlloyDB combina o melhor do Google com um dos mecanismos de banco de dados de código aberto mais conhecidos, o PostgreSQL, para aumentar o desempenho, a escala e a disponibilidade.
O que você vai aprender
Você vai aprender a:
- Criar instância particular do banco de dados do AlloyDB
- Implante um aplicativo no cluster do Autopilot do GKE que se conecte à instância do AlloyDB
Pré-requisitos
- Para fazer este laboratório, é preciso ter familiaridade com o console do Cloud e os ambientes do Cloud Shell.
- Ter experiência prévia com GKE e AlloyDB é útil, mas não é obrigatório.
2. Configuração e requisitos
Configuração do projeto do Google Cloud
- Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.
- O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google Você pode atualizar a qualquer momento.
- O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. normalmente você não se importa com o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, que normalmente é identificado como
PROJECT_ID
. Se você não gostar do ID gerado, poderá gerar outro ID aleatório. Como alternativa, você pode tentar o seu próprio e ver se ele está disponível. Ela não pode ser alterada após essa etapa e permanecerá durante a duração do projeto. - Para sua informação, há um terceiro valor, um Número de projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
- Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não será muito cara, se tiver algum custo. Para encerrar os recursos e não gerar faturamento além deste tutorial, exclua os recursos criados ou exclua o projeto inteiro. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.
Configuração do ambiente
Ative o Cloud Shell clicando no ícone à direita da barra de pesquisa.
Clone o repositório, acesse o diretório, copie e cole o comando abaixo no terminal e pressione Enter:
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service
Implante as dependências necessárias executando gke-lab-setup.sh
.
Os seguintes recursos serão criados:
- Cluster e instância do AlloyDB
- Artifact Registry para armazenar imagens de contêiner para o job do Cloud Run e o atendimento ao cliente
- O conector de acesso VPC para o job do Cloud Run para se comunicar com o banco de dados do AlloyDB
- Job do Cloud Run para criar o banco de dados do AlloyDB
- Cluster do Autopilot do GKE
./gke-lab-setup.sh
Se for preciso autorizar, clique em "Autorizar" para continuar.
A configuração levará cerca de 10 minutos. Revise o script de configuração usado para criar as dependências necessárias.
gke-lab-setup.sh
Antes de executar as próximas etapas, aguarde o script terminar e a resposta abaixo aparecer.
Job [db-job] has successfully been created. To execute this job, use: gcloud beta run jobs execute db-job OK Creating execution... Done. OK Provisioning resources... Done. Execution [db-job-k94ps] has successfully started running.
3. Implantação de aplicativos
Revisar cluster do AlloyDB
Execute o comando abaixo para revisar a instância criada do AlloyDB:
gcloud alloydb instances describe customer-instance --cluster=customer-cluster --region=us-central1
Exemplo de resposta:
createTime: '2023-01-06T14:40:07.213288293Z' instanceType: PRIMARY ipAddress: 10.77.176.2 machineConfig: cpuCount: 2 name: projects/cymbal-eats-20056-16671/locations/us-central1/clusters/customer-cluster/instances/customer-instance nodes: - zoneId: us-central1-f queryInsightsConfig: queryPlansPerMinute: 5 queryStringLength: 1024 recordApplicationTags: true recordClientAddress: true reconciling: false state: READY uid: df90d57d-88df-49be-a626-6dfec0513e64 updateTime: '2023-01-06T14:49:40.907977843Z' writableNode: zoneId: us-central1-b
Confira os recursos disponíveis(Insight de consulta, Monitoramento) no console.
Analisar o cluster do Autopilot do GKE
Defina as variáveis de ambiente do projeto:
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
Como parte da configuração inicial, o cluster foi criado usando o comando abaixo. Você não precisa executar este comando:
gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
Execute o comando para visualizar o cluster do Autopilot do GKE criado:
gcloud container clusters list
Exemplo de resposta:
Execute o comando para armazenar as credenciais do cluster:
CLUSTER_NAME=rewards-cluster
REGION=us-central1
gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION
Implementar um aplicativo
Agora você implantará um aplicativo de atendimento ao cliente.
O aplicativo de atendimento ao cliente é um microsserviço baseado em Java que usa o framework Quarkus (em inglês).
Navegue até a pasta cymbal-eats/customer-service
e execute os comandos para criar e fazer upload da imagem do contêiner:
./mvnw clean package -DskipTests
export CUSTOMER_SERVICE_IMAGE=gcr.io/$PROJECT_ID/customer-service:1.0.0
gcloud builds submit --tag $CUSTOMER_SERVICE_IMAGE .
Abra o Cloud Build no console para revisar os detalhes do build mais recente.
Defina a variável de ambiente abaixo usando o valor do endereço IP privado do AlloyDB:
export DB_HOST=$(gcloud beta alloydb instances describe customer-instance \
--cluster=customer-cluster \
--region=$REGION \
--format=json | jq \
--raw-output ".ipAddress")
echo $DB_HOST
Execute os comandos abaixo para criar o objeto de secrets do Kubernetes e armazenar as credenciais do banco de dados que serão usadas pelo aplicativo de atendimento ao cliente para se conectar ao banco de dados:
DB_NAME=customers
DB_USER=postgres
DB_PASSWORD=password123
kubectl create secret generic gke-alloydb-secrets \
--from-literal=database=$DB_NAME \
--from-literal=username=$DB_USER \
--from-literal=password=$DB_PASSWORD \
--from-literal=db_host=$DB_HOST
Execute o comando para substituir CUSTOMER_SERVICE_IMAGE no arquivo deployment.yaml:
sed "s@CUSTOMER_SERVICE_IMAGE@$CUSTOMER_SERVICE_IMAGE@g" deployment.yaml.tmpl > customer-service-deployment.yaml
Execute o comando para implantar o aplicativo:
kubectl apply -f customer-service-deployment.yaml
Levará alguns instantes para o aplicativo passar para o estado RUNNING.
Execute o comando para criar o IP externo que será usado nas etapas de teste:
SERVICE_NAME=customer-service
kubectl expose deployment $SERVICE_NAME \
--type LoadBalancer --port 80 --target-port 8080
Execute o comando para verificar os recursos criados:
kubectl get all
Exemplo de resposta:
4. Testar aplicativo
Execute os comandos abaixo para salvar o URL do atendimento ao cliente.
kubectl get svc
Defina a variável de ambiente abaixo usando o valor de IP externo da saída anterior.
CUSTOMER_SERVICE_URL=$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
Execute os comandos abaixo para criar um novo registro de cliente:
curl -X POST $CUSTOMER_SERVICE_URL/customer \
-H 'Content-Type: application/json' \
-d '{"id": "id1","rewardPoints": 3,"address": "1845 Denise St","city": "Mountain View","createDateTime": "2022-11-11T15:56:45.487566","email": "ajensen9090+eats@gmail.com","name": "Angela Jensen","state": "CA","updateDateTime": "2022-11-11T15:56:45.866125","zip": "94043"}'
Execute o comando acima várias vezes para gerar mensagens de registro que você vai ver na Análise de registros mais tarde.
Analisar os registros do cliente
Execute os comandos abaixo para ver o registro do cliente criado.
curl $CUSTOMER_SERVICE_URL/customer | jq
Exemplo de resposta:
[ { "address": "1845 Denise St", "city": "Mountain View", "createDateTime": "2023-01-06T16:13:19.118744", "email": "ajensen9090+eats@gmail.com", "id": "id1", "name": "Angela Jensen", "rewardPoints": 3, "state": "CA", "updateDateTime": "2023-01-06T16:13:19.118896", "zip": "94043" } ]
Analise as cargas de trabalho e os serviços do GKE
Abra o Kubernetes Engine no console do Cloud e revise as cargas de trabalho e os serviços criados.
Registros do aplicativo
Abra a Análise de registros e procure os registros que contenham a mensagem "O cliente já existe". em textos.
5. Parabéns!
Parabéns, você concluiu o codelab.
O que aprendemos:
- Como criar uma instância particular do banco de dados do AlloyDB
- Como implantar um aplicativo no cluster do Autopilot do GKE que se conecta à instância do AlloyDB
O que vem em seguida:
Conheça outros codelabs da Cymbal Eats:
- Como acionar fluxos de trabalho do Cloud com o Eventarc
- Como acionar o processamento de eventos no Cloud Storage
- Como se conectar ao CloudSQL particular pelo Cloud Run
- Como se conectar a bancos de dados totalmente gerenciados pelo Cloud Run
- Aplicativo seguro sem servidor com o Identity Aware Proxy (IAP)
- Como acionar jobs do Cloud Run com o Cloud Scheduler
- Como implantar com segurança no Cloud Run
- Como proteger o tráfego de entrada do Cloud Run
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto ou mantenha o projeto e exclua cada um dos recursos.
Excluir o projeto
O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para este tutorial.