Compute Engine est le service IaaS de Google Cloud permettant de créer et gérer des machines virtuelles. Il offre une flexibilité totale sur la configuration matérielle, l'OS et les applications installées.
Exemple pratique - Création d'une instance web :
gcloud compute instances create web-server \
--image-family=ubuntu-2004-lts \
--image-project=ubuntu-os-cloud \
--machine-type=e2-medium \
--zone=us-central1-a \
--tags=http-server \
--metadata=startup-script='#!/bin/bash
apt-get update
apt-get install -y apache2
systemctl start apache2'
Cloud Run permet d'exécuter des conteneurs stateless de manière serverless. Il gère automatiquement la mise à l'échelle, y compris jusqu'à zéro instance.
Scénario - Déploiement d'une API Node.js :
# Build et push de l'image
docker build -t gcr.io/PROJECT_ID/api-service .
docker push gcr.io/PROJECT_ID/api-service
# Déploiement sur Cloud Run
gcloud run deploy api-service \
--image=gcr.io/PROJECT_ID/api-service \
--platform=managed \
--region=us-central1 \
--allow-unauthenticated \
--set-env-vars="DB_HOST=127.0.0.1,DB_PORT=5432"
GKE est le service Kubernetes managé de Google Cloud. Il simplifie le déploiement, la gestion et la mise à l'échelle d'applications conteneurisées.
Exemple - Création d'un cluster GKE :
# Création du cluster
gcloud container clusters create production-cluster \
--num-nodes=3 \
--machine-type=e2-standard-4 \
--zone=us-central1-a \
--enable-autoscaling \
--min-nodes=1 \
--max-nodes=10 \
--enable-autorepair \
--enable-autoupgrade
# Configuration de kubectl
gcloud container clusters get-credentials production-cluster --zone=us-central1-a
# Déploiement d'une application
kubectl create deployment nginx --image=nginx:1.21
kubectl expose deployment nginx --type=LoadBalancer --port=80
Cloud Functions exécute du code en réponse à des événements sans gestion de serveur. Idéal pour des tâches courtes et événementielles.
Scénario - Traitement d'images uploadées :
import functions_framework
from google.cloud import storage
from PIL import Image
import io
@functions_framework.cloud_event
def process_image(cloud_event):
# Récupération des données de l'événement
data = cloud_event.data
bucket_name = data['bucket']
file_name = data['name']
# Traitement uniquement des images
if not file_name.lower().endswith(('.png', '.jpg', '.jpeg')):
return
# Création du thumbnail
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(file_name)
# Téléchargement et redimensionnement
image_data = blob.download_as_bytes()
image = Image.open(io.BytesIO(image_data))
image.thumbnail((200, 200))
# Upload du thumbnail
thumbnail_blob = bucket.blob(f"thumbnails/{file_name}")
thumbnail_buffer = io.BytesIO()
image.save(thumbnail_buffer, format='JPEG')
thumbnail_blob.upload_from_string(thumbnail_buffer.getvalue())
Déploiement de la fonction :
gcloud functions deploy process-image \
--gen2 \
--runtime=python311 \
--region=us-central1 \
--source=. \
--entry-point=process_image \
--trigger-bucket=my-upload-bucket \
--memory=512MB \
--timeout=300s
Le choix entre ces services dépend de vos besoins spécifiques :
1. Quel service est le plus approprié pour une application web qui doit gérer des pics de trafic imprévisibles et redescendre à zéro durant les périodes creuses ?
Cloud Run - Il offre un scaling automatique jusqu'à zéro, idéal pour des charges variables avec facturation pay-per-use.
2. Quelle commande permet de créer un cluster GKE avec autoscaling activé ?
gcloud container clusters create [CLUSTER_NAME] --enable-autoscaling --min-nodes=1 --max-nodes=10
3. Quelle est la durée maximale d'exécution d'une Cloud Function de 2ème génération ?
60 minutes (3600 secondes) pour les fonctions génération 2, contre 9 minutes pour la génération 1.
Choisis quels cookies tu acceptes — modifiable à tout moment.