Creazione di un database AlloyDB con il job Cloud Run

1. Panoramica

In questo lab creerai un database AlloyDB con un job Cloud Run. Configura l'accesso privato ai servizi e l'accesso VPC serverless per abilitare la connettività tra il job Cloud Run e il database AlloyDB utilizzando l'IP privato.

Cosa imparerai a fare

In questo lab imparerai a:

  • Configura il cluster e l'istanza AlloyDB
  • Esegui il deployment del job Cloud Run per creare un database AlloyDB

2. Configurazione e requisiti

Configurazione del progetto Cloud

  1. Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Il Nome progetto è il nome visualizzato dei partecipanti del progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi aggiornarla in qualsiasi momento.
  • L'ID progetto deve essere univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). La console Cloud genera automaticamente una stringa univoca; di solito non ti importa cosa sia. Nella maggior parte dei codelab, dovrai fare riferimento all'ID progetto (in genere è identificato come PROJECT_ID). Se l'ID generato non ti soddisfa, puoi generarne un altro casuale. In alternativa, puoi provarne una personalizzata per verificare se è disponibile. Non può essere modificato dopo questo passaggio e rimarrà per tutta la durata del progetto.
  • Per informazione, c'è un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
  1. Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare risorse/API Cloud. Eseguire questo codelab non dovrebbe costare molto. Per arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial, puoi eliminare le risorse che hai creato o eliminare l'intero progetto. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.

Configurazione dell'ambiente

Attiva Cloud Shell facendo clic sull'icona a destra della barra di ricerca.

eb0157a992f16fa3.png

Per abilitare le API di servizio, copia e incolla il comando seguente nel terminale e premi Invio:

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

Imposta le variabili di 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. Configura e crea un cluster AlloyDB

Imposta le autorizzazioni richieste per la configurazione. Ciò consentirà al job Cloud Run di connettersi al database AlloyDB.

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

Configurare l'accesso privato ai servizi

L'accesso privato ai servizi è implementato come connessione in peering VPC tra la tua rete VPC e la rete VPC Google Cloud sottostante in cui si trovano le risorse AlloyDB (cluster e istanze). La connessione privata consente alle risorse nella tua rete VPC di comunicare con le risorse AlloyDB a cui accedono in modo esclusivo mediante indirizzi IP interni. Le risorse nella tua rete VPC non hanno bisogno dell'accesso a internet o di indirizzi IP esterni per raggiungere le risorse AlloyDB.

Per creare una configurazione di accesso privato ai servizi in una rete VPC che risiede nello stesso progetto Cloud di AlloyDB, devi eseguire due operazioni:

Crea un intervallo di indirizzi IP allocati nella rete VPC.

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

Crea una connessione privata tra la rete VPC e la rete VPC di Google Cloud sottostante. Questo passaggio richiede circa 2 minuti.

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

Creare un cluster 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

Creare un'istanza AlloyDB. Questo passaggio richiede circa 10 minuti.

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

Esamina il cluster creato nella console Cloud.

568d273c0e0d6408.png

Salva l'indirizzo IP del database in una variabile.""

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. esplora il codice del job Cloud Run

Esistono diversi modi per creare un database AlloyDB. Uno è creare una VM Compute Engine, installare un client psql e quindi connetterti all'istanza per creare un database. Puoi scoprire di più su questo approccio qui.

In questo lab creerai un nuovo database AlloyDB utilizzando un job Cloud Run.

Esamina i file di seguito:

  • Dockerfile - installa le dipendenze richieste(postgresql-client)
  • script.sh: utilizza le utilità della riga di comando per creare un database

In Cloud Shell, crea una nuova cartella:

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

Crea nuovo file 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

Crea un nuovo file script.sh con i contenuti seguenti:

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

psql -h $DB_HOST -l

Modifica l'autorizzazione su script.sh:

chmod +x script.sh

5. Esegui il deployment del job Cloud Run

Configura l'accesso VPC serverless. Ciò consente al job Cloud Run di comunicare con il cluster AlloyDB tramite IP interno/privato. Questo passaggio richiede circa 2 minuti.

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

Crea il repository Artifact Registry per archiviare le immagini container.

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

Crea e pubblica l'immagine container in Artifact Registry.

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

Eseguire il deployment del job 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

Esamina i flag utilizzati per creare il job:

--vpc-connector - Il job Cloud Run utilizzerà il connettore VPC per raggiungere l'indirizzo IP privato di AlloyDB.

Rivedi il job creato nella console Cloud.

93d8224eca8c687f.png

Esegui il job Cloud Run per creare il database test.

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

Esamina i log dei job Cloud Run nella console Cloud.

3f2269736b53f44c.png

6. Complimenti!

Complimenti, hai completato il codelab.

Argomenti trattati:

  • Creare un cluster e un'istanza AlloyDB
  • Creare un database AlloyDB utilizzando un job Cloud Run

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Elimina il progetto

Il modo più semplice per eliminare la fatturazione è quello di eliminare il progetto che hai creato per il tutorial.