1. Visão geral
Neste laboratório, você vai implantar um microsserviço de duas camadas com um pod em execução no Autopilot do GKE e conectá-lo a uma instância particular do banco de dados AlloyDB. O aplicativo de atendimento ao cliente faz parte do sistema Cymbal Eats e oferece funcionalidade para gerenciar usuários registrados. O aplicativo de atendimento ao cliente é um microsserviço baseado em Java que usa o framework Quarkus.

O AlloyDB oferece suporte à conectividade de rede por endereços IP particulares e internos 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 subjacente do Google Cloud em que seus recursos do AlloyDB (clusters e instâncias) residem. A conexão privada permite que os recursos na sua rede VPC se comuniquem com os recursos do AlloyDB que acessam exclusivamente usando endereços IP internos. Os recursos na 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 GKE Autopilot é um modo de operação no GKE 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 e recomendações do GKE para configuração, escalonabilidade e segurança do cluster e da carga de trabalho. Para conferir uma lista de configurações integradas, consulte a Tabela de comparação do Autopilot e 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 usados, o PostgreSQL, para oferecer desempenho, escala e disponibilidade superiores.
O que você vai aprender
Neste laboratório, você vai aprender a:
- Criar uma instância particular do banco de dados do AlloyDB
- Implantar um aplicativo em um cluster do Autopilot do GKE que se conecta à instância do AlloyDB
Pré-requisitos
- Para fazer este laboratório, é preciso saber usar o console do Cloud e os ambientes do Cloud Shell.
- Ter experiência com o GKE e o AlloyDB é útil, mas não obrigatório.
2. Configuração e requisitos
Configuração do projeto do 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 É possível atualizar o local 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. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como
PROJECT_ID. Se você não gostar do ID gerado, crie outro aleatório. Se preferir, teste o seu e confira se ele está disponível. Ele não pode ser mudado após essa etapa e permanece durante o projeto. - Para sua informação, há um terceiro valor, um Número do 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 evitar cobranças além deste tutorial, exclua os recursos criados ou 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
Clique no ícone à direita da barra de pesquisa para ativar o Cloud Shell.

Clone o repositório e navegue até 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 o 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 jobs do Cloud Run e atendimento ao cliente
- Conector de acesso à VPC para o job do Cloud Run se comunicar com o banco de dados do AlloyDB
- Job do Cloud Run para criar um 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 leva cerca de 10 minutos. Revise o script de configuração usado para criar as dependências necessárias.
gke-lab-setup.sh
Aguarde a conclusão do script e confira a saída abaixo antes de executar as próximas etapas.
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
Analisar cluster do AlloyDB
Execute o comando abaixo para analisar a instância do AlloyDB criada:
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
Conheça os recursos disponíveis(Query Insight, Monitoring) 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 (não é necessário executar esse comando):
gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
Execute o comando para conferir o cluster do GKE Autopilot 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
Em seguida, você vai implantar um aplicativo de atendimento ao cliente.
O aplicativo de atendimento ao cliente é um microsserviço baseado em Java que usa o framework Quarkus.
Acesse 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 conferir 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 um objeto de secrets do Kubernetes que armazena as credenciais do banco de dados 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
A transição do aplicativo para o estado "EM EXECUÇÃO" leva alguns instantes.
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 do 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 registros de clientes
Execute os comandos abaixo para conferir 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"
}
]
Analisar cargas de trabalho e serviços do GKE
Abra o Kubernetes Engine no console do Cloud e analise as cargas de trabalho e os serviços criados.


Registros do aplicativo
Abra a Análise de registros e pesquise registros que contenham o texto "Customer already exists".

5. Parabéns!
Parabéns, você concluiu o codelab.
O que aprendemos:
- Como criar uma instância privada do banco de dados do AlloyDB
- Como implantar um aplicativo em um cluster do Autopilot do GKE que se conecta a uma instância do AlloyDB
Qual é a próxima etapa?
Confira outros codelabs do Cymbal Eats:
- Como acionar o Cloud Workflows com o Eventarc
- Acionamento do processamento de eventos do Cloud Storage
- Como se conectar ao CloudSQL particular pelo Cloud Run
- Como se conectar a bancos de dados totalmente gerenciados pelo Cloud Run
- Proteger um aplicativo 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.