Crea una base de datos de AlloyDB con un trabajo de Cloud Run

Crea una base de datos de AlloyDB con un trabajo de Cloud Run

Acerca de este codelab

subjectÚltima actualización: ago 10, 2022
account_circleEscrito por Andrey Shakirov

1. Descripción general

En este lab, crearás una base de datos de AlloyDB con un trabajo de Cloud Run. Configurarás el Acceso privado a servicios y el Acceso a VPC sin servidores para habilitar la conectividad entre el trabajo de Cloud Run y la base de datos de AlloyDB a través de una IP privada.

En este lab, aprenderás a realizar las siguientes tareas:

  • Configura la instancia y el clúster de AlloyDB
  • Implementa trabajos de Cloud Run para crear una base de datos de AlloyDB

2. Configuración y requisitos

  1. Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla en cualquier momento.
  • El ID del proyecto debe ser único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. por lo general, no te importa qué es. En la mayoría de los codelabs, deberás hacer referencia al ID del proyecto (por lo general, se identifica como PROJECT_ID). Si no te gusta el ID generado, puedes generar otro aleatorio. También puedes probar el tuyo propio y ver si está disponible. No se puede cambiar después de este paso y se mantendrá mientras dure el proyecto.
  • Para tu información, hay un tercer valor, un número de proyecto que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
  1. A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no debería costar mucho, tal vez nada. Para cerrar recursos y evitar que se te facture más allá de este instructivo, puedes borrar los recursos que creaste o borrar todo el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de USD 300.

Configuración del entorno

Para activar Cloud Shell, haz clic en el ícono que se encuentra a la derecha de la barra de búsqueda.

eb0157a992f16fa3.png

Para habilitar las APIs de servicio, copia y pega el siguiente comando en la terminal y presiona Intro:

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

Establece las variables de entorno:

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 y crea un clúster de AlloyDB

Establece los permisos necesarios para la configuración. Esto permitirá que el trabajo de Cloud Run se conecte a la base de datos de AlloyDB.

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

Configura el acceso privado a servicios

El acceso privado a servicios se implementa como una conexión de intercambio de tráfico de VPC entre tu red de VPC y la red de VPC subyacente de Google Cloud en la que residen tus recursos de AlloyDB (instancias y clústeres). La conexión privada permite que los recursos de tu red de VPC se comuniquen con los recursos de AlloyDB a los que acceden solo a través de direcciones IP internas. Los recursos de tu red de VPC no necesitan acceso a Internet ni direcciones IP externas para llegar a los recursos de AlloyDB.

Para crear una configuración de acceso privado a servicios en una red de VPC que reside en el mismo proyecto de Cloud que AlloyDB, debes realizar dos operaciones:

Crea un rango de direcciones IP asignado en la red de VPC.

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

Crear una conexión privada entre la red de VPC y la red de VPC subyacente de Google Cloud Este paso tarda alrededor de 2 minutos.

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

Crea un clúster de 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

Crea una instancia de AlloyDB. Este paso tarda alrededor 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

Revisa el clúster creado en la consola de Cloud.

568d273c0e0d6408.png

Guardar la dirección IP de la base de datos en una variable""

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. Explora el código de trabajo de Cloud Run

Hay varias formas de crear una base de datos de AlloyDB. Una es crear una VM de Compute Engine, instalar un cliente psql y, luego, conectarte a la instancia para crear una base de datos. Puedes leer más acerca de este enfoque aquí.

En este lab, crearás una nueva base de datos de AlloyDB con un trabajo de Cloud Run.

Revisa los siguientes archivos:

  • Dockerfile: Instala las dependencias requeridas(postgresql-client)
  • script.sh: Usa utilidades de línea de comandos para crear una base de datos.

En Cloud Shell, crea una carpeta nueva:

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

Crea el archivo nuevo 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 archivo nuevo script.sh con el siguiente contenido:

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

psql
-h $DB_HOST -l

Cambia el permiso en script.sh:

chmod +x script.sh

5. Implementa trabajos de Cloud Run

Configura el Acceso a VPC sin servidores. Esto permite que el trabajo de Cloud Run se comunique con el clúster de AlloyDB con una IP interna/privada. Este paso tarda alrededor de 2 minutos.

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

Crear un repositorio de Artifact Registry para almacenar imágenes de contenedor

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

Compilar y publicar imágenes de contenedor en Artifact Registry

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

Implementar trabajos de 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

Revisa las marcas que se usaron para crear el trabajo:

--vpc-connector: El trabajo de Cloud Run usará el conector de VPC para llegar a la dirección IP privada de AlloyDB.

Revisa el trabajo creado en la consola de Cloud.

93d8224eca8c687f.png

Ejecutar el trabajo de Cloud Run para crear la base de datos test

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

Revisa los registros de trabajos de Cloud Run en Cloud Console.

3f2269736b53f44c.png

6. ¡Felicitaciones!

¡Felicitaciones! Completaste el codelab.

Temas abordados:

  • Cómo crear una instancia y un clúster de AlloyDB
  • Cómo crear una base de datos de AlloyDB con un trabajo de Cloud Run

Limpia

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.