Nous avons développé cet atelier avec notre partenaire MongoDB. Si vous avez accepté de recevoir les actualités sur les produits, les annonces et les offres sur la page de profil de votre compte, il est possible que vos informations personnelles soient partagées avec MongoDB, le collaborateur d'atelier.
GSP022
Présentation
Kubernetes est un outil d'orchestration de conteneurs Open Source qui gère les aspects complexes de l'exécution des applications conteneurisées. Vous pouvez exécuter des applications Kubernetes avec Kubernetes Engine, un service de calcul Google Cloud qui offre une grande variété d'options de personnalisation et d'intégration. Dans cet atelier, vous allez vous faire la main avec Kubernetes et apprendre à configurer une base de données MongoDB avec un StatefulSet. Exécuter une application avec état (une base de données) sur un service sans état (conteneur) peut sembler contradictoire. Toutefois, après quelques exercices pratiques dans cet atelier, vous découvrirez rapidement que ce n'est pas le cas. En fait, en utilisant quelques outils Open Source, vous découvrirez comment Kubernetes est parfaitement compatible avec des services sans état.
Objectifs de l'atelier
Dans cet atelier, vous allez apprendre à réaliser les opérations suivantes :
Déployer un cluster Kubernetes, un service sans adresse IP de cluster et un StatefulSet
Connecter un cluster Kubernetes à un ensemble d'instances répliquées MongoDB
Augmenter et réduire le nombre de membres d'ensembles d'instances répliquées
Supprimer les fichiers de l'atelier et arrêter les services ci-dessus
Prérequis
Cet atelier est d'un niveau avancé. Une bonne connaissance de Kubernetes ou des applications en conteneur est conseillée. Une expérience de Google Cloud Shell/SDK et de MongoDB est également recommandée. Si vous souhaitez vous familiariser avec ces services, consultez les ateliers suivants :
Lorsque vous êtes prêt, faites défiler la page vers le bas pour passer à la configuration de l'environnement de l'atelier.
Préparation
Avant de cliquer sur le bouton Start Lab (Démarrer l'atelier)
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 le bouton "Start Lab" (Démarrer l'atelier), indique combien de temps les ressources cloud resteront accessibles.
Cet atelier pratique Qwiklabs 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. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud Platform le temps de l'atelier.
Conditions requises
Pour réaliser cet atelier, vous devez remplir les conditions suivantes :
Vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome).
Vous devez disposer de suffisamment de temps pour réaliser l'atelier en une fois.
Remarque : Si vous possédez déjà un compte ou un projet GCP, veillez à ne pas l'utiliser pour réaliser cet atelier.
Démarrer votre atelier et vous connecter à la console
Cliquez sur le bouton Start Lab (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 verrez un panneau contenant les identifiants temporaires à utiliser pour cet atelier.
Copiez le nom d'utilisateur, puis cliquez sur Open Google Console (Ouvrir la console Google).
L'atelier affiche les ressources, puis ouvre un nouvel onglet affichant la page Choose an account (Sélectionner un compte).
Conseil : Ouvrez les onglets dans des fenêtres distinctes, placées côte à côte.
Sur la page "Choose an account" (Sélectionner un compte), cliquez sur Use Another Account (Utiliser un autre compte).
La page de connexion s'affiche. Collez le nom d'utilisateur que vous avez copié dans le panneau "Connection Details" (Informations de connexion). Copiez et collez ensuite le mot de passe.
Important : Vous devez utiliser les identifiants fournis dans le panneau "Connection Details" (Informations de connexion), et non vos identifiants Qwiklabs. Si vous possédez un compte GCP, ne vous en servez pas pour cet atelier (vous éviterez ainsi que des frais ne vous soient facturés).
Accédez aux pages suivantes :
Acceptez les conditions d'utilisation.
N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
Ne vous inscrivez pas à des essais gratuits.
La console GCP s'ouvre dans cet onglet après quelques instants.
Activer Google Cloud Shell
Google Cloud Shell est une machine virtuelle qui contient des outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud.
Google Cloud Shell offre un accès en ligne de commande à vos ressources GCP.
Dans la console GCP, dans la barre d'outils située en haut à droite, cliquez sur le bouton Ouvrir Cloud Shell.
Cliquez sur Continue (Continuez):
Il faut quelques instants pour mettre en service et se connecter à l'environnement. Lorsque vous êtes connecté, vous êtes déjà authentifié et le projet est défini sur votre PROJECT_ID. Par exemple:
gcloud est l'outil de ligne de commande associé à Google Cloud Platform. Pré-installé sur Cloud Shell, il est également compatible avec la saisie semi-automatique via la touche de tabulation.
Vous pouvez répertorier les noms des comptes actifs à l'aide de cette commande :
Avant de créer notre cluster Kubernetes, nous devrons définir une zone de calcul afin que les machines virtuelles de notre cluster soient toutes créées dans la même région. Pour ce faire, nous pouvons utiliser la commande gcloud config set. Exécutez la commande suivante dans votre environnement Cloud Shell pour définir la zone sur :
gcloud config set compute/zone {{{project_0.default_zone | ZONE}}}
Remarque : Pour en savoir plus sur les régions et les zones, consultez le guide Régions et zones.
Tâche 2 : Créer un cluster
Maintenant que notre zone est définie, nous allons créer un cluster de conteneurs.
Exécutez la commande suivante pour instancier un cluster nommé hello-world :
Cette commande crée un cluster avec deux nœuds ou machines virtuelles. Vous pouvez configurer des indicateurs supplémentaires pour cette commande afin de modifier le nombre de nœuds, les autorisations par défaut et d'autres variables. Pour en savoir plus, consultez la documentation de référence sur gcloud container clusters create.
Le lancement du cluster peut prendre quelques minutes. Une fois le lancement terminé, vous devriez obtenir un résultat semblable à celui-ci :
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer un cluster
Tâche 3 : Configurer
Maintenant que notre cluster est opérationnel, il est temps de l'intégrer à MongoDB. Nous allons utiliser un ensemble d'instances répliquées afin de garantir la disponibilité élevée et la redondance de nos données, qui sont essentielles pour l'exécution des applications de production.
Avant de nous lancer, nous allons effectuer les opérations suivantes :
Une fois le clonage effectué, accédez au répertoire StatefulSet à l'aide de la commande suivante :
cd ./mongo-k8s-sidecar/example/StatefulSet/
Après avoir vérifié que les fichiers ont été téléchargés et que vous avez accédé au répertoire approprié, vous êtes prêt à créer une StorageClass Kubernetes.
Créer la StorageClass
Une StorageClass indique à Kubernetes le type de stockage que vous voulez utiliser pour les nœuds de base de données. Sur Google Cloud, deux options de stockage sont disponibles : SSD et disques durs.
Si vous examinez le répertoire StatefulSet (à l'aide de la commande ls), vous pouvez y voir les fichiers de configuration SSD et HDD à la fois pour Azure et Google Cloud.
Exécutez la commande suivante pour examiner le fichier googlecloud_ssd.yaml :
Cette configuration crée une nouvelle StorageClass appelée "fast" qui repose sur des volumes SSD.
Exécutez la commande suivante pour déployer la StorageClass :
kubectl apply -f googlecloud_ssd.yaml
Maintenant que la StorageClass est configurée, notre StatefulSet peut demander un volume qui sera automatiquement créé.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer la StorageClass
Tâche 4 : Déployer le service sans adresse IP de cluster et le StatefulSet
Rechercher et inspecter les fichiers
Avant de découvrir plus en détail en quoi consistent le service sans adresse IP de cluster et les StatefulSets, nous allons ouvrir le fichier de configuration (mongo-statefulset.yaml) qui les contient :
nano mongo-statefulset.yaml
Vous devez obtenir le résultat suivant (sans les pointeurs vers le service sans adresse IP de cluster et le contenu StatefulSet) :
Quittez l'éditeur nano avec le raccourci CTRL+X > Y > ENTRÉE.
Présentation du service sans adresse IP de cluster
La première section de mongo-statefulset.yaml renvoie à un service sans adresse IP de cluster. Dans la terminologie Kubernetes, un service décrit des stratégies ou des règles pour accéder à des pods spécifiques. En résumé, un service sans adresse IP de cluster est un service qui n'impose pas l'équilibrage de charge. Combiné à des StatefulSet, il nous fournit des DNS individuels pour accéder à nos pods, et ainsi un moyen pour établir individuellement la connexion avec l'ensemble de nos nœuds MongoDB. Dans le fichier yaml, vous pouvez vous assurer que le service est sans adresse IP de cluster en vérifiant que le champ clusterIP est défini sur None (Sans).
Présentation de la configuration StatefulSet
La configuration StatefulSet constitue la seconde section de mongo-statefulset.yaml. C'est le principe de base de cette application : c'est la charge de travail qui exécute MongoDB et qui orchestre vos ressources Kubernetes. En examinant le fichier yaml, nous constatons que la première section décrit l'objet StatefulSet. Ensuite, la section "Metadata" (Métadonnées) définit les libellés et le nombre d'instances répliquées.
La spécification du pod. terminationGracePeriodSeconds ferme alors le pod en douceur lorsque vous réduisez le nombre d'instances répliquées. C'est à ce stade que la configuration des deux conteneurs intervient. Le premier exécute MongoDB avec des indicateurs de ligne de commande qui configurent le nom de l'ensemble d'instances répliquées. Il installe également le volume de stockage persistant dans /data/db : l'emplacement où MongoDB enregistre ses données. Le deuxième conteneur exécute le side-car. Ce conteneur side-car va configurer automatiquement l'ensemble d'instances répliquées MongoDB. Comme indiqué précédemment, un "sidecar" est un conteneur auxiliaire qui aide le conteneur principal à traiter ses tâches.
Enfin, la dernière section présente la configuration des volumeClaimTemplates, qui utilisent la classe de stockage précédemment créée pour le provisionnement du volume. Cela permet de provisionner un disque de 100 Go pour chaque instance dupliquée MongoDB.
Déployer le service sans adresse IP de cluster et le StatefulSet
Maintenant que nous savons en quoi consistent un service sans adresse IP de cluster et un StatefulSet, nous pouvons passer à l'étape suivante : leur déploiement.
Les deux étant empaquetés dans mongo-statefulset.yaml, nous pouvons les exécuter tous les deux à l'aide de la commande suivante :
kubectl apply -f mongo-statefulset.yaml
Vous devez obtenir le résultat suivant :
service/mongo created
statefulset.apps/mongo created
Cliquez sur Vérifier ma progression pour valider l'objectif.
Déployer le service sans adresse IP de cluster et le StatefulSet
Tâche 5 : Se connecter à l'ensemble d'instances répliquées MongoDB
Maintenant que nous avons un cluster en cours d'exécution et que notre ensemble d'instances répliquées est déployé, nous pouvons nous y connecter.
Attendre le déploiement complet de l'ensemble d'instances répliquées MongoDB
L'objet StatefulSet Kubernetes déploie chaque pod tour à tour. Il attend que le membre de l'ensemble d'instances répliquées MongoDB démarre complètement et crée le disque de sauvegarde avant de lancer le membre suivant.
Exécutez la commande suivante pour vérifier que les trois membres sont opérationnels :
kubectl get statefulset
Résultat : les trois membres sont opérationnels :
NAME READY AGE
mongo 3/3 103s
Lancer et afficher l'ensemble d'instances répliquées MongoDB
À ce stade, vous devez avoir trois pods créés dans votre cluster. Ils correspondent aux trois nœuds de votre ensemble d'instances répliquées MongoDB.
Exécutez la commande suivante pour les afficher :
kubectl get pods
Résultat :
NAME READY STATUS RESTARTS AGE
mongo-0 2/2 Running 0 3m
mongo-1 2/2 Running 0 3m
mongo-2 2/2 Running 0 3m
Attendez que les trois membres soient créés avant de poursuivre.
Connectez-vous au premier membre de l'ensemble d'instances répliquées :
kubectl exec -ti mongo-0 -- mongosh
Vous disposez maintenant d'un environnement REPL connecté à MongoDB.
Nous allons maintenant instancier l'ensemble d'instances répliquées avec une configuration par défaut à l'aide de la commande rs.initiate() :
rs.initiate()
Imprimez la configuration de l'ensemble d'instances répliquées, puis exécutez la commande rs.conf() :
rs.conf()
Cette commande fournit les détails du membre actuel de l'ensemble d'instances répliquées rs0. Dans cet atelier, un seul membre est affiché. Pour obtenir les détails de tous les membres, vous devez exposer l'ensemble d'instances répliquées par le biais de services supplémentaires tels que NodePort ou LoadBalancer.
Saisissez "exit" (quitter), puis appuyez sur Entrée pour quitter l'environnement REPL.
Tâche 6 : Mettre à l'échelle l'ensemble d'instances répliquées MongoDB
Kubernetes et les StatefulSets présentent un grand avantage : ils vous offrent la possibilité d'augmenter ou de diminuer le nombre d'instances répliquées MongoDB grâce à une seule commande.
Pour que le nombre de membres de l'ensemble d'instances répliquées passe de trois à cinq, exécutez la commande suivante :
kubectl scale --replicas=5 statefulset mongo
Cinq pods MongoDB sont disponibles en l'espace de quelques minutes.
Exécutez la commande suivante pour les afficher :
kubectl get pods
Vous devez normalement obtenir le résultat suivant :
NAME READY STATUS RESTARTS AGE
mongo-0 2/2 Running 0 41m
mongo-1 2/2 Running 0 39m
mongo-2 2/2 Running 0 37m
mongo-3 2/2 Running 0 4m
mongo-4 2/2 Running 0 2m
Pour que le nombre de membres de l'ensemble d'instances répliquées passe de cinq à trois, exécutez la commande suivante :
kubectl scale --replicas=3 statefulset mongo
Trois pods MongoDB sont disponibles en l'espace de quelques minutes.
Exécutez la commande suivante pour les afficher :
kubectl get pods
Vous devez normalement obtenir le résultat suivant :
NAME READY STATUS RESTARTS AGE
mongo-0 2/2 Running 0 41m
mongo-1 2/2 Running 0 39m
mongo-2 2/2 Running 0 37m
Cliquez sur Vérifier ma progression pour valider l'objectif.
Mettre à l'échelle l'ensemble d'instances répliquées MongoDB
Chaque pod d'un StatefulSet assisté par un service sans adresse IP de cluster aura un nom DNS stable. Le format du modèle est : <nom-pod>.<nom-service>
Cela signifie que les noms DNS de l'ensemble d'instances répliquées MongoDB sont les suivants :
L'utilisation d'une base de données ne fait pas partie des notions abordées dans cet atelier. Toutefois, dans ce cas, l'URI de la chaîne de connexion est la suivante :
Dans la mesure où vous travaillez dans un environnement d'atelier, toutes vos ressources et votre projet seront nettoyés et supprimés automatiquement à l'issue de l'atelier. Cependant, nous souhaitons vous expliquer comment nettoyer les ressources vous-même afin que vous puissiez limiter vos dépenses et avoir un comportement responsable dans le cloud lorsque vous serez dans votre propre environnement.
Pour nettoyer les ressources déployées, exécutez les commandes suivantes afin de supprimer le StatefulSet, le service sans adresse IP de cluster et les volumes provisionnés.
Supprimez le StatefulSet :
kubectl delete statefulset mongo
Supprimez le service :
kubectl delete svc mongo
Supprimez les volumes :
kubectl delete pvc -l role=mongo
Enfin, vous pouvez supprimer le cluster de test :
gcloud container clusters delete "hello-world"
Appuyez sur Y, puis sur Entrée pour confirmer la suppression du cluster de test.
Félicitations !
Avec Kubernetes Engine, vous disposez d'une solution efficace et flexible pour exécuter des conteneurs sur Google Cloud. Les StatefulSets vous permettent d'exécuter des charges de travail avec état sur Kubernetes, comme des bases de données. Vous avez découvert ces opérations :
Création d'un ensemble d'instances répliquées MongoDB avec des StatefulSets Kubernetes
Connexion à l'ensemble d'instances répliquées MongoDB
Mise à l'échelle de l'ensemble d'instances répliquées
Terminer votre quête
Cet atelier d'auto-formation fait partie de la quête Cloud Architecture. Une quête est une série d'ateliers associés qui constituent un parcours de formation. Si vous terminez une quête, vous obtenez un badge attestant de votre réussite. Vous pouvez rendre publics les badges que vous recevez et ajouter leur lien dans votre CV en ligne ou sur vos comptes de réseaux sociaux. Inscrivez-vous à n'importe quelle quête contenant cet atelier pour obtenir immédiatement les crédits associés. Découvrez toutes les quêtes disponibles dans le catalogue Google Cloud Skills Boost.
Atelier suivant
Continuez la quête en suivant le prochain atelier ou consultez ces suggestions :
Envie de connaître le prix de l'exécution de vos charges de travail ? Consultez le Simulateur de coût. Vous pouvez y indiquer le nombre d'instances et de processeurs virtuels, ainsi que vos besoins en mémoire.
...helps you make the most of Google Cloud technologies. Our classes include technical skills and best practices to help you get up to speed quickly and continue your learning journey. We offer fundamental to advanced level training, with on-demand, live, and virtual options to suit your busy schedule. Certifications help you validate and prove your skill and expertise in Google Cloud technologies.
Dernière modification du manuel : 9 octobre 2023
Dernier test de l'atelier : 9 octobre 2023
Copyright 2024 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.
Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.
Utilisez la navigation privée
Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
Cliquez sur Ouvrir la console en navigation privée
Connectez-vous à la console
Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.
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
Un atelier à la fois
Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci
Utilisez la navigation privée pour effectuer l'atelier
Ouvrez une fenêtre de navigateur en mode navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
Les conteneurs sont de plus en plus utilisés pour exécuter et mettre à l'échelle des applications via plusieurs fournisseurs cloud ou à la fois dans le cloud et sur du matériel sur site. Cet atelier présente brièvement l'exécution d'une base de données MongoDB sur Google Kubernetes Engine à l'aide de Docker.
Durée :
0 min de configuration
·
Accessible pendant 60 min
·
Terminé après 45 min