Acerca de este codelab
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.
Qué aprenderás
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
Configuración del proyecto de Cloud
- 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.
- 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.
- 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.
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.
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.
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.
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.