Instrucciones y requisitos de configuración del lab
Protege tu cuenta y tu progreso. Usa siempre una ventana de navegador privada y las credenciales del lab para ejecutarlo.

Conecta una app a una instancia de Cloud SQL para PostgreSQL

Lab 35 minutos universal_currency_alt 1 crédito show_chart Introductorio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Este contenido aún no está optimizado para dispositivos móviles.
Para obtener la mejor experiencia, visítanos en una computadora de escritorio con un vínculo que te enviaremos por correo electrónico.

GSP919

Logotipo de los labs de autoaprendizaje de Google Cloud

Descripción general

Cloud SQL es un servicio de base de datos relacional completamente administrado para MySQL, PostgreSQL y Microsoft SQL Server que ofrece muchos servicios para tareas administrativas comunes, como copias de seguridad, replicación y registro. Puedes conectar fácilmente tus aplicaciones a una instancia de Cloud SQL para aprovechar estos servicios útiles.

En este lab, primero crearás un clúster de Kubernetes y, luego, implementarás una aplicación simple en él. Después, conectarás la aplicación a una instancia de Cloud SQL para PostgreSQL proporcionada y confirmarás que pueda escribir en ella y leerla.

Actividades

  • Crear un clúster de Kubernetes e implementar una aplicación simple en él
  • Conectar la aplicación a la instancia de base de datos de Cloud SQL para PostgreSQL proporcionada
  • Confirmar que la aplicación pueda escribir en la base de datos y leerla

Configuración y requisitos

Antes de hacer clic en el botón Comenzar lab

Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.

Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.

Para completar este lab, necesitarás lo siguiente:

  • Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
  • Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.

Cómo iniciar tu lab y acceder a la consola de Google Cloud

  1. Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago. A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:

    • El botón para abrir la consola de Google Cloud
    • El tiempo restante
    • Las credenciales temporales que debes usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).

    El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.

    Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
  3. De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.

    {{{user_0.username | "Username"}}}

    También puedes encontrar el nombre de usuario en el panel Detalles del lab.

  4. Haz clic en Siguiente.

  5. Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.

    {{{user_0.password | "Password"}}}

    También puedes encontrar la contraseña en el panel Detalles del lab.

  6. Haz clic en Siguiente.

    Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud. Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
  7. Haz clic para avanzar por las páginas siguientes:

    • Acepta los Términos y Condiciones.
    • No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No te registres para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.

Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar. Ícono del menú de navegación y campo de búsqueda

Activa Cloud Shell

Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. Haz clic en Activar Cloud Shell Ícono de Activar Cloud Shell en la parte superior de la consola de Google Cloud.

  2. Haz clic para avanzar por las siguientes ventanas:

    • Continúa en la ventana de información de Cloud Shell.
    • Autoriza a Cloud Shell para que use tus credenciales para realizar llamadas a la API de Google Cloud.

Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu Project_ID, . El resultado contiene una línea que declara el Project_ID para esta sesión:

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.

  1. Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
  1. Haz clic en Autorizar.

Resultado:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project

Resultado:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Nota: Para obtener toda la documentación de gcloud, en Google Cloud, consulta la guía con la descripción general de gcloud CLI.

Configura tu región y zona

Algunos recursos de Compute Engine se encuentran en regiones y zonas. Una región es una ubicación geográfica específica donde puedes ejecutar tus recursos. Cada región tiene una o más zonas.

Ejecuta los siguientes comandos de gcloud en Cloud Shell para establecer la región y la zona predeterminadas de tu lab:

gcloud config set compute/zone "{{{project_0.default_zone|ZONE}}}" export ZONE=$(gcloud config get compute/zone) gcloud config set compute/region "{{{project_0.default_region|REGION}}}" export REGION=$(gcloud config get compute/region)

Tarea 1: Inicializa las APIs y crea una cuenta de servicio de Cloud IAM

Para completar esta tarea, debes inicializar las APIs y crear una cuenta de servicio de IAM, que se usará para permitir que tu aplicación se conecte a la base de datos de Cloud SQL.

Habilita las APIs

Debes habilitar las APIs necesarias para este lab. Crearás y enviarás un contenedor a Artifact Registry en una tarea posterior, por lo que primero deberás habilitar la API de Artifact Registry.

  1. En Cloud Shell, ejecuta el siguiente comando para habilitar la API de Artifact Registry:
gcloud services enable artifactregistry.googleapis.com

Crea una cuenta de servicio para Cloud SQL

Debes configurar las credenciales de la cuenta de servicio de IAM para la aplicación que implementarás más adelante. Esa cuenta debe estar vinculada a un rol que le permita crear bases de datos de Cloud SQL y acceder a ellas.

  1. En Cloud Shell, crea una cuenta de servicio y vincúlala al rol de administrador de Cloud SQL en el proyecto del lab:
export PROJECT_ID=$(gcloud config list --format 'value(core.project)') export CLOUDSQL_SERVICE_ACCOUNT=cloudsql-service-account gcloud iam service-accounts create $CLOUDSQL_SERVICE_ACCOUNT --project=$PROJECT_ID gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$CLOUDSQL_SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudsql.admin"
  1. En Cloud Shell, crea y exporta claves a un archivo local:
gcloud iam service-accounts keys create $CLOUDSQL_SERVICE_ACCOUNT.json \ --iam-account=$CLOUDSQL_SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \ --project=$PROJECT_ID

El archivo se guardará en tu carpeta principal en Cloud Shell.

Haz clic en Revisar mi progreso para verificar el objetivo. Crear una cuenta de servicio de IAM para Cloud SQL

Tarea 2: Implementa una aplicación ligera de GKE

En esta tarea, crearás un clúster de Kubernetes y, luego, implementarás una aplicación ligera de Google Kubernetes Engine (GKE) en el clúster. Luego, configurarás la aplicación para que tenga acceso a la instancia de Cloud SQL proporcionada.

La app proporcionada es una aplicación web simple de Flask-SQLAlchemy llamada gMemegen. Crea memes proporcionando un conjunto de fotografías y capturando texto de encabezado y pie de página, que luego almacena en la base de datos y, por último, renderiza los memes en una carpeta local. Se ejecuta en un solo Pod con dos contenedores: uno para la aplicación y otro para el proxy de autenticación de Cloud SQL implementado en el patrón sidecar.

Un balanceador de cargas organizará las solicitudes entre la app y la base de datos a través del sidecar y expondrá una dirección IP externa de Ingress a través de la cual accederás a la app en tu navegador.

Crea un clúster de Kubernetes

En este paso, crearás un clúster de Kubernetes mínimo, cuya implementación tardará unos minutos.

  1. En Cloud Shell, crea el clúster de la siguiente manera:
ZONE={{{project_0.default_zone|ZONE}}} gcloud container clusters create postgres-cluster \ --zone=$ZONE --num-nodes=2

Crea Secrets de Kubernetes para el acceso a la base de datos

En este paso, crearás un par de Secrets de Kubernetes que contendrán las credenciales necesarias para conectarse a la instancia y a la base de datos de Cloud SQL.

  1. En Cloud Shell, ejecuta los siguientes comandos para crear los Secrets:
kubectl create secret generic cloudsql-instance-credentials \ --from-file=credentials.json=$CLOUDSQL_SERVICE_ACCOUNT.json kubectl create secret generic cloudsql-db-credentials \ --from-literal=username=postgres \ --from-literal=password=supersecret! \ --from-literal=dbname=gmemegen_db

Descarga y crea el contenedor de la aplicación de GKE

Antes de implementar la aplicación de gMemegen en tu clúster de GKE, debes crear el contenedor y enviarlo a un repositorio.

  1. En Cloud Shell, descarga el código de aplicación proporcionado y cambia al directorio de la aplicación:
gsutil -m cp -r gs://spls/gsp919/gmemegen . cd gmemegen
  1. Crea variables de entorno para la región, el ID del proyecto y el repositorio de Artifact Registry:
export REGION={{{ project_0.default_region | "REGION" }}} export PROJECT_ID=$(gcloud config list --format 'value(core.project)') export REPO=gmemegen
  1. Configura la autenticación de Docker para Artifact Registry:
gcloud auth configure-docker ${REGION}-docker.pkg.dev
  • Ingresa Y si se te solicita una confirmación.
  1. Crea el repositorio de Artifact Registry:
gcloud artifacts repositories create $REPO \ --repository-format=docker --location=$REGION
  1. Crea una imagen de Docker local:
docker build -t ${REGION}-docker.pkg.dev/${PROJECT_ID}/gmemegen/gmemegen-app:v1 .

Para los fines de este lab, puedes ignorar la advertencia sobre la ejecución de "pip" como usuario "raíz", aunque debes tener en cuenta que, en general, se recomienda usar un entorno virtual, sobre todo cuando trabajas en tu máquina local.

  1. Envía la imagen a Artifact Registry:
docker push ${REGION}-docker.pkg.dev/${PROJECT_ID}/gmemegen/gmemegen-app:v1

Configura e implementa la aplicación de GKE

Debes modificar el manifiesto de implementación de Kubernetes para que la aplicación de gMemegen apunte al contenedor correcto. Luego, configura el contenedor secundario del proxy de sidecar de Cloud SQL con la cadena de conexión de la instancia de Cloud SQL PostgreSQL.

En las instrucciones, se explica cómo modificar el archivo con el Editor de Cloud Shell, pero, si lo prefieres, puedes usar otro editor (como vi o nano) desde Cloud Shell para estos pasos.

  1. En la barra de menú de Cloud Shell, haz clic en Open Editor para abrir el editor de Cloud Shell.

  2. Navega por el panel Explorer del lado izquierdo, expande la carpeta gmemegen y, luego, selecciona gmemegen_deployment.yaml para editar el archivo.

  3. En la línea 33, en el atributo image, reemplaza ${REGION} por y ${PROJECT_ID} por . La línea debería verse así:

image: {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/{{{ project_0.project_id | "Project ID" }}}/gmemegen/gmemegen-app:v1
  1. En la línea 60, reemplaza ${REGION} por y ${PROJECT_ID} por . La línea debería verse así:
-instances={{{ project_0.project_id | "Project ID" }}}:{{{ project_0.default_region | "REGION" }}}:postgres-gmemegen=tcp:5432

Para confirmar que el nombre de la conexión es correcto, en la consola de Cloud, ve a Bases de datos > SQL, selecciona la instancia postgres-gmemegen y compárala con el Nombre de la conexión en el panel Resumen. Un nombre de conexión válido tiene el formato PROJECT_ID:REGION:CLOUD_SQL_INSTANCE_ID.

  1. Para guardar los cambios, selecciona File > Save en el menú del Editor de Cloud Shell.

  2. En la consola de Cloud, haz clic en Abrir terminal para volver a abrir Cloud Shell. Es posible que debas cambiar el tamaño de la ventana de terminal arrastrando el controlador que se encuentra en la parte superior central de la barra de menú para ver la ventana de la consola de Cloud arriba.

  3. En Cloud Shell, vuelve a implementar la aplicación ejecutando el siguiente comando:

kubectl create -f gmemegen_deployment.yaml
  1. En Cloud Shell, ejecuta el siguiente comando para verificar que la implementación se haya realizado correctamente:
kubectl get pods

Puede que los Pods tarden alrededor de un minuto en iniciarse, ya que deben extraer la imagen del repositorio. Repite el comando anterior hasta que veas un Pod con 2 contenedores y el estado Running.

Haz clic en Revisar mi progreso para verificar el objetivo. Implementar una aplicación ligera de GKE

Tarea 3: Conecta la aplicación de GKE a un balanceador de cargas externo

En esta tarea, crearás un balanceador de cargas para organizar las solicitudes entre los contenedores de tus Pods de GKE y acceder a la aplicación con su dirección IP externa desde tu navegador.

Crea un balanceador de cargas para acceder a tu aplicación de GKE desde la Web

En este paso, crearás un servicio de balanceador de cargas de Kubernetes que le proporcionará a tu aplicación una dirección IP pública.

  1. En Cloud Shell, ejecuta el siguiente comando, que creará un balanceador de cargas para la aplicación:
kubectl expose deployment gmemegen \ --type "LoadBalancer" \ --port 80 --target-port 8080

Prueba la aplicación para generar algunos datos

En este paso, accederás a la aplicación de gMemegen desde tu navegador web.

Esta tiene una interfaz muy simple. Se inicia con una página principal en la que se muestran 6 imágenes candidatas para crear memes. Selecciona una imagen haciendo clic en ella.

Esto te lleva a la página Create meme, en la que debes ingresar dos elementos de texto para que se muestren en las partes superior e inferior de la imagen. Si haces clic en Submit, se renderizará el meme y se mostrará. La interfaz no proporciona ninguna opción de navegación desde la página del meme completado. Deberás usar el botón Atrás del navegador para regresar a la página principal.

Hay otras dos páginas, Recent y Random, en las que se muestran un conjunto de memes generados recientemente y un meme aleatorio, respectivamente. Crear memes y navegar por la IU generará actividad en la base de datos que podrás ver en los registros, como se describe a continuación.

Espera a que el balanceador de cargas exponga una IP externa, que puedes recuperar de la siguiente manera:

  1. En Cloud Shell, copia el atributo de dirección IP externa de LoadBalancer Ingress del siguiente resultado:
kubectl describe service gmemegen

Resultado:

Name: gmemegen Namespace: default Labels: app=gmemegen Annotations: Selector: app=gmemegen Type: LoadBalancer IP Families: IP: 10.3.240.201 IPs: 10.3.240.201 LoadBalancer Ingress: 34.67.122.203 Port: 80/TCP TargetPort: 8080/TCP NodePort: 31837/TCP Endpoints: 10.0.0.7:8080 Session Affinity: None External Traffic Policy: Cluster Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal EnsuringLoadBalancer 85s service-controller Ensuring load balancer Normal EnsuredLoadBalancer 36s service-controller Ensured load balancer

El atributo LoadBalancer Ingress tardará aproximadamente un minuto en incluirse en el resultado (consulta el ejemplo anterior), así que repite el comando hasta que aparezca antes de avanzar al siguiente paso.

  1. En un navegador, ve a la dirección IP de Ingress del balanceador de cargas.

Puedes crear un vínculo en el que se pueda hacer clic que lleve a la dirección IP externa del balanceador de cargas en Cloud Shell con los siguientes comandos:

export LOAD_BALANCER_IP=$(kubectl get svc gmemegen \ -o=jsonpath='{.status.loadBalancer.ingress[0].ip}' -n default) echo gMemegen Load Balancer Ingress IP: http://$LOAD_BALANCER_IP
  1. Haz clic en el vínculo en Cloud Shell. Verás la aplicación de gMemegen ejecutándose en una nueva pestaña del navegador.

  2. Crea un meme de la siguiente manera:

    • En la página Home, haz clic en una de las imágenes que se muestran.
    • Ingresa texto en los cuadros de texto Top y Bottom.
    • Haz clic en el botón Submit.

Se mostrará tu nuevo meme.

Meme de la app de GKE conectada a Cloud SQL.

  1. Si quieres crear más memes, usa el botón Atrás del navegador para volver a la página principal.

  2. Para ver los memes existentes, haz clic en Recent o Random en el menú de la aplicación. Ten en cuenta que Random abre una pestaña nueva del navegador.

  3. En Cloud Shell, ejecuta el siguiente comando para ver la actividad de la aplicación:

POD_NAME=$(kubectl get pods --output=json | jq -r ".items[0].metadata.name") kubectl logs $POD_NAME gmemegen | grep "INFO"

Este comando consulta los registros del contenedor gmemegen y muestra la actividad de la aplicación en el Pod, incluidas las sentencias de SQL, que se registran en stderr a medida que se ejecutan.

Haz clic en Revisar mi progreso para verificar el objetivo. Conectar la aplicación de GKE a un balanceador de cargas externo

Tarea 4: Verifica que la aplicación tenga capacidades completas de lectura y escritura en su base de datos

En esta tarea, verificarás que la aplicación pueda escribir en la base de datos y leerla.

Conéctate a la base de datos y consulta una tabla de aplicaciones

En este paso, te conectarás a la instancia de Cloud SQL ejecutando PL/SQL en Cloud Shell.

  1. En la consola de Google Cloud, ve a Bases de datos > SQL y selecciona la instancia postgres-gmemegen.

  2. En el panel Resumen, desplázate hacia abajo hasta Conectarse a esta instancia y haz clic en el botón Abrir Cloud Shell.

  3. Ejecuta el comando propagado automáticamente en Cloud Shell.

  4. Cuando se te solicite, ingresa la contraseña supersecret!.

  5. En el prompt postgres=>, ingresa el siguiente comando para seleccionar la base de datos gmemegen_db:

\c gmemegen_db
  1. Cuando se te solicite, ingresa la contraseña supersecret!.

  2. En el prompt gmemegen_db=>, ingresa lo siguiente:

select * from meme;

Se mostrará una fila para cada meme que hayas generado a través de la app de gMemegen.

Haz clic en Revisar mi progreso para verificar el objetivo. Verificar que la aplicación tenga capacidades completas de lectura y escritura en su base de datos

¡Felicitaciones!

En este lab, configuraste una aplicación para acceder a una base de datos de Cloud SQL para PostgreSQL. Creaste un clúster de Kubernetes e implementaste una aplicación simple de generación de memes en ese clúster. También conectaste la aplicación a la instancia de base de datos de Cloud SQL para PostgreSQL proporcionada y confirmaste que puede escribir en ella y leerla.

Capacitación y certificación de Google Cloud

Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.

Última actualización del manual: 28 de febrero de 2025

Prueba más reciente del lab: 28 de febrero de 2025

Copyright 2026 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Usa la navegación privada

  1. Copia el nombre de usuario y la contraseña proporcionados para el lab
  2. Haz clic en Abrir la consola en modo privado

Accede a la consola

  1. Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
  2. Acepta las condiciones y omite la página de recursos de recuperación
  3. No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto

Este contenido no está disponible en este momento

Te enviaremos una notificación por correo electrónico cuando esté disponible

¡Genial!

Nos comunicaremos contigo por correo electrónico si está disponible

Un lab a la vez

Confirma para finalizar todos los labs existentes y comenzar este

Usa la navegación privada para ejecutar el lab

Usar una ventana de incógnito o de navegación privada es la mejor forma de ejecutar este lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.