Introducció a Cloud Run

Cloud Run és un servei de Google Cloud Platform que permet desplegar i gestionar aplicacions contenidoritzades de manera fàcil i escalable. Amb Cloud Run, pots executar aplicacions en contenidors sense necessitat de gestionar la infraestructura subjacent. Això permet als desenvolupadors centrar-se en el codi i la lògica de l'aplicació, mentre Google s'encarrega de l'escalabilitat, la disponibilitat i la gestió de recursos.

Característiques clau de Cloud Run

  • Execució de contenidors: Cloud Run permet desplegar qualsevol aplicació que pugui ser empaquetada en un contenidor Docker.
  • Escalabilitat automàtica: Les aplicacions desplegades amb Cloud Run escalen automàticament segons la demanda, des de zero fins a milers de instàncies.
  • Pagament per ús: Només pagues pels recursos que utilitzes quan la teva aplicació està en execució.
  • Integració amb altres serveis de GCP: Cloud Run es pot integrar fàcilment amb altres serveis de Google Cloud, com ara Cloud Pub/Sub, Cloud Storage i Firestore.

Desplegant una aplicació amb Cloud Run

Pas 1: Preparar l'aplicació

Per començar, necessitem una aplicació empaquetada en un contenidor Docker. A continuació, es mostra un exemple d'una aplicació simple en Python utilitzant Flask.

Dockerfile:

# Utilitza una imatge base de Python
FROM python:3.8-slim

# Estableix el directori de treball
WORKDIR /app

# Copia els fitxers de requeriments i instal·la les dependències
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

# Copia el codi de l'aplicació
COPY . .

# Exposa el port 8080
EXPOSE 8080

# Defineix el punt d'entrada de l'aplicació
CMD ["python", "app.py"]

app.py:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "Hola, món!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

requirements.txt:

Flask==1.1.2

Pas 2: Construir i pujar la imatge del contenidor

Primer, hem de construir la imatge Docker i pujar-la a Google Container Registry (GCR).

# Autentica't amb Google Cloud
gcloud auth login

# Configura el projecte de GCP
gcloud config set project [PROJECT_ID]

# Construir la imatge Docker
docker build -t gcr.io/[PROJECT_ID]/hello-world .

# Pujar la imatge a Google Container Registry
docker push gcr.io/[PROJECT_ID]/hello-world

Pas 3: Desplegar l'aplicació amb Cloud Run

Ara que la imatge està pujada a GCR, podem desplegar-la amb Cloud Run.

# Desplegar l'aplicació amb Cloud Run
gcloud run deploy hello-world \
  --image gcr.io/[PROJECT_ID]/hello-world \
  --platform managed \
  --region us-central1 \
  --allow-unauthenticated

Pas 4: Accedir a l'aplicació

Després de desplegar l'aplicació, Cloud Run proporcionarà una URL pública per accedir-hi. Pots visitar aquesta URL al teu navegador per veure l'aplicació en funcionament.

Exercicis pràctics

Exercici 1: Desplegar una aplicació Node.js amb Cloud Run

  1. Crea una aplicació simple en Node.js que respongui amb "Hola, món!".
  2. Escriu un Dockerfile per empaquetar l'aplicació.
  3. Segueix els passos per construir, pujar i desplegar la imatge amb Cloud Run.

Exercici 2: Integrar Cloud Run amb Cloud Pub/Sub

  1. Crea una aplicació que processi missatges de Cloud Pub/Sub.
  2. Desplega l'aplicació amb Cloud Run.
  3. Configura un tema de Cloud Pub/Sub per enviar missatges a l'aplicació desplegada.

Solucions

Solució a l'Exercici 1

app.js:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hola, món!');
});

const port = process.env.PORT || 8080;
app.listen(port, () => {
  console.log(`App listening on port ${port}`);
});

Dockerfile:

# Utilitza una imatge base de Node.js
FROM node:14

# Estableix el directori de treball
WORKDIR /app

# Copia el package.json i instal·la les dependències
COPY package*.json ./
RUN npm install

# Copia el codi de l'aplicació
COPY . .

# Exposa el port 8080
EXPOSE 8080

# Defineix el punt d'entrada de l'aplicació
CMD ["node", "app.js"]

Comandes per construir, pujar i desplegar:

# Construir la imatge Docker
docker build -t gcr.io/[PROJECT_ID]/hello-world-node .

# Pujar la imatge a Google Container Registry
docker push gcr.io/[PROJECT_ID]/hello-world-node

# Desplegar l'aplicació amb Cloud Run
gcloud run deploy hello-world-node \
  --image gcr.io/[PROJECT_ID]/hello-world-node \
  --platform managed \
  --region us-central1 \
  --allow-unauthenticated

Conclusió

En aquesta secció, hem après com desplegar aplicacions contenidoritzades amb Cloud Run, aprofitant la seva escalabilitat automàtica i la integració amb altres serveis de Google Cloud. Hem vist un exemple pràctic amb una aplicació en Python i hem proporcionat exercicis per reforçar els conceptes apresos. Amb Cloud Run, els desenvolupadors poden centrar-se en el desenvolupament de les seves aplicacions sense preocupar-se per la gestió de la infraestructura.

© Copyright 2024. Tots els drets reservats