GCP - Débutant : premiers pas dans le cloud Google
🎯 Objectifs
- ✅ Comprendre la hiérarchie GCP : organisation, dossiers, projets
- ✅ Configurer son compte GCP et la gcloud CLI
- ✅ Gérer les accès avec Cloud IAM et les comptes de service
- ✅ Créer et se connecter à une VM Compute Engine
- ✅ Stocker des fichiers dans Cloud Storage
📋 Prérequis
- Linux Débutant (ligne de commande, SSH)
- Un compte Google pour accéder à GCP
- Google Cloud Free Tier : 300$ de crédits pour 90 jours + services Always Free
☁️ Pourquoi GCP ?
Google Cloud Platform est le cloud de Google. Ses points forts sont l'infrastructure réseau mondiale de Google (fibre optique sous-marine, backbone privé), ses services de données (BigQuery, Pub/Sub, Dataflow) et l'IA/ML (Vertex AI, TPUs).
GCP est particulièrement adopté par les entreprises analytics, les startups tech et les organisations qui utilisent Google Workspace.
🌍 Infrastructure Mondiale GCP
GCP est organisé en régions, zones et multi-régions :
| Concept | Description | Exemple |
|---|---|---|
| Zone | Datacenter unique | europe-west9-a |
| Région | Ensemble de zones (≥3) dans une zone géographique | europe-west9 (Paris) |
| Multi-région | Groupe de régions pour la haute disponibilité | europe, us |
Quelques régions courantes :
| Région | Localisation |
|---|---|
europe-west9 | Paris, France |
europe-west1 | Belgique |
us-central1 | Iowa, USA |
asia-northeast1 | Tokyo, Japon |
🏗️ Hiérarchie GCP
Organisation (google.com ou votre domaine)
└── Dossiers (facultatifs, pour regrouper les projets)
└── Projets (unité de base : facturation, ressources, IAM)
└── Ressources (VMs, buckets, bases de données...)| Niveau | Rôle | Analogie |
|---|---|---|
| Organisation | Racine du tenant GCP | L'entreprise |
| Dossier | Regroupement logique de projets | Un département |
| Projet | Unité de facturation et d'isolation | Une application ou un env |
| Ressource | Service GCP (VM, bucket...) | Un serveur |
💡 Les projets sont l'unité clé de GCP. Chaque ressource appartient à un projet. Un projet a son propre numéro unique, son ID (choisi par vous) et son nom d'affichage.
🔐 Cloud IAM
Concepts IAM
| Concept | Description | Exemple |
|---|---|---|
| Principal | Qui fait la demande | Utilisateur, groupe, compte de service |
| Rôle | Ensemble de permissions | roles/storage.objectViewer |
| Binding | Association principal → rôle → ressource | Alice a le rôle Editor sur mon-projet |
Types de rôles
Rôles primitifs (héritage de l'ancienne API, à éviter en production) :
| Rôle | Accès |
|---|---|
roles/viewer | Lecture seule sur toutes les ressources |
roles/editor | Lecture + écriture (sauf IAM) |
roles/owner | Tout faire, y compris gérer les accès |
Rôles prédéfinis (recommandés) - exemples :
| Rôle | Service | Permissions |
|---|---|---|
roles/compute.instanceAdmin.v1 | Compute Engine | Gérer les VMs |
roles/storage.objectViewer | Cloud Storage | Lire les objets |
roles/container.developer | GKE | Déployer sur GKE |
Rôles personnalisés : créez vos propres rôles avec exactement les permissions nécessaires.
Comptes de Service
Un compte de service est une identité pour les applications (VMs, Cloud Functions, conteneurs) qui doivent accéder à d'autres services GCP.
# Créer un compte de service
gcloud iam service-accounts create mon-app-sa \
--description "Compte de service pour mon application" \
--display-name "Mon App SA"
# Assigner un rôle au compte de service
gcloud projects add-iam-policy-binding mon-projet-id \
--member serviceAccount:mon-app-sa@mon-projet-id.iam.gserviceaccount.com \
--role roles/storage.objectViewer
# Créer une clé JSON (à utiliser hors GCP seulement)
gcloud iam service-accounts keys create cle.json \
--iam-account mon-app-sa@mon-projet-id.iam.gserviceaccount.com⚠️ Évitez les clés JSON dès que possible. Sur une VM GCP, attachez directement le compte de service à la VM - elle obtiendra les tokens automatiquement via le metadata server.
🛠️ gcloud CLI
Installation et Configuration
# Installer le SDK GCP (Linux)
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
# Initialiser (connexion + sélection du projet par défaut)
gcloud init
# Se connecter manuellement
gcloud auth login
# Lister les projets disponibles
gcloud projects list
# Définir le projet par défaut
gcloud config set project mon-projet-id
# Définir la région et la zone par défaut
gcloud config set compute/region europe-west9
gcloud config set compute/zone europe-west9-a
# Vérifier la configuration active
gcloud config listCommandes de base
# Lister les VMs
gcloud compute instances list
# Lister les buckets
gcloud storage buckets list
# Voir les logs d'une ressource
gcloud logging read "resource.type=gce_instance" --limit 50
# Ouvrir Cloud Shell (terminal dans le navigateur, avec gcloud préconfiguré)
# → https://shell.cloud.google.com🖥️ Compute Engine
Types de Machines
| Famille | Usage | Exemple |
|---|---|---|
| E2 (Économique) | Dev, tests, charges légères | e2-micro (Always Free) |
| N2 (Général) | Applications standard | n2-standard-2 |
| C3 (Compute) | Calcul intensif | c3-highcpu-8 |
| M3 (Mémoire) | Bases de données en mémoire | m3-ultramem-32 |
| A2/A3 (GPU) | ML, rendu, HPC | a2-highgpu-1g |
💡 Always Free :
e2-microdansus-central1,us-east1ouus-west1: 1 instance gratuite en permanence.
Créer et Gérer une VM
# Créer une VM Ubuntu 22.04
gcloud compute instances create ma-vm \
--machine-type e2-medium \
--image-family ubuntu-2204-lts \
--image-project ubuntu-os-cloud \
--zone europe-west9-a \
--tags http-server,https-server \
--metadata startup-script='#! /bin/bash
apt-get update
apt-get install -y nginx
systemctl start nginx'
# Se connecter en SSH (gcloud gère les clés automatiquement)
gcloud compute ssh ma-vm --zone europe-west9-a
# Lister les VMs
gcloud compute instances list
# Arrêter / démarrer / supprimer
gcloud compute instances stop ma-vm --zone europe-west9-a
gcloud compute instances start ma-vm --zone europe-west9-a
gcloud compute instances delete ma-vm --zone europe-west9-aRègles de Pare-feu
GCP utilise des règles de pare-feu au niveau du VPC (pas au niveau instance comme AWS) :
# Autoriser HTTP depuis internet pour les VMs avec le tag http-server
gcloud compute firewall-rules create allow-http \
--network default \
--action allow \
--direction ingress \
--rules tcp:80 \
--source-ranges 0.0.0.0/0 \
--target-tags http-server
# Autoriser SSH depuis une IP spécifique uniquement
gcloud compute firewall-rules create allow-ssh-from-office \
--network default \
--action allow \
--direction ingress \
--rules tcp:22 \
--source-ranges 203.0.113.0/32 \
--target-tags ssh-allowed
# Lister les règles de pare-feu
gcloud compute firewall-rules listStartup Scripts
Le startup script s'exécute au démarrage de la VM - utile pour installer des dépendances :
# Passer un startup script au lancement
gcloud compute instances create mon-serveur-web \
--machine-type e2-small \
--zone europe-west9-a \
--metadata-from-file startup-script=startup.sh
# startup.sh
#!/bin/bash
apt-get update -y
apt-get install -y nginx
echo "<h1>Bienvenue depuis GCP !</h1>" > /var/www/html/index.html
systemctl restart nginx📦 Cloud Storage
Concept
Cloud Storage est le stockage objet de GCP. Il stocke des objets dans des buckets, avec une durabilité de 99,999999999% (11 neuf).
Classes de Stockage
| Classe | Minimum durée | Coût stockage | Cas d'usage |
|---|---|---|---|
| Standard | Aucune | Le plus cher | Données accédées souvent |
| Nearline | 30 jours | Moins cher | Accès < 1 fois/mois |
| Coldline | 90 jours | Encore moins cher | Accès < 1 fois/trimestre |
| Archive | 365 jours | Le moins cher | Archives longue durée, accès rare |
Commandes Cloud Storage
# Créer un bucket (nom unique globalement)
gcloud storage buckets create gs://mon-bucket-unique-123 \
--location europe-west9 \
--storage-class STANDARD
# Uploader un fichier
gcloud storage cp fichier.txt gs://mon-bucket-unique-123/
# Uploader un dossier entier
gcloud storage cp --recursive ./mon-dossier gs://mon-bucket-unique-123/dossier/
# Télécharger un fichier
gcloud storage cp gs://mon-bucket-unique-123/fichier.txt ./
# Lister les objets
gcloud storage ls gs://mon-bucket-unique-123/
# Supprimer un objet
gcloud storage rm gs://mon-bucket-unique-123/fichier.txt
# Supprimer le bucket et tout son contenu
gcloud storage rm --recursive gs://mon-bucket-unique-123Politique de Cycle de Vie
Automatisez le changement de classe de stockage selon l'âge des objets :
# Créer une politique de lifecycle en JSON
cat > lifecycle.json << 'EOF'
{
"lifecycle": {
"rule": [
{
"action": {"type": "SetStorageClass", "storageClass": "NEARLINE"},
"condition": {"age": 30}
},
{
"action": {"type": "SetStorageClass", "storageClass": "COLDLINE"},
"condition": {"age": 90}
},
{
"action": {"type": "Delete"},
"condition": {"age": 365}
}
]
}
}
EOF
gcloud storage buckets update gs://mon-bucket-unique-123 \
--lifecycle-file lifecycle.json⚠️ Erreurs Courantes
| Erreur | Cause | Solution |
|---|---|---|
PERMISSION_DENIED | IAM insuffisant | Vérifier les bindings IAM |
QUOTA_EXCEEDED | Quota de la région atteint | Demander une augmentation de quota |
invalid value for field resource.name | Nom de bucket déjà pris | Choisir un nom plus unique |
| VM inaccessible SSH | Règle de pare-feu manquante | Créer une règle allow-ssh |
The resource was not found | Mauvais projet sélectionné | gcloud config set project <ID> |
📌 Points Clés
- La hiérarchie GCP : Organisation → Dossiers → Projets → Ressources
- Cloud IAM : utilisez les rôles prédéfinis ; attachez un compte de service à vos VMs plutôt que des clés JSON
gcloud compute sshgère les clés SSH automatiquement - pas besoin de les créer manuellement- Les règles de pare-feu sont au niveau VPC (pas instance) et s'appliquent via des tags
- Cloud Storage : choisissez la classe Standard/Nearline/Coldline/Archive selon la fréquence d'accès
📚 Ressources
- Console GCP
- Documentation Cloud IAM
- Documentation Compute Engine
- Documentation Cloud Storage
- gcloud CLI Reference
- Google Cloud Free Tier
🚀 Prochaines étapes
Vous maîtrisez les bases de GCP. Passez au niveau suivant :
- GCP Intermédiaire : VPC, Cloud SQL, Cloud Run et Cloud Build - réseau, bases de données managées et serverless sur GCP