Informazioni su questo codelab
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
- 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.
- 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.
- 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.
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.
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.
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.
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.