Cloud Run: implementar una app express.js

What is Cloud Run?

¿Qué es Cloud Run?

En Google Cloud Platform contamos con varios servicios PaaS clave para despliegues de DevOps. Cloud Run es una plataforma de despliegue de contenedores totalmente gestionada, nos permite ejecutar aplicaciones contenedorizadas sin tener que preocuparnos por la configuración de servidores. Solo necesitamos tener nuestro contenedor listo para ser desplegado.

Cloud Run es una oferta sin servidor que nos permite ejecutar contenedores sin estado que se pueden invocar. Como explican los Documentos, te permite “ejecutar tus servicios de frontend y backend, trabajos por lotes y cargas de trabajo de procesamiento de colas. Optimizado para la productividad del desarrollador y un inicio rápido de contenedores”.

Ventajas de Cloud Run

  • Escalado Automático: Escala el número de contenedores hacia arriba o hacia abajo basado en el tráfico, asegurando que solo uses (y pagues) por lo que necesitas.
  • Contenedorizado: Puede soportar cualquier lenguaje de programación y herramienta que puedas contener, ofreciendo mayor flexibilidad.
  • Integración CI/CD: Se integra bien con los pipelines de integración y despliegue continuos, facilitando la gestión de despliegues y su seguimiento hasta la producción.
  • Costo-Efectivo: Solo pagas por los recursos que utilizas e incluye una cuota gratuita.

Comencemos con el despliegue de nuestra app de ejemplo en js:

Configuración del ambiente

En este caso, vamos a utilizar Cloud Shell en un proyecto de muestra de GCP. Primero que nada, necesitaremos configurar el proyecto con el que vamos a trabajar:

gcloud config set project <tu-id-de-proyecto>

Habilita la API de Cloud Run:

gcloud services enable run.googleapis.com

Setup compute region:

gcloud config set compute/region us-central1

Luego, vamos a utilizar variables en la shell y guardar la ubicación

LOCATION="us-central1"
echo $LOCATION

Ahora vamos a clonar la app de ejemplo en js en este Repo

git clone https://github.com/mdiloreto/cloud-run-js-simple-app
cd cloud-run-js-simple-app
ls

Build Container Image

Ahora vamos a construir la imagen para Container Registry con Cloud Build utilizando el siguiente comando gcloud:

gcloud builds submit --tag gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld

$GOOGLE_CLOUD_PROJECT: es una variable de entorno que contiene tu id de proyecto. Se usa aquí para especificar el proyecto dentro del Registro de Contenedores de Google donde se almacenará la imagen.

Después de ejecutar el último comando podremos ver que la imagen fue creada usando el siguiente cmd:

gcloud container images list

Desplegar la imagen en Cloud Run

Ahora vamos a desplegar la imagen del contenedor en Cloud Run usando el siguiente cmd:

gcloud run deploy --image gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld --allow-unauthenticated --region=$LOCATION
  • El flag --allow-unauthenticated: configura el servicio desplegado para ser accesible sin autenticación. Esto significa que cualquier persona en internet puede acceder al servicio.
  • La flecha verde en la imagen indica la URL donde la app de Cloud Run es accesible:

¿Continous Deployment?

¿Despliegue Continuo? Cloud Run en sí no implementa automáticamente el despliegue continuo; está diseñado para ejecutar aplicaciones contenedorizadas y no monitorea por defecto tu registro de contenedores para actualizaciones. Sin embargo, puedes integrar Cloud Run con Google Cloud Build u otras herramientas de CI/CD para lograr un despliegue continuo.

Por ejemplo, podríamos usar:

Cloud Build para activar el CD: como puedes ver en este medium post de Sakshi Khandelwal


Posted

in

,

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.