Points de contrôle
Deploy GKE clusters
/ 30
Deploy Pods to GKE clusters
/ 35
Deploy a new pod using a Yaml file
/ 35
Déployer des clusters GKE Autopilot depuis Cloud Shell
Présentation
Dans cet atelier, vous allez créer des clusters GKE à l'aide de la ligne de commande. Vous allez inspecter le fichier "kubeconfig" et manipuler le cluster avec l'outil de ligne de commande kubectl
.
Objectifs
Cet atelier va vous apprendre à effectuer les tâches suivantes :
- Créer et manipuler des clusters GKE avec l'outil de ligne de commande
kubectl
- Déployer les pods avec
kubectl
et les fichiers de configuration - Stocker et déployer les conteneurs avec Container Registry
Mettre en place l'atelier
Accéder à Qwiklabs
Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.
-
Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.
-
Vérifiez le temps imparti pour l'atelier (par exemple :
01:15:00
) : vous devez pouvoir le terminer dans ce délai.
Une fois l'atelier lancé, vous ne pouvez pas le mettre en pause. Si nécessaire, vous pourrez le redémarrer, mais vous devrez tout reprendre depuis le début. -
Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.
-
Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.
-
Cliquez sur Ouvrir la console Google.
-
Cliquez sur Utiliser un autre compte, puis copiez-collez les identifiants de cet atelier lorsque vous y êtes invité.
Si vous utilisez d'autres identifiants, des messages d'erreur s'afficheront ou des frais seront appliqués. -
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
Une fois la connexion initiale effectuée, le tableau de bord du projet s'affiche.
Ouvrir Cloud Shell
La plupart des tâches s'effectueront dans Cloud Shell. Cloud Shell est un environnement de ligne de commande exécuté dans Google Cloud. Cette machine virtuelle basée sur Debian contient tous les outils de gestion dont vous avez besoin (par exemple, docker
, gcloud, gsutil
et kubectl
), ainsi qu'un répertoire d'accueil persistant de 5 Go.
- Dans la barre de titre de la console Google Cloud, cliquez sur Activer Cloud Shell ().
- Cliquez sur Continuer.
Une fois le provisionnement terminé, l'invite Cloud Shell s'affiche :
Tâche 1 : Déployer des clusters GKE
Dans cette tâche, vous allez déployer des clusters GKE à l'aide de Cloud Shell.
- Dans Cloud Shell, définissez les variables d'environnement correspondant à la zone et au nom du cluster en saisissant la commande suivante :
- Dans Cloud Shell, saisissez la commande suivante pour créer un cluster Kubernetes :
Dans ce type de commande, les options sont généralement définies sur leur valeur par défaut. Pour afficher toutes les options possibles, consultez la documentation de référence de "gcloud container clusters create".
Au fur et à mesure de l'adoption des nouvelles versions de Kubernetes, des changements ont été apportés aux paramètres par défaut du cluster GKE. Ces changements sont signalés par des avertissements.
Une fois le déploiement terminé, la page Kubernetes Engine > Clusters de la console Google Cloud doit ressembler à la capture d'écran suivante :
Cliquez sur Vérifier ma progression pour valider l'objectif.
Tâche 2 : Se connecter à un cluster GKE
Dans cette tâche, vous allez utiliser Cloud Shell pour vous authentifier auprès d'un cluster GKE et pour inspecter ensuite les fichiers de configuration kubectl.
Vous devrez vous authentifier dans Kubernetes non seulement pour pouvoir communiquer avec le cluster à partir d'un client externe via le kube-APIserver en cours d'exécution sur l'instance maître, mais également pour que les conteneurs de clusters puissent communiquer à l'intérieur ou à l'extérieur du cluster.
L'authentification dans Kubernetes peut se faire de différentes façons. Pour GKE, l'authentification se fait généralement avec des jetons OAuth2 et peut être gérée via Cloud Identity and Access Management pour l'ensemble du projet. L'authentification peut également se faire via un contrôle des accès basé sur les rôles, et peut alors être définie et configurée dans chaque cluster.
Dans GKE, les conteneurs de clusters peuvent utiliser les comptes de service pour s'authentifier et accéder aux ressources externes.
- Pour créer un fichier kubeconfig en utilisant les identifiants de l'utilisateur actuel (pour permettre l'authentification) et pour fournir les informations sur les points de terminaison d'un cluster spécifique (pour permettre la communication avec ce cluster via l'outil de ligne de commande
kubectl
), exécutez la commande suivante :
Cette commande crée dans votre répertoire d'accueil un répertoire .kube
si celui-ci n'existe pas encore. Dans le répertoire .kube
, la commande crée un fichier nommé config
s'il n'existe pas déjà, et qui est utilisé pour stocker les informations d'authentification et de configuration. Le fichier de configuration est généralement appelé le fichier kubeconfig.
- Ouvrez le fichier kubeconfig avec l'éditeur de texte nano :
Vous pouvez maintenant examiner toutes les données d'authentification et de configuration des points de terminaison qui sont stockées dans le fichier. Les informations concernant le cluster doivent apparaître. Ces informations ont été renseignées lors de la création du cluster.
- Appuyez sur CTRL+X pour quitter l'éditeur nano.
kubectl
) est indiqué par la propriété current-context
.
Vous n'avez pas besoin d'exécuter la commande gcloud container clusters get-credentials
pour renseigner le fichier kubeconfig des clusters que vous avez créés dans le même contexte (même utilisateur et même environnement). En effet, les informations concernant ces clusters ont déjà été renseignées lors de leur création. Vous devrez en revanche l'exécuter si vous souhaitez vous connecter à un cluster créé par un autre utilisateur ou dans un autre environnement. Cette commande permet également de définir un autre cluster pour le contexte actif.
Tâche 3 : Utiliser kubectl pour inspecter un cluster GKE
Dans cette tâche, vous allez inspecter un cluster GKE avec Cloud Shell et kubectl.
Après avoir renseigné le fichier kubeconfig et défini le contexte actif d'un cluster, vous pouvez exécuter des commandes sur ce cluster via l'outil de ligne de commande kubectl
. La plupart des commandes aboutissent à un appel API REST sur le serveur maître API, ce qui déclenche l'action associée.
- Dans Cloud Shell, exécutez la commande suivante pour afficher le contenu du fichier kubeconfig :
Les données sensibles du certificat sont remplacées par DATA+OMITTED.
- Dans Cloud Shell, exécutez la commande suivante pour afficher les informations du cluster pour le contexte actif :
Le résultat décrit le cluster pour le contexte actif.
Résultat :
- Dans Cloud Shell, exécutez la commande suivante pour afficher le contexte actif :
Une ligne de résultat indique le cluster pour le contexte actif.
Résultat :
PROJECT_ID
correspond à l'ID de votre projet. Cette information est la même que celle contenue dans la propriété current-context
du fichier kubeconfig.
- Dans Cloud Shell, exécutez la commande suivante pour afficher les détails de tous les contextes de cluster dans le fichier kubeconfig :
Plusieurs lignes de résultat fournissent les détails concernant le cluster que vous avez créé et identifient le cluster pour le contexte actif. En général, cette commande affiche les détails des clusters présents dans le fichier kubeconfig de l'utilisateur, y compris les autres clusters créés par l'utilisateur, ainsi que les détails ajoutés manuellement au fichier kubeconfig.
- Dans Cloud Shell, exécutez la commande suivante pour modifier le contexte actif :
Dans le cas présent, vous n'avez qu'un seul cluster. Cette commande n'a donc rien modifié.
Il peut cependant arriver qu'un projet contienne plusieurs clusters. Cette approche vous permet de modifier le contexte actif lorsque les informations d'identification et de configuration de plusieurs clusters sont déjà renseignées dans votre fichier kubeconfig. Vous aurez besoin du nom complet du cluster, qui inclut le préfixe gke
, l'ID du projet, l'emplacement et le nom à afficher, le tout concaténé avec des traits de soulignement.
- Dans Cloud Shell, exécutez la commande suivante afin d'activer la saisie semi-automatique en Bash pour
kubectl
:
Cette commande n'affiche aucun résultat.
- Dans Cloud Shell, saisissez kubectl suivi par un espace, puis appuyez deux fois sur la touche Tabulation.
Le shell renvoie toutes les commandes possibles :
- Dans Cloud Shell, saisissez kubectl co, puis appuyez deux fois sur la touche Tabulation.
L'interface renvoie toutes les commandes commençant par "co" (ou tout autre texte que vous saisissez).
Tâche 4 : Déployer des pods sur des clusters GKE
Dans cette tâche, vous allez utiliser Cloud Shell pour déployer des pods sur des clusters GKE.
Déployer des pods sur GKE avec kubectl
Kubernetes introduit l'abstraction d'un pod pour regrouper un ou plusieurs conteneurs associés en une seule entité à programmer et à déployer en tant qu'unité du même nœud. Vous pouvez déployer un pod constitué d'un seul conteneur à partir d'une image de conteneur unique. Un pod peut également contenir plusieurs conteneurs provenant de plusieurs images de conteneurs.
- Dans Cloud Shell, exécutez la commande suivante pour déployer nginx en tant que pod nommé nginx-1 :
Cette commande crée un pod nommé nginx avec un conteneur exécutant l'image nginx. Si aucun dépôt n'est spécifié, le comportement par défaut consiste à essayer de trouver l'image en local ou dans le registre public Docker. En l'occurrence, l'image est extraite du registre public Docker.
- Dans Cloud Shell, exécutez la commande suivante pour afficher tous les pods déployés dans le cluster actif :
Le résultat doit ressembler à l'exemple ci-dessous, mais avec un nom de pod légèrement différent.
Résultat :
- Dans Cloud Shell, exécutez la commande suivante pour afficher l'utilisation des ressources réparties entre les nœuds du cluster :
Le résultat doit ressembler à cet exemple.
Résultat :
Une autre commande top
(kubectl top pods
) affiche des informations similaires pour tous les pods déployés dans le cluster.
- Vous allez maintenant remplacer le nom de votre pod par une variable que nous allons utiliser tout au long de cet atelier. Utiliser les variables de cette manière permet de limiter les erreurs humaines lors de la saisie de noms trop longs. Vous devez saisir le nom unique de votre pod à la place de
[your_pod_name]
.
Exemple :
- Pour vérifier que vous avez correctement défini la variable d'environnement, exécutez dans le shell une commande vous renvoyant sa valeur :
Résultat :
- Dans Cloud Shell, exécutez la commande suivante pour afficher tous les détails du pod que vous venez de créer :
Le résultat doit ressembler à l'exemple ci-dessous. Les détails du pod, son état, ses conditions et les événements de son cycle de vie sont affichés.
Résultat :
Transférer un fichier dans un conteneur
Pour pouvoir diffuser des contenus statiques via le serveur Web nginx, vous devez créer et placer un fichier dans le conteneur.
- Dans Cloud Shell, exécutez les commandes suivantes pour ouvrir dans l'éditeur de texte nano un fichier nommé
test.html
:
- Ajoutez le texte suivant (script shell) au fichier
test.html
vide :
-
Appuyez sur CTRL+X, puis sur Y et sur Entrée pour enregistrer le fichier et quitter l'éditeur nano.
-
Dans Cloud Shell, exécutez la commande suivante pour placer le fichier à l'emplacement approprié dans le conteneur nginx du pod nginx livré de manière statique :
Cette commande copie le fichier test.html
depuis le répertoire d'accueil local vers le répertoire /usr/share/nginx/html
du premier conteneur du pod nginx. Vous pouvez spécifier d'autres conteneurs dans un pod comportant plusieurs conteneurs à l'aide de l'option -c
, suivie du nom du conteneur.
Exposer le pod pour des tests
Exposer un pod à des clients en dehors du cluster nécessite un service. Les services sont abordés ailleurs dans le cours et sont très utilisés dans d'autres ateliers. Vous pouvez utiliser une commande simple pour créer un service visant à exposer un pod.
- Dans Cloud Shell, exécutez la commande suivante afin de créer un service pour exposer notre pod nginx en externe :
Cette commande crée un service LoadBalancer, qui permet d'accéder au pod nginx à partir d'adresses Internet situées à l'extérieur du cluster.
- Dans Cloud Shell, exécutez la commande suivante pour afficher les détails des services du cluster :
Le résultat doit ressembler à l'exemple ci-dessous. Vous allez utiliser l'adresse IP externe lors de l'étape suivante.
Résultat :
Le service Kubernetes est l'un des services par défaut créés ou utilisés par le cluster. Le service nginx que vous avez créé s'affiche également.
Vous devrez peut-être exécuter cette commande plusieurs fois avant que l'adresse IP externe ne s'affiche.
Résultat :
Cliquez sur Vérifier ma progression pour valider l'objectif.
- Dans Cloud Shell, exécutez la commande suivante pour vérifier que le conteneur nginx livre bien le fichier HTML statique que vous avez copié.
Remplacez [EXTERNAL_IP] par l'adresse IP externe de votre service que vous avez obtenue dans le résultat de l'étape précédente.
Le contenu du fichier apparaît dans le résultat. Vous pouvez accéder à la même adresse dans votre navigateur pour afficher le fichier au format HTML.
Exemple :
- Dans Cloud Shell, exécutez la commande suivante pour afficher les ressources utilisées par le pod nginx :
Résultat :
Tâche 5 : Analyser les pods GKE
Dans cette tâche, vous allez vous connecter à un pod pour ajuster les paramètres, modifier des fichiers et effectuer d'autres modifications en direct sur le pod.
Préparer l'environnement
Le moyen le plus simple de déployer des pods et d'autres ressources sur Kubernetes est d'utiliser des fichiers de configuration, parfois appelés fichiers manifestes. Les fichiers de configuration sont généralement rédigés en syntaxe YAML et contiennent les détails de la ressource. Il est plus facile de spécifier des options complexes avec les fichiers de configuration plutôt qu'avec une longue ligne d'arguments de ligne de commande.
La syntaxe YAML est semblable à la syntaxe JSON, en plus concise. Elle permet le même type de structure hiérarchique des objets et des propriétés. Le dépôt source de l'atelier contient des exemples de fichiers YAML qui ont été préparés pour vous.
- Saisissez la commande suivante dans Cloud Shell pour cloner le dépôt dans l'environnement Cloud Shell de l'atelier :
- Créez un lien symbolique qui servira de raccourci vers le répertoire de travail :
- Passez au répertoire qui contient les exemples de fichiers de l'atelier :
Nous vous avons fourni un exemple de fichier manifeste YAML de pod nommé new-nginx-pod.yaml
:
- Exécutez la commande suivante pour déployer votre fichier manifeste :
Cliquez sur Vérifier ma progression pour valider l'objectif.
- Pour afficher la liste des pods, exécutez la commande suivante :
Le résultat doit ressembler à cet exemple.
Résultat :
Vous pouvez voir votre nouveau pod nginx, ainsi que celui que nous avons créé plus tôt dans l'atelier.
Utiliser la redirection du shell pour se connecter à un pod
Certaines images de conteneurs contiennent un environnement de shell que vous pouvez lancer. Utiliser cet environnement de shell peut être plus pratique que d'exécuter des commandes individuelles à l'aide de kubectl
. Par exemple, l'image nginx contient un shell bash. Dans cette tâche, vous utilisez la redirection shell pour vous connecter au shell bash de votre nouveau pod nginx et effectuer une séquence d'actions.
- Dans Cloud Shell, exécutez la commande suivante pour démarrer un shell bash interactif dans le conteneur nginx :
Une invite du shell s'affiche.
Résultat :
Vous avez démarré un shell Bash interactif dans le conteneur du pod new-nginx. Si le pod a plusieurs conteneurs, vous pouvez spécifier le nom du conteneur que vous souhaitez utiliser avec l'option -c
.
Étant donné que l'image du conteneur nginx n'a par défaut aucun outil d'édition de texte, vous devez en installer un.
- Dans Cloud Shell, exécutez les commandes suivantes dans le shell bash nginx pour installer l'éditeur de texte nano :
Lorsque l'invite Do you want to continue (Y/n) (Voulez-vous continuer (O/n)) apparaît, appuyez sur Y pour continuer.
Vous devez créer un fichier test.html
dans le répertoire statique livré du conteneur nginx.
- Dans Cloud Shell, exécutez les commandes suivantes dans le shell bash nginx pour passer au répertoire de fichiers statiques et créer un fichier
test.html
:
- Dans Cloud Shell, saisissez le texte suivant dans la session nano du shell Bash nginx :
- Appuyez sur CTRL+X, puis sur Y et sur Entrée pour enregistrer le fichier et quitter l'éditeur nano.
- Dans Cloud Shell, exécutez la commande suivante dans le shell bash nginx pour le quitter :
Pour vous connecter au conteneur nginx modifié (contenant le nouveau fichier HTML statique) et le tester, vous pouvez créer un service. Une méthode plus simple consiste à utiliser le transfert de port pour se connecter au pod directement à partir de Cloud Shell.
- Dans Cloud Shell, exécutez la commande suivante pour configurer le transfert de port de Cloud Shell vers le pod nginx (du port 10081 de la VM Cloud Shell au port 80 du conteneur nginx) :
Le résultat doit ressembler à cet exemple.
Résultat :
Il s'agit d'un processus de premier plan. Vous devez donc ouvrir une autre instance Cloud Shell pour tester le conteneur.
- Dans la barre de menu de Cloud Shell, cliquez sur l'icône représentant un signe plus (+) pour démarrer une nouvelle session Cloud Shell.
Une deuxième session Cloud Shell apparaît dans votre fenêtre Cloud Shell. Vous pouvez passer d'une session à l'autre en cliquant sur les titres dans la barre de menu.
- Dans la deuxième session Cloud Shell, exécutez la commande suivante pour tester le conteneur nginx modifié via le transfert de port :
Le texte HTML que vous avez saisi dans le fichier test.html
s'affiche.
Afficher les journaux d'un pod
- Dans la barre de menu de Cloud Shell, cliquez sur l'icône représentant un signe plus (+) pour démarrer une nouvelle session Cloud Shell.
Une troisième session Cloud Shell apparaît dans votre fenêtre Cloud Shell. Comme précédemment, vous pouvez changer de session en cliquant dessus dans la barre de menu.
- Dans la troisième fenêtre Cloud Shell, exécutez la commande suivante pour afficher les journaux et pour diffuser les nouveaux à mesure qu'ils arrivent (tout en incluant les codes temporels) pour le pod new-nginx :
- Les journaux s'affichent dans la nouvelle fenêtre.
- Revenez à la deuxième fenêtre Cloud Shell et exécutez à nouveau la commande curl pour générer du trafic sur le pod.
- Examinez les autres messages de journal qui apparaissent dans la troisième fenêtre Cloud Shell.
- Fermez la troisième fenêtre Cloud Shell pour arrêter d'afficher les messages de journal.
- Fermez la première fenêtre Cloud Shell pour arrêter le processus de transfert de port.
Terminer l'atelier
Une fois l'atelier terminé, cliquez sur Terminer l'atelier. Google Cloud Skills Boost supprime les ressources que vous avez utilisées, puis efface le compte.
Si vous le souhaitez, vous pouvez noter l'atelier. Sélectionnez un nombre d'étoiles, saisissez un commentaire, puis cliquez sur Envoyer.
Le nombre d'étoiles correspond à votre degré de satisfaction :
- 1 étoile = très insatisfait(e)
- 2 étoiles = insatisfait(e)
- 3 étoiles = ni insatisfait(e), ni satisfait(e)
- 4 étoiles = satisfait(e)
- 5 étoiles = très satisfait(e)
Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.
Pour soumettre des commentaires, suggestions ou corrections, veuillez accéder à l'onglet Assistance.
Copyright 2020 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.