Como se conectar à instância particular do AlloyDB por meio do aplicativo em execução no Autopilot do GKE

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).

e8a5140b09521b7a.png

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.

44662d7a086358de.png

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

  1. 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.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • 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.
  1. 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.

eb0157a992f16fa3.png

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.

6356559df3eccdda.png

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.

3b12b0fa1367fb42.png

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:

e8882c44fa0bb631.png

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.

49fd65309967ae47.png

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:

179a23bd33793924.png

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.

e1217216e003a839.png

d5c97fb5950c4db.png

Registros do aplicativo

Abra a Análise de registros e procure os registros que contenham a mensagem "O cliente já existe". em textos.

543c5ed97819f540.png

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:

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.