Google Cloud : projets, calcul, réseau et conteneurs avec gcloud
Quitter

Leçon 1 sur 9 · Fondamentaux

Google Cloud : projets, organisation, facturation, console et gcloud

40 min Debian 12

Objectif

Comprendre comment Google Cloud range les ressources (organisation, dossiers, projets), comment l'argent circule (compte de facturation), choisir une région pour un client marocain, puis piloter le tout avec la console, Cloud Shell et gcloud.

Les notions générales du cloud (modèles de service, responsabilité partagée, élasticité, coûts) sont traitées dans la formation « Cloud » (fondamentaux). Si vous connaissez déjà AWS ou Azure, la grande différence de Google Cloud est la place centrale du projet.

L'essentiel

  • Le projet est l'unité de base : toute ressource (VM, bucket, service Cloud Run) appartient à un projet. Il a un ID unique au monde (boutique-atlas-prod), un nom affiché et un numéro.
  • Au-dessus : les dossiers et l'organisation (liée à un domaine Google Workspace ou Cloud Identity, par exemple boutiqueatlas.ma). Les droits IAM et les règles d'administration héritent vers le bas.
  • Un compte de facturation paie pour un ou plusieurs projets. Un projet sans compte de facturation ne peut utiliser que les services gratuits.
  • Avant d'utiliser un service, il faut activer son API dans le projet (gcloud services enable).
  • Pas de région Google Cloud au Maroc à ce jour : les plus proches sont europe-southwest1 (Madrid) et europe-west9 (Paris).

1. La hiérarchie des ressources

Organisation : boutiqueatlas.ma
├── Dossier « Production »
│   ├── Projet boutique-atlas-prod       ← site web, base, stockage
│   └── Projet reseau-partage-prod       ← VPC partagé, VPN
└── Dossier « Hors-production »
    └── Projet boutique-atlas-dev
Niveau Rôle Remarque
Organisation racine, liée au domaine de l'entreprise créée avec Google Workspace ou Cloud Identity (version gratuite possible)
Dossier regrouper des projets (par service, par environnement, par client) peut contenir d'autres dossiers
Projet conteneur des ressources, des API activées, des quotas l'ID est définitif et unique au monde
Ressource VM, bucket, sujet Pub/Sub… appartient à un seul projet

Sans organisation (compte Gmail personnel), vos projets sont « sans organisation » : c'est acceptable pour apprendre, mais une entreprise a besoin de l'organisation pour centraliser les droits, les règles et la facturation.

Identifiant, nom et numéro

ID du projet     : boutique-atlas-prod     (choisi par vous, 6 à 30 caractères, définitif)
Nom du projet    : Boutique Atlas Prod     (libre, modifiable)
Numéro du projet : 412345678901            (attribué par Google)

L'ID apparaît dans les URL, les noms de comptes de service (…@boutique-atlas-prod.iam.gserviceaccount.com) et les commandes. Choisissez-le avec soin : on ne peut pas le renommer.

2. La facturation

  • Un compte de facturation Cloud porte le moyen de paiement (carte bancaire internationale, ou facturation mensuelle pour les entreprises éligibles). Son identifiant a la forme 01A2B3-C4D5E6-F7A8B9.
  • Un compte de facturation peut payer plusieurs projets ; un projet est lié à un seul compte à la fois.
  • Les nouveaux comptes bénéficient en général d'un crédit d'essai et d'un niveau gratuit (une petite VM e2-micro dans certaines régions américaines, quelques Go de stockage…). Les conditions changent : vérifiez-les sur la page officielle.
  • Créez des budgets avec alertes dès le premier jour (leçon 3.1).
gcloud billing accounts list
gcloud billing projects link boutique-atlas-prod --billing-account=01A2B3-C4D5E6-F7A8B9
gcloud billing projects describe boutique-atlas-prod   # billingEnabled: true

3. Régions et zones

Une région (europe-southwest1, Madrid) contient plusieurs zones (europe-southwest1-a, -b, -c). Certaines ressources sont zonales (VM, disques persistants zonaux), d'autres régionales (sous-réseaux, Cloud Run, disques régionaux), d'autres mondiales (réseaux VPC, images, règles de pare-feu).

Critère À vérifier
latence vers le Maroc Madrid et Paris sont les plus proches
disponibilité des services et des types de machines tous ne sont pas partout
prix il varie selon la région
exigences légales loi 09-08 sur les données personnelles ; avis de la CNDP pour certains transferts
empreinte carbone Google signale les régions à faibles émissions
gcloud compute regions list
gcloud compute zones list --filter="region:europe-southwest1"

4. La console et Cloud Shell

La console (console.cloud.google.com) permet de tout faire en cliquant. Repères utiles :

  • le sélecteur de projet en haut : vérifiez-le toujours avant d'agir ;
  • API et services : activer une API ;
  • IAM et administration : droits, comptes de service, quotas ;
  • Facturation : rapports, budgets ;
  • l'icône Activer Cloud Shell ouvre un terminal.

Cloud Shell est une petite VM Debian gratuite, déjà authentifiée, avec gcloud, kubectl, terraform, docker, git et un éditeur de code. Votre dossier personnel (5 Go) est conservé entre les sessions. C'est l'outil idéal pour suivre cette formation depuis n'importe quel poste.

5. gcloud sur votre poste

Le Google Cloud CLI contient gcloud, gsutil (ancien outil du stockage, remplacé par gcloud storage) et bq (BigQuery).

gcloud init                       # assistant : connexion, projet, région par défaut
gcloud auth login                 # se connecter (ouvre le navigateur)
gcloud auth list                  # comptes connectés
gcloud config list                # configuration active
gcloud projects list
gcloud components update          # mettre à jour (installation par archive)

Valeurs par défaut

gcloud config set project boutique-atlas-prod
gcloud config set compute/region europe-southwest1
gcloud config set compute/zone europe-southwest1-a
gcloud config get-value project
gcloud config unset compute/zone

Plusieurs configurations

Un consultant d'une ESN de Rabat travaille pour trois clients : une configuration nommée par client évite les erreurs.

gcloud config configurations create client-boutique
gcloud config set account consultant@esn.ma
gcloud config set project boutique-atlas-prod
gcloud config configurations list
gcloud config configurations activate client-ecole
gcloud compute instances list --project=autre-projet   # forcer un projet pour UNE commande

La forme des commandes

gcloud [GROUPE ...] RESSOURCE  ACTION  [NOM]  --options
gcloud compute      instances  create  web-01 --machine-type=e2-medium
gcloud storage      buckets    list
gcloud run          services   describe site

gcloud help compute instances create ou --help affiche l'aide ; gcloud beta … et gcloud alpha … donnent accès aux fonctionnalités en préversion.

Formats et filtres

gcloud compute instances list --format="table(name, zone.basename(), status)"
gcloud compute instances list --filter="status=RUNNING AND labels.env=prod"
gcloud projects describe boutique-atlas-prod --format="value(projectNumber)"   # valeur brute
gcloud compute instances list --format=json | jq '.[].name'

--format=value(...) est l'équivalent de --output tsv d'Azure : idéal pour une variable shell.

6. Les API et les quotas

Chaque service est une API à activer par projet. Une erreur « API has not been used in project … or it is disabled » signifie simplement qu'il faut l'activer.

gcloud services list --enabled
gcloud services enable compute.googleapis.com run.googleapis.com
gcloud services disable bigquery.googleapis.com

Les quotas (nombre de vCPU par région, d'adresses IP…) protègent votre facture et la plateforme. Une demande d'augmentation se fait depuis la console (IAM et administration → Quotas).

7. Étiquettes (labels)

gcloud compute instances update web-01 --update-labels=env=prod,projet=boutique

Les labels (minuscules, chiffres, _ et -) se retrouvent dans l'export de facturation : ils permettent de répondre à « combien coûte la boutique en production ? ». Ne pas confondre avec les tags réseau (leçon 1.4) ni les tags de ressources gérés au niveau de l'organisation.

8. Fermer un projet

gcloud projects delete boutique-atlas-dev

Le projet passe en arrêt : toutes ses ressources cessent de fonctionner et de coûter, et il est supprimé définitivement après 30 jours. Pendant ce délai, gcloud projects undelete le restaure. Un projet de test supprimé est la meilleure façon d'être sûr de ne rien oublier.

Pièges fréquents

  • Agir dans le mauvais projet : vérifiez gcloud config get-value project (ou le sélecteur de la console) avant chaque opération importante.
  • Choisir un ID de projet trop générique ou avec le nom d'un client que vous risquez de perdre : il est définitif.
  • Oublier de lier la facturation : les créations de VM échouent avec une erreur de facturation.
  • Croire qu'un projet supprimé disparaît tout de suite : il reste 30 jours, et son ID ne peut pas être réutilisé.

Lab

Vous écrivez le script de démarrage du projet de production de Boutique Atlas : création du projet, liaison à la facturation, valeurs par défaut (Madrid), activation des API, puis un petit fichier qui résume la hiérarchie des ressources. Le lab n'a ni réseau ni gcloud : le script est celui que vous lanceriez dans Cloud Shell.

cat /root/gcp/01-projet.sh
sh -n /root/gcp/01-projet.sh     # vérifier la syntaxe sans exécuter

Quiz

  1. Quelle est l'unité de base qui contient les ressources dans Google Cloud ?
  2. Peut-on renommer l'ID d'un projet ?
  3. Que faut-il faire avant d'utiliser Compute Engine dans un projet neuf ?
  4. Quelle option de gcloud donne une valeur brute, sans tableau ?
  5. Que devient un projet supprimé pendant les 30 premiers jours ?
Réponses
  1. Le projet.
  2. Non : l'ID est définitif (seul le nom affiché se modifie).
  3. Le lier à un compte de facturation et activer l'API compute.googleapis.com.
  4. --format="value(champ)".
  5. Il est arrêté (plus de service, plus de coûts) et peut être restauré avec gcloud projects undelete ; ensuite il est supprimé définitivement.

Sources de référence : documentation Google Cloud (CC BY 4.0) — Compute Engine, gcloud, IAM, emplacements. Texte original MasterLinux.

Exercices pratiques

À réaliser sur Debian 12

Le terminal en ligne ouvre bientôt. En attendant, réalisez ces tâches sur votre machine Linux, une machine virtuelle ou WSL.

  1. Créez /root/gcp/01-projet.sh. Première ligne #!/bin/sh ; deuxième ligne : la création du projet d'identifiant boutique-atlas-prod, avec le nom affiché "Boutique Atlas Prod".
    Afficher un indicegcloud projects create ID --name="Nom affiché"
    Voir la solution
    mkdir -p /root/gcp && printf "%s\n" "#!/bin/sh" "gcloud projects create boutique-atlas-prod --name=\"Boutique Atlas Prod\"" > /root/gcp/01-projet.sh

    Vérification : f=/root/gcp/01-projet.sh; [ "$(head -n1 $f)" = "#!/bin/sh" ] && grep -E "^gcloud projects create boutique-atlas-prod" $f | grep -Eq -- "--name[= ]\"?Boutique Atlas Prod\"?"

  2. Ajoutez la liaison du projet au compte de facturation 01A2B3-C4D5E6-F7A8B9.
    Afficher un indicegcloud billing projects link PROJET --billing-account=…
    Voir la solution
    echo "gcloud billing projects link boutique-atlas-prod --billing-account=01A2B3-C4D5E6-F7A8B9" >> /root/gcp/01-projet.sh

    Vérification : grep -E "^gcloud billing projects link boutique-atlas-prod" /root/gcp/01-projet.sh | grep -Eq -- "--billing-account[= ]01A2B3-C4D5E6-F7A8B9"

  3. Ajoutez trois lignes gcloud config set : le projet par défaut boutique-atlas-prod, la région europe-southwest1 (Madrid) et la zone europe-southwest1-a.
    Afficher un indicegcloud config set project … ; gcloud config set compute/region … ; gcloud config set compute/zone …
    Voir la solution
    printf "%s\n" "gcloud config set project boutique-atlas-prod" "gcloud config set compute/region europe-southwest1" "gcloud config set compute/zone europe-southwest1-a" >> /root/gcp/01-projet.sh

    Vérification : f=/root/gcp/01-projet.sh; grep -Eq "^gcloud config set (core/)?project boutique-atlas-prod$" $f && grep -Eq "^gcloud config set compute/region europe-southwest1$" $f && grep -Eq "^gcloud config set compute/zone europe-southwest1-a$" $f

  4. Activez les API de Compute Engine et de Cloud Run (compute.googleapis.com et run.googleapis.com) dans une commande gcloud services enable.
    Afficher un indicegcloud services enable API1 API2
    Voir la solution
    echo "gcloud services enable compute.googleapis.com run.googleapis.com" >> /root/gcp/01-projet.sh

    Vérification : l=$(grep -E "^gcloud services enable" /root/gcp/01-projet.sh) && echo "$l" | grep -q "compute.googleapis.com" && echo "$l" | grep -q "run.googleapis.com"

  5. Écrivez /root/gcp/hierarchie.txt : les niveaux de la hiérarchie des ressources, du plus haut au plus bas, un par ligne, avec exactement ces mots : organisation, dossier, projet, ressource.
    Afficher un indiceL'organisation contient des dossiers, qui contiennent des projets.
    Voir la solution
    printf "%s\n" organisation dossier projet ressource > /root/gcp/hierarchie.txt

    Vérification : printf "organisation\ndossier\nprojet\nressource\n" | cmp -s - /root/gcp/hierarchie.txt

Références officielles consultées : Présentation de Compute Engine — https://docs.cloud.google.com/compute/docs/overview ; Utiliser gcloud compute — https://docs.cloud.google.com/compute/docs/gcloud-compute ; Noms de ressources complets (IAM) — https://docs.cloud.google.com/iam/docs/full-resource-names ; Emplacements des buckets Cloud Storage — https://docs.cloud.google.com/storage/docs/locations. Texte original MasterLinux.