
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create your cluster
/ 20
Create your pod
/ 30
Create a Kubernetes Service
/ 30
Scale up your service
/ 20
L'objectif de cet atelier pratique est de transformer du code que vous avez développé en une application répliquée, exécutée sur Kubernetes via le service Kubernetes Engine. Pour cet atelier, le code sera une simple application node.js Hello World.
Voici un schéma des différents éléments impliqués dans cet atelier afin de vous aider à comprendre comment ils interagissent. Vous utiliserez ce schéma comme référence au fur et à mesure de votre progression. Il prendra tout son sens à la fin de l'atelier. Pour l'instant, vous pouvez le laisser de côté.
Kubernetes est un projet Open Source (disponible sur kubernetes.io) qui peut s'exécuter sur de nombreux environnements différents : ordinateurs portables, clusters multinœuds haute disponibilité, clouds publics, déploiements sur site, machines virtuelles ou solutions Bare Metal.
Pour cet atelier, l'utilisation d'un environnement géré comme Kubernetes Engine (une version de Kubernetes hébergée par Google et exécutée sur Compute Engine) vous permet de vous consacrer à la découverte de Kubernetes plutôt que d'avoir à configurer l'infrastructure sous-jacente.
vim
, emacs
ou nano
vous sera utile.Nous vous invitons à saisir vous-même les commandes, afin de mieux assimiler les concepts fondamentaux. Notez que de nombreux ateliers comportent un bloc de code qui contient les commandes à saisir. Vous pouvez les copier et les coller directement dans les emplacements adéquats au cours des ateliers si vous le souhaitez.
Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.
Cet atelier pratique vous permet de suivre vous-même les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Nous vous fournissons des identifiants temporaires pour vous connecter à Google Cloud le temps de l'atelier.
Pour réaliser cet atelier :
Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, un pop-up s'affiche pour vous permettre de sélectionner un mode de paiement. Sur la gauche, vous trouverez le panneau Détails concernant l'atelier, qui contient les éléments suivants :
Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans la fenêtre de navigation privée si vous utilisez le navigateur Chrome).
L'atelier lance les ressources, puis ouvre la page Se connecter dans un nouvel onglet.
Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.
Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.
Vous trouverez également le nom d'utilisateur dans le panneau Détails concernant l'atelier.
Cliquez sur Suivant.
Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.
Vous trouverez également le mot de passe dans le panneau Détails concernant l'atelier.
Cliquez sur Suivant.
Accédez aux pages suivantes :
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.
Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Le résultat contient une ligne qui déclare YOUR_PROJECT_ID (VOTRE_ID_PROJET) pour cette session :
gcloud
est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.
Cliquez sur Autoriser.
Vous devez à présent obtenir le résultat suivant :
Résultat :
Résultat :
Exemple de résultat :
gcloud
, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.
1. À l'aide de Cloud Shell, créez un serveur Node.js simple que vous allez déployer sur Kubernetes Engine :
vi
dans cet exemple, mais nano
et emacs
sont également disponibles dans Cloud Shell. Vous pouvez aussi utiliser la fonctionnalité d'éditeur Web de Cloud Shell, comme indiqué dans le guide de fonctionnement de Cloud Shell.
server.js
en appuyant sur Échap, puis saisissez :node
étant installé sur Cloud Shell, vous pouvez exécuter la commande suivante (qui ne renvoie aucun résultat) pour démarrer le serveur de nœud :8080
.Un nouvel onglet de navigateur contenant les résultats s'ouvre :
Vous allez ensuite créer un package de cette application sous forme de conteneur Docker.
Dockerfile
qui décrit l'image que vous voulez générer. Les images de conteneurs Docker peuvent être basées sur des images existantes. Pour cette image, nous partirons donc d'une image de nœud existante :Cette "recette" pour l'image Docker :
node
trouvée sur Docker Hub ;8080
;server.js
dans l'image ;Dockerfile
en appuyant sur Échap, puis saisissez :PROJECT_ID
par l'ID de votre projet, que vous trouverez dans la console et dans la section Détails concernant l'atelier de l'atelier :Le téléchargement et l'extraction de tous les éléments peuvent prendre un peu de temps, mais des barres de progression vous indiquent l'état d'avancement de la création de l'image.
Une fois la création terminée, testez l'image en local en exécutant un conteneur Docker en tant que daemon sur le port 8080 en vous servant de l'image de conteneur que vous venez de créer.
PROJECT_ID
par l'ID de votre projet, que vous trouverez dans la console et dans la section Détails concernant l'atelier de l'atelier :Vous devez normalement obtenir le résultat suivant :
curl
depuis votre invite Cloud Shell :Voici le résultat que vous devez obtenir :
docker run
dans la documentation de référence sur l'exécution de Docker.
Ensuite, arrêtez le conteneur en cours d'exécution.
Vous devez normalement obtenir le résultat suivant :
[CONTAINER ID]
par la valeur fournie à l'étape précédente :Le résultat de la console doit se présenter comme suit (votre ID de conteneur) :
Maintenant que l'image fonctionne comme prévu, transférez-la vers Google Container Registry, un dépôt privé pour vos images Docker accessible à partir de vos projets Google Cloud.
Lorsque l'invite "Do you want to continue (Y/n)?" (Voulez-vous continuer (Oui/Non) ?) apparaît, saisissez Y (Oui).
PROJECT_ID
par l'ID de votre projet, que vous trouverez dans la console et dans la section Détails concernant l'atelier de l'atelier :Le transfert initial peut prendre quelques minutes. Des barres de progression s'affichent pendant la création.
Vous disposez maintenant d'une image Docker disponible au niveau du projet. Kubernetes peut accéder à cette image et l'orchestrer.
gcr.io
). Dans votre propre environnement, vous pouvez préciser la zone et le bucket à utiliser. Pour en savoir plus, consultez .
Vous pouvez désormais créer votre cluster Kubernetes Engine. Un cluster se compose d'un serveur d'API maître Kubernetes hébergé par Google et d'un ensemble de nœuds de calcul. Les nœuds de calcul sont des machines virtuelles Compute Engine.
gcloud
(remplacez PROJECT_ID
par l'ID de votre projet, que vous trouverez dans la console et dans la section Détails concernant l'atelier de l'atelier) :Vous pouvez ignorer les avertissements qui s'affichent lors de la création du cluster.
Le résultat de la console doit se présenter comme suit :
Vous pouvez également créer ce cluster depuis la console en ouvrant le menu de navigation et en sélectionnant Kubernetes Engine > Clusters Kubernetes > Créer.
Accédez au Menu de navigation > Kubernetes Engine. Vous pouvez constater que vous disposez à présent d'un cluster Kubernetes entièrement fonctionnel, exécuté sur Kubernetes Engine.
Il est temps de déployer votre propre application conteneurisée sur le cluster Kubernetes. À partir de maintenant, vous utiliserez la ligne de commande kubectl
(déjà configurée dans votre environnement Cloud Shell).
Cliquez sur Vérifier ma progression ci-dessous pour valider votre progression dans l'atelier.
Un pod Kubernetes est un groupe de conteneurs réunis à des fins d'administration et de mise en réseau. Il peut contenir un ou plusieurs conteneurs. Dans cet exemple, vous allez utiliser un seul conteneur créé avec votre image Node.js stockée dans le registre de conteneurs privé. Celui-ci diffusera du contenu sur le port 8080.
kubectl run
(remplacez PROJECT_ID
par votre ID de projet, que vous trouverez dans la console et dans la section Détails de connexion de l'atelier) :Résultat :
Comme vous pouvez le voir, vous avez créé un objet Déploiement. L'utilisation des déploiements est recommandée pour créer et faire évoluer des pods. Dans le cas présent, un nouveau déploiement gère un seul pod dupliqué qui exécute l'image hello-node:v1
.
Résultat :
Résultat :
Nous vous proposons à présent de passer en revue quelques commandes kubectl
intéressantes. Aucune d'entre elles ne modifiera l'état du cluster. Pour consulter la documentation de référence complète, reportez-vous à Outil de ligne de commande (kubectl) :
Pour le dépannage :
Vous devez maintenant rendre votre pod accessible depuis l'extérieur.
Cliquez sur Vérifier ma progression ci-dessous pour valider votre progression dans l'atelier.
Par défaut, le pod n'est accessible que par le biais de son adresse IP interne au sein du cluster. Pour rendre le conteneur hello-node
accessible depuis l'extérieur du réseau virtuel Kubernetes, vous devez exposer le pod en tant que service Kubernetes.
kubectl expose
associée à l'indicateur --type="LoadBalancer"
. Cette option est requise pour créer une adresse IP accessible depuis l'extérieur :Résultat :
L'option utilisée dans cette commande indique qu'elle se sert de l'équilibreur de charge fourni par l'infrastructure sous-jacente (dans notre cas, l'équilibreur de charge Compute Engine). Remarquez que vous exposez le déploiement, et non le pod directement. Par conséquent, le service obtenu va répartir le trafic sur tous les pods gérés par le déploiement (dans le cas présent, un seul pod, mais vous ajouterez des instances répliquées par la suite).
Le maître Kubernetes crée l'équilibreur de charge et les règles de transfert Compute Engine associées, les pools cibles et les règles de pare-feu afin de rendre le service entièrement accessible depuis l'extérieur de Google Cloud.
kubectl
de lister tous les services du cluster :Voici le résultat que vous devez obtenir :
Deux adresses IP accessibles par le port 8080 sont listées pour votre service hello-node. CLUSTER-IP
est l'adresse IP interne visible uniquement au sein de votre réseau virtuel cloud. EXTERNAL-IP
correspond à l'adresse IP externe à équilibrage de charge.
EXTERNAL-IP
peuvent nécessiter quelques minutes. Si EXTERNAL-IP
ne s'affiche pas, patientez quelques minutes, puis exécutez de nouveau la commande.
http://<EXTERNAL_IP>:8080
À ce stade, vous avez gagné plusieurs fonctionnalités en passant aux conteneurs et à Kubernetes. Vous n'avez pas besoin de spécifier sur quel hôte exécuter votre charge de travail. Vous bénéficiez également de la surveillance et du redémarrage des services. Découvrez maintenant les autres avantages que vous pouvez tirer de votre nouvelle infrastructure Kubernetes.
Cliquez sur Vérifier ma progression ci-dessous pour valider votre progression dans l'atelier.
Le scaling des applications, qui est une puissante fonctionnalité de Kubernetes, est simple à mettre en œuvre. Imaginons que vous ayez soudain besoin d'augmenter la capacité de votre solution. Vous pouvez demander au contrôleur de réplication de gérer un certain nombre de nouvelles instances répliquées pour votre pod.
Résultat :
Résultat :
Exécutez de nouveau la commande ci-dessus jusqu'à ce que les quatre instances répliquées soient créées.
Voici le résultat que vous devez obtenir :
Une approche déclarative est utilisée ici. Plutôt que de démarrer ou d'arrêter des instances, vous déclarez le nombre d'instances à exécuter en permanence. Les boucles de rapprochement de Kubernetes veillent à ce que la réalité corresponde à votre demande et prennent des mesures si nécessaire.
Voici un schéma qui résume l'état de votre cluster Kubernetes :
Cliquez sur Vérifier ma progression ci-dessous pour valider votre progression dans l'atelier.
À un moment donné, des corrections de bugs ou de nouvelles fonctionnalités seront nécessaires sur l'application que vous avez déployée en production. Kubernetes vous aide à déployer une nouvelle révision en production sans affecter les utilisateurs.
server.js
:server.js
en appuyant sur Échap, puis saisissez :Vous pouvez à présent créer une nouvelle image de conteneur et la publier sur le registre en lui associant un tag représentant un numéro de version (v2
dans cet exemple).
PROJECT_ID
par l'ID du projet de l'atelier :Kubernetes met à jour votre contrôleur de réplication de manière fluide pour installer la nouvelle version de l'application. Afin de modifier l'étiquette de l'image pour votre conteneur en cours d'exécution, vous devez modifier le déploiement hello-node deployment
existant et remplacer l'image gcr.io/PROJECT_ID/hello-node:v1
par gcr.io/PROJECT_ID/hello-node:v2
.
kubectl edit
:Elle permet d'ouvrir un éditeur de texte qui affiche la configuration yaml complète du déploiement. Vous n'avez pas besoin de comprendre la configuration yaml complète pour le moment. Sachez simplement qu'en mettant à jour le champ spec.template.spec.containers.image
de la configuration, vous demandez au déploiement de mettre à jour les pods avec la nouvelle image.
Spec
> containers
> image
et remplacez le numéro de version v1 par v2 :Voici le résultat que vous devez obtenir :
De nouveaux pods seront créés avec la nouvelle image et les anciens pods seront supprimés.
Voici le résultat que vous devez obtenir (vous devrez peut-être réexécuter la commande ci-dessus pour voir ce qui suit) :
Pendant cette opération, les utilisateurs de vos services ne devraient pas constater d'interruption. Au bout d'un moment, ils commenceront à accéder à la nouvelle version de votre application. Pour en savoir plus sur les mises à jour progressives, consultez la documentation sur l'exécution de mises à jour progressives.
Une fois le cluster Kubernetes Engine configuré, ces fonctionnalités de déploiement, de scaling et de mise à jour offertes par Kubernetes devraient vous permettre de vous concentrer sur l'application plutôt que sur l'infrastructure.
Répondez à notre quiz pour tester vos connaissances sur Google Cloud Platform. (Sélectionnez plusieurs réponses.)
Notre atelier pratique sur Kubernetes se termine ici. Vous n'avez fait qu'effleurer les possibilités offertes par cette technologie. Explorez-la avec vos propres pods, contrôleurs de réplication et services. Intéressez-vous également aux vérifications d'activité (vérifications de l'état) et envisagez d'utiliser directement l'API Kubernetes.
Essayez-vous à la Gestion des déploiements avec Kubernetes Engine ou consultez ces suggestions :
Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.
Dernière mise à jour du manuel : 14 mars 2024
Dernier test de l'atelier : 14 mars 2024
Copyright 2025 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.
Ce contenu n'est pas disponible pour le moment
Nous vous préviendrons par e-mail lorsqu'il sera disponible
Parfait !
Nous vous contacterons par e-mail s'il devient disponible
One lab at a time
Confirm to end all existing labs and start this one