Introducción
Cloud Run es un servicio de Google Cloud Platform que permite ejecutar aplicaciones en contenedores sin necesidad de gestionar servidores. Es ideal para aplicaciones que necesitan escalar rápidamente y manejar cargas de trabajo variables. En este módulo, aprenderás cómo desplegar y gestionar aplicaciones en Cloud Run.
Objetivos del Módulo
- Comprender qué es Cloud Run y sus beneficios.
- Aprender a desplegar una aplicación en Cloud Run.
- Configurar y gestionar servicios en Cloud Run.
- Implementar prácticas de seguridad y optimización en Cloud Run.
¿Qué es Cloud Run?
Cloud Run es un servicio de computación sin servidor que permite ejecutar contenedores HTTP en una infraestructura totalmente gestionada. Ofrece las siguientes ventajas:
- Escalabilidad automática: Escala automáticamente desde cero hasta miles de instancias según la demanda.
- Pago por uso: Solo pagas por los recursos que tu aplicación consume.
- Despliegue sencillo: Despliega contenedores con un solo comando.
- Integración con otros servicios de GCP: Fácil integración con otros servicios como Cloud Pub/Sub, Cloud Storage, y más.
Desplegando una Aplicación en Cloud Run
Paso 1: Preparar el Entorno
-
Instalar Google Cloud SDK:
curl https://sdk.cloud.google.com | bash exec -l $SHELL gcloud init
-
Autenticar con tu cuenta de GCP:
gcloud auth login
-
Configurar el proyecto:
gcloud config set project [PROJECT_ID]
Paso 2: Crear una Aplicación en Contenedor
Para este ejemplo, usaremos una simple aplicación en Python con Flask.
-
Crear el archivo
app.py
:from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello, World!' if __name__ == '__main__': app.run(host='0.0.0.0', port=8080)
-
Crear el archivo
Dockerfile
:# Use the official Python image from the Docker Hub FROM python:3.8-slim # Set the working directory WORKDIR /app # Copy the current directory contents into the container at /app COPY . /app # Install any needed packages specified in requirements.txt RUN pip install flask # Make port 8080 available to the world outside this container EXPOSE 8080 # Define environment variable ENV NAME World # Run app.py when the container launches CMD ["python", "app.py"]
Paso 3: Construir y Subir la Imagen del Contenedor
-
Construir la imagen del contenedor:
docker build -t gcr.io/[PROJECT_ID]/hello-world .
-
Autenticar Docker con el registro de contenedores de Google:
gcloud auth configure-docker
-
Subir la imagen al Container Registry:
docker push gcr.io/[PROJECT_ID]/hello-world
Paso 4: Desplegar en Cloud Run
-
Desplegar la aplicación en Cloud Run:
gcloud run deploy hello-world
--image gcr.io/[PROJECT_ID]/hello-world
--platform managed
--region us-central1
--allow-unauthenticated -
Acceder a la URL proporcionada por Cloud Run.
Configuración y Gestión de Servicios en Cloud Run
Configuración de Variables de Entorno
Puedes configurar variables de entorno para tu servicio:
Escalabilidad y Concurrencia
Puedes ajustar la configuración de escalabilidad y concurrencia:
Seguridad
Autenticación
Para requerir autenticación en tu servicio:
IAM Roles
Asignar roles específicos a usuarios o cuentas de servicio:
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member=serviceAccount:[SERVICE_ACCOUNT_EMAIL] \ --role=roles/run.invoker
Ejercicio Práctico
Descripción del Ejercicio
Despliega una aplicación Node.js en Cloud Run que responda con "Hello, Cloud Run!".
Solución
-
Crear el archivo
index.js
:const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('Hello, Cloud Run!'); }); const port = process.env.PORT || 8080; app.listen(port, () => { console.log(`Server running on port ${port}`); });
-
Crear el archivo
Dockerfile
:FROM node:14 WORKDIR /app COPY . /app RUN npm install EXPOSE 8080 CMD ["node", "index.js"]
-
Construir y subir la imagen:
docker build -t gcr.io/[PROJECT_ID]/hello-cloud-run . docker push gcr.io/[PROJECT_ID]/hello-cloud-run
-
Desplegar en Cloud Run:
gcloud run deploy hello-cloud-run
--image gcr.io/[PROJECT_ID]/hello-cloud-run
--platform managed
--region us-central1
--allow-unauthenticated
Conclusión
En este módulo, aprendiste a desplegar y gestionar aplicaciones en Cloud Run. Ahora puedes aprovechar la escalabilidad automática y la simplicidad de la computación sin servidor para tus aplicaciones. En el próximo módulo, exploraremos redes avanzadas en GCP.
Errores Comunes y Consejos Adicionales:
- Error: "Permission denied" al subir la imagen: Asegúrate de que Docker esté autenticado con el registro de contenedores de Google.
- Error: "Service not found" al desplegar: Verifica que el nombre del servicio y el ID del proyecto sean correctos.
- Consejo: Utiliza variables de entorno para gestionar configuraciones sensibles y evita hardcodearlas en tu código fuente.
¡Felicidades por completar este módulo! Ahora estás listo para explorar redes avanzadas en GCP.
Curso de Google Cloud Platform (GCP)
Módulo 1: Introducción a Google Cloud Platform
- ¿Qué es Google Cloud Platform?
- Configuración de tu cuenta de GCP
- Descripción general de la consola de GCP
- Comprensión de proyectos y facturación
Módulo 2: Servicios principales de GCP
Módulo 3: Redes y seguridad
Módulo 4: Datos y análisis
Módulo 5: Aprendizaje automático e IA
Módulo 6: DevOps y monitoreo
- Cloud Build
- Repositorios de código en la nube
- Cloud Functions
- Monitoreo de Stackdriver
- Cloud Deployment Manager
Módulo 7: Temas avanzados de GCP
- Híbrido y multi-nube con Anthos
- Computación sin servidor con Cloud Run
- Redes avanzadas
- Mejores prácticas de seguridad
- Gestión y optimización de costos