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 AlloyDB com o 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 um IP privado.

O que você vai aprender

Você vai aprender a:

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

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 alterado 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, pode 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

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 cluster do AlloyDB

Defina as permissões necessárias para a configuração. Isso vai 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 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.

Para criar uma configuração de acesso a serviços particulares em uma rede VPC que reside no mesmo projeto do Cloud que o AlloyDB, execute 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

Criar uma conexão privada 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

Criar 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

Criar 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

Confira 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. Analisar o código do job do Cloud Run

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

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

Confira 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 o 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 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 IP interno/privado. Essa etapa leva cerca de dois minutos.

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

Criar o 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

Implantar 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

Revise as sinalizações que foram usadas para criar o job:

--vpc-connector: o job do Cloud Run usará o conector 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

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.