Skip to content
Learni
Voir tous les tutoriels
DevOps & Cloud

Comment déployer des applications sur Cloud Run en 2026

Read in English

Introduction

Cloud Run permet d'exécuter des conteneurs sans serveur sur l'infrastructure Google. Ce tutoriel expert couvre le déploiement d'une API Node.js avec scaling automatique, authentification IAM fine et intégration CI/CD. Vous apprendrez à optimiser les coûts et la latence en production.

Prérequis

  • Compte Google Cloud avec facturation activée
  • SDK gcloud installé (version 450+)
  • Docker et Node.js 20+
  • Connaissances avancées en conteneurs et IAM

Initialisation du projet

terminal
gcloud config set project mon-projet-12345
gcloud services enable run.googleapis.com cloudbuild.googleapis.com artifactregistry.googleapis.com

Active les APIs nécessaires et définit le projet cible. Évitez les erreurs de permission en activant ces services avant tout déploiement.

Création du Dockerfile

Dockerfile
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 8080
CMD ["node", "server.js"]

Image minimale Alpine pour réduire la taille. Le port 8080 est obligatoire pour Cloud Run. Utilisez npm ci pour des builds reproductibles.

Application Node.js minimale

server.js
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('Cloud Run 2026'));
const port = process.env.PORT || 8080;
app.listen(port, () => console.log(`Running on ${port}`));

Application Express basique qui écoute sur PORT fourni par Cloud Run. Toujours utiliser process.env.PORT.

Déploiement initial

terminal
gcloud run deploy mon-api \
  --source . \
  --region europe-west1 \
  --allow-unauthenticated \
  --memory 512Mi \
  --cpu 1

Déploiement direct depuis le code source avec Cloud Build intégré. Spécifiez région, mémoire et CPU pour contrôler les coûts et performances.

Configuration service.yaml avancée

service.yaml
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: mon-api
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/maxScale: "100"
        run.googleapis.com/cpu-throttling: "false"
    spec:
      containerConcurrency: 80
      containers:
      - image: europe-west1-docker.pkg.dev/mon-projet-12345/cloud-run/mon-api
        resources:
          limits:
            memory: 1Gi
            cpu: 2

Fichier de configuration pour scaling précis, désactivation du throttling CPU et limites de ressources. Utilisez-le avec gcloud run services replace.

Pipeline CI/CD avec Cloud Build

cloudbuild.yaml
steps:
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'europe-west1-docker.pkg.dev/$PROJECT_ID/cloud-run/mon-api:$SHORT_SHA', '.']
- name: 'gcr.io/cloud-builders/docker'
  args: ['push', 'europe-west1-docker.pkg.dev/$PROJECT_ID/cloud-run/mon-api:$SHORT_SHA']
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
  entrypoint: gcloud
  args: ['run', 'deploy', 'mon-api', '--image', 'europe-west1-docker.pkg.dev/$PROJECT_ID/cloud-run/mon-api:$SHORT_SHA', '--region', 'europe-west1']

Pipeline complet qui build, push et déploie automatiquement. Déclenchez-le via un trigger sur push Git.

Bonnes pratiques

  • Utilisez toujours des images immuables avec digest SHA
  • Configurez IAM avec des comptes de service dédiés
  • Activez le scaling à zéro pour minimiser les coûts
  • Surveillez avec Cloud Monitoring et alertes
  • Testez les cold starts avec des requêtes synthétiques

Erreurs courantes

  • Oublier d'exposer le port 8080 dans le conteneur
  • Permissions IAM insuffisantes sur le compte de service
  • Limites de mémoire trop basses causant des OOM
  • Ne pas configurer les timeouts de requête pour les tâches longues

Pour aller plus loin

Approfondissez avec nos formations Cloud Run avancées.