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 cluster e instância do AlloyDB
  • Implantar um 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.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 É 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 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. 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.
  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 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

Clique no ícone à direita da barra de pesquisa para ativar o Cloud Shell.

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

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, faça 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 dois 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

Revise 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. Explorar 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. Leia mais sobre essa abordagem aqui.

Neste laboratório, você vai criar um banco de dados do AlloyDB usando um 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 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 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

Mude a permissão em script.sh:

chmod +x script.sh

5. Implantar 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 um IP interno/particular. Essa etapa leva cerca de dois 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 do 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 vai usar o conector de VPC para acessar o endereço IP privado do AlloyDB.

Revise 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

Revise 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 um 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.