Aller au contenu principal

Bonnes pratiques


1 - Architecture

1.1 Organisation des projets

1.2 Naming conventions

RessourceConventionExemple
Projetenv-app-regionprod-myapp-eu
Cluster GKEenv-cluster-regionprod-cluster-euw1
Service Cloud Runapp-envapi-prod
Repository ARtype-purposedocker-images
Secretapp-env-namemyapp-prod-db-password

2 - Sécurité

2.1 Principle of Least Privilege

# Créer des rôles personnalisés avec permissions minimales
gcloud iam roles create cloudRunDeployer \
--project=mon-projet \
--permissions=run.services.get,run.services.update

# Utiliser Workload Identity plutôt que des clés de service account
gcloud container clusters update mon-cluster \
--workload-pool=mon-projet.svc.id.goog

2.2 VPC Service Controls

# Créer un périmètre de service
gcloud access-context-manager perimeters create my-perimeter \
--resources="projects/mon-projet" \
--restricted-services="artifactregistry.googleapis.com"

2.3 Secrets Management

# Utiliser Secret Manager
gcloud secrets create my-secret \
--replication-policy="automatic"

# Monter dans Cloud Run
gcloud run services update my-service \
--set-secrets="API_KEY=my-secret:latest"

2.4 Binary Authorization

# Policy pour n'autoriser que les images signées
defaultAdmissionRule:
evaluationMode: REQUIRE_ATTESTATION
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
requireAttestationsBy:
- projects/mon-projet/attestors/prod-attestor

3 - CI/CD

3.1 Pipeline pattern

# cloudbuild.yaml - Pipeline complet
steps:
# 1. Lint & Static Analysis
- name: 'node:18'
entrypoint: 'npm'
args: ['run', 'lint']

# 2. Tests
- name: 'node:18'
entrypoint: 'npm'
args: ['test', '--', '--coverage']

# 3. Build
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', '${_IMAGE}', '.']

# 4. Security Scan
- name: 'gcr.io/cloud-builders/gcloud'
args:
- 'artifacts'
- 'docker'
- 'images'
- 'scan'
- '${_IMAGE}'

# 5. Push
- name: 'gcr.io/cloud-builders/docker'
args: ['push', '${_IMAGE}']

# 6. Deploy (via Cloud Deploy)
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: 'gcloud'
args:
- 'deploy'
- 'releases'
- 'create'
- 'release-$SHORT_SHA'
- '--delivery-pipeline=my-pipeline'
- '--images=app=${_IMAGE}'

substitutions:
_IMAGE: 'europe-west1-docker.pkg.dev/$PROJECT_ID/images/app:$COMMIT_SHA'

options:
machineType: 'E2_HIGHCPU_8'

3.2 Environnements séparés

EnvironnementTriggerApproval
DevPush sur developNon
StagingPR mergée sur mainNon
ProductionTag v*Oui

4 - Coûts

4.1 Optimisation Cloud Run

# Min instances à 0 pour les services non-critiques
gcloud run services update my-service \
--min-instances=0 \
--max-instances=10

# CPU allocation only during requests
gcloud run services update my-service \
--cpu-throttling

4.2 Optimisation GKE

# Utiliser Autopilot pour optimiser automatiquement
# Ou configurer le cluster autoscaler
gcloud container clusters update mon-cluster \
--enable-autoscaling \
--min-nodes=0 \
--max-nodes=10

4.3 Cleanup policies

# Artifact Registry - supprimer les anciennes images
gcloud artifacts repositories set-cleanup-policies images \
--location=europe-west1 \
--policy=cleanup-policy.json

5 - Monitoring

5.1 Golden Signals

SignalMétrique GCP
Latencyrun.googleapis.com/request_latencies
Trafficrun.googleapis.com/request_count
Errorsrun.googleapis.com/request_count (5xx)
Saturationrun.googleapis.com/container/cpu/utilizations

5.2 Alertes essentielles

# Alertes recommandées
- name: High Error Rate
condition: error_rate > 1%
duration: 5m

- name: High Latency
condition: p99_latency > 1s
duration: 5m

- name: Service Down
condition: uptime_check_failed
duration: 1m

5.3 SLO

# SLO recommandé
availability: 99.9%
latency_p99: < 500ms

6 - Checklist production

Infrastructure

  • VPC avec subnets privés
  • Firewall rules restrictives
  • VPC Service Controls
  • Binary Authorization

CI/CD

  • Build triggers configurés
  • Tests automatisés
  • Security scanning
  • Cloud Deploy pour CD

Monitoring

  • Dashboards configurés
  • Alertes sur Golden Signals
  • Uptime checks
  • Log-based metrics

Sécurité

  • Workload Identity activé
  • Secrets dans Secret Manager
  • IAM avec least privilege
  • Audit logs activés

7 - Architecture de référence


Résumé

Dans ce chapitre, nous avons couvert :

  • L'organisation des projets GCP
  • Les bonnes pratiques de sécurité
  • Les patterns CI/CD
  • L'optimisation des coûts
  • Le monitoring et alerting
  • Une checklist de production

Prochaine étape

Dans le prochain chapitre, nous mettrons en pratique avec des Exercices et Projets.

→ Chapitre suivant : Exercices et Projets


← Retour à la table des matières