Points de contrôle
Create a new Cluster
/ 25
Create the StorageClass
/ 25
Deploying the Headless Service and StatefulSet
/ 25
Scaling the MongoDB replica set
/ 25
Exécuter une base de données MongoDB dans Kubernetes avec les StatefulSets
- GSP022
- Présentation
- Préparation
- Tâche 1 : Définir une zone de calcul
- Tâche 2 : Créer un cluster
- Tâche 3 : Configurer
- Tâche 4 : 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
- Tâche 6 : Mettre à l'échelle l'ensemble d'instances répliquées MongoDB
- Tâche 7 : Utiliser l'ensemble d'instances répliquées MongoDB
- Tâche 8 : Effectuer un nettoyage
- Félicitations !
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 :
- Kubernetes Engine : Qwik Start
- Gestion des déploiements avec Kubernetes Engine
- Datastore : Qwik Start
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 "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 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 :
- vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome) ;
- vous disposez d'un temps limité ; une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Démarrer l'atelier et se connecter à la console Google Cloud
-
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 :
- Le bouton Ouvrir la console Google
- Le temps restant
- Les identifiants temporaires que vous devez utiliser pour cet atelier
- Des informations complémentaires vous permettant d'effectuer l'atelier
-
Cliquez sur Ouvrir la console Google. 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.
Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte. -
Si nécessaire, copiez le nom d'utilisateur inclus dans le panneau Détails concernant l'atelier et collez-le dans la boîte de dialogue Se connecter. Cliquez sur Suivant.
-
Copiez le mot de passe inclus dans le panneau Détails concernant l'atelier et collez-le dans la boîte de dialogue de bienvenue. Cliquez sur Suivant.
Important : Vous devez utiliser les identifiants fournis dans le panneau de gauche. Ne saisissez pas vos identifiants Google Cloud Skills Boost. Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être 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 aux essais offerts.
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Activer Cloud Shell
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.
- Cliquez sur Activer Cloud Shell en haut de la console 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.
- (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
-
Cliquez sur Autoriser.
-
Vous devez à présent obtenir le résultat suivant :
Résultat :
- (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
Résultat :
Exemple de résultat :
gcloud
, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.
Tâche 1 : Définir une zone de calcul
Tout au long de cet atelier, vous allez utiliser l'outil de ligne de commande gcloud pour provisionner nos services.
- 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:
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.
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 :
- Télécharger l'ensemble d'instances répliquées/le side-car MongoDB (ou le conteneur d'utilitaire de notre cluster)
- Instancier une ressource StorageClass
- Instancier un service sans adresse IP de cluster
- Instancier un StatefulSet
- Exécutez la commande suivante pour cloner l'ensemble d'instances répliquées MongoDB/Kubernetes à partir du dépôt GitHub :
- Une fois le clonage effectué, accédez au répertoire
StatefulSet
à l'aide de la commande suivante :
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
:
Résultat :
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 :
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.
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 :
Vous devez obtenir le résultat suivant (sans les pointeurs vers le service sans adresse IP de cluster et le contenu StatefulSet) :
- Supprimez les options suivantes du fichier (lignes 49 et 50) :
- Assurez-vous que cette section de votre fichier se présente comme suit :
- 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 :
Vous devez obtenir le résultat suivant :
Cliquez sur Vérifier ma progression pour valider l'objectif.
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 :
Résultat : les trois membres sont opérationnels :
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 :
Résultat :
-
Attendez que les trois membres soient créés avant de poursuivre.
-
Connectez-vous au premier membre de l'ensemble d'instances répliquées :
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()
:
- Imprimez la configuration de l'ensemble d'instances répliquées, puis exécutez la commande
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 :
Cinq pods MongoDB sont disponibles en l'espace de quelques minutes.
- Exécutez la commande suivante pour les afficher :
Vous devez normalement obtenir le résultat suivant :
- Pour que le nombre de membres de l'ensemble d'instances répliquées passe de cinq à trois, exécutez la commande suivante :
Trois pods MongoDB sont disponibles en l'espace de quelques minutes.
- Exécutez la commande suivante pour les afficher :
Vous devez normalement obtenir le résultat suivant :
Cliquez sur Vérifier ma progression pour valider l'objectif.
Tâche 7 : Utiliser 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 :
Vous pouvez utiliser ces noms directement dans l'URI de la chaîne de connexion de votre application.
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 :
Tâche 8 : Effectuer un nettoyage
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 :
- Supprimez le service :
- Supprimez les volumes :
- Enfin, vous pouvez supprimer le cluster de test :
- 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 :
- Application Web pour effectuer une analyse de données en temps réel avec Kubernetes, Redis et BigQuery
- Orchestrer le cloud avec Kubernetes
Étapes suivantes et informations supplémentaires
- Découvrez-en plus sur Kubernetes Engine.
- Lisez l'article de blog concernant l'exécution de MongoDB sur Kubernetes avec des StatefulSets.
- 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.
- Bénéficiez gracieusement de 500 $ de crédits valables sur MongoDB dans Google Cloud Marketplace – Offre réservée aux nouveaux clients
Formations et certifications Google Cloud
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 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.