Criando o banco de dados do AlloyDB com o job do Cloud Run

1. Visão geral

Neste laboratório, você vai criar um banco de dados do AlloyDB com um job do Cloud Run. Você vai configurar o acesso a serviços particulares e o acesso VPC sem servidor para ativar a conectividade entre o job do Cloud Run e o banco de dados do AlloyDB usando o IP particular.

O que você vai aprender

Neste laboratório, você vai aprender a:

  • Configurar o cluster e a instância do AlloyDB
  • Implantar o job do Cloud Run para criar um banco de dados do AlloyDB

2. Configuração e requisitos

Configuração do projeto do 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.pnga99b7ace416376c4.pngbd84a6d3004737c5.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 e pode ser atualizada a qualquer momento.
  • O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser alterado 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. Como alternativa, você pode criar um próprio e verificar se ele está disponível. Ele não pode ser alterado após esta etapa e permanecerá durante todo 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.
  1. Em seguida, você precisará ativar 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 desligar 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

Ative o Cloud Shell clicando no ícone à direita da barra de pesquisa.

eb0157a992f16fa3.png

Para ativar as APIs de serviço, copie e cole o comando abaixo no terminal e pressione Enter:

gcloud services enable \
    alloydb.googleapis.com \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    run.googleapis.com \
    vpcaccess.googleapis.com \
    compute.googleapis.com \
    servicenetworking.googleapis.com \
    --quiet

Defina as variáveis de ambiente:

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)')
export DB_DATABASE=test
export DB_USER=postgres
export DB_PASSWORD=password123
export REGION=us-central1
export CLUSTER=test-cluster
export INSTANCE=test-instance
export VPC_CONNECTOR=vpcconnector

3. Configurar e criar um cluster do AlloyDB

Defina as permissões necessárias para a configuração. Isso permitirá que o job do Cloud Run se conecte ao banco de dados do AlloyDB.

gcloud projects add-iam-policy-binding $PROJECT_NAME \
  --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
  --role="roles/alloydb.client"

Configurar o 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 que contém os recursos do AlloyDB (clusters e instâncias). A conexão particular 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 alcançar os recursos do AlloyDB.

Para criar uma configuração de acesso a serviços particulares em uma rede VPC que reside no mesmo projeto na nuvem que o AlloyDB, realize duas operações:

Crie um intervalo de endereços IP alocado na rede VPC.

gcloud compute addresses create google-managed-services-default \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=20 \
    --network=projects/$PROJECT_ID/global/networks/default

Crie uma conexão particular entre a rede VPC e a rede VPC subjacente do Google Cloud. Essa etapa leva cerca de 2 minutos.

gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=google-managed-services-default \
    --network=default \
    --project=$PROJECT_ID

Crie um cluster do AlloyDB.

gcloud beta alloydb clusters create $CLUSTER \
    --password=$DB_PASSWORD \
    --network=default \
    --region=$REGION \
    --project=$PROJECT_NAME

gcloud beta alloydb clusters describe $CLUSTER --region=$REGION

Crie uma instância do AlloyDB. Essa etapa leva cerca de 10 minutos.

gcloud beta alloydb instances create $INSTANCE \
    --cluster=$CLUSTER \
    --region=$REGION \
    --instance-type=PRIMARY \
    --cpu-count=2 \
    --project=$PROJECT_NAME

gcloud beta alloydb instances describe $INSTANCE \
    --cluster=$CLUSTER \
    --region $REGION

Analise o cluster criado no console do Cloud.

568d273c0e0d6408.png

Salve o endereço IP do banco de dados em uma variável.""

export DB_HOST=$(gcloud beta alloydb instances describe $INSTANCE \
    --cluster=$CLUSTER \
    --region=$REGION \
    --format=json | jq \
    --raw-output ".ipAddress")

echo "DB_HOST=$DB_HOST"

4. Conhecer o código do job do Cloud Run

Há várias maneiras de criar um banco de dados do AlloyDB. Uma delas é criar uma VM do Compute Engine, instalar um cliente psql e se conectar à instância para criar um banco de dados. Saiba mais sobre essa abordagem aqui.

Neste laboratório, você vai criar um banco de dados do AlloyDB usando o job do Cloud Run.

Analise os arquivos abaixo:

  • Dockerfile: instala as dependências necessárias(postgresql-client)
  • script.sh: usa utilitários de linha de comando para criar um banco de dados

No Cloud Shell, crie uma nova pasta:

mkdir ~/alloy-db-cloud-run-job
cd ~/alloy-db-cloud-run-job 

Crie um novo arquivo Dockerfile:

cat > Dockerfile <<EOF
FROM ubuntu:latest
RUN apt-get update && apt-get install -y postgresql-client && apt-get clean
COPY script.sh /
RUN chmod +x /script.sh
CMD ["/script.sh"]
ENTRYPOINT ["/bin/bash"]
EOF

Crie um novo arquivo script.sh com o conteúdo abaixo:

echo "Connecting to $DB_HOST"
createdb -h $DB_HOST -p 5432 $PGDB
echo "Created $PGDB database"

psql -h $DB_HOST -l

Altere a permissão em script.sh:

chmod +x script.sh

5. Implantar o job do Cloud Run

Configure o acesso VPC sem servidor. Isso permite que o job do Cloud Run se comunique com o cluster do AlloyDB usando o IP interno/particular. Essa etapa leva cerca de 2 minutos.

gcloud compute networks vpc-access connectors create ${VPC_CONNECTOR} \
    --region=${REGION} \
    --range=10.8.0.0/28

Crie um repositório do Artifact Registry para armazenar imagens de contêiner.

gcloud artifacts repositories create db-job-repository \
  --repository-format=docker \
  --location=$REGION

Crie e publique a imagem de contêiner no Artifact Registry.

gcloud builds submit -t $REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest

Implante o job do Cloud Run.

gcloud beta run jobs create db-job \
    --image=$REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest \
    --set-env-vars DB_HOST=$DB_HOST \
    --set-env-vars PGUSER=$DB_USER \
    --set-env-vars PGPASSWORD=$DB_PASSWORD \
    --set-env-vars PGDB=$DB_DATABASE \
    --vpc-connector $VPC_CONNECTOR \
    --region $REGION

Analise as flags usadas para criar o job:

--vpc-connector - o job do Cloud Run usará o conector de VPC para acessar o endereço IP particular do AlloyDB.

Analise o job criado no console do Cloud.

93d8224eca8c687f.png

Execute o job do Cloud Run para criar o banco de dados test.

gcloud beta run jobs execute db-job --region $REGION

Analise os registros do job do Cloud Run no console do Cloud.

3f2269736b53f44c.png

6. Parabéns!

Parabéns, você concluiu o codelab.

O que aprendemos:

  • Como criar um cluster e uma instância do AlloyDB
  • Como criar um banco de dados do AlloyDB usando o job 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.