Les déploiements d’applications dans Kubernetes peuvent être difficiles, surtout pour les applications étatiques telles que MongoDB sur un cluster Kubernetes. Comment faciliter le déploiement ? Laissez l’opérateur Kubernetes MongoDB MongoDB déployer et gérer automatiquement les applications étatiques dans votre cluster Kubernetes.
Dans ce tutoriel, vous apprendrez comment déployer MongoDB sur Kubernetes en utilisant l’opérateur Kubernetes MongoDB.
Continuez à lire et commencez à automatiser vos déploiements Kubernetes !
Prérequis
Ce tutoriel sera une démonstration pratique. Pour suivre, assurez-vous d’avoir les exigences suivantes :
- A Kubernetes cluster – This demo uses the Kubernetes cluster v1.23.
- Kubectl installé sur la machine locale.
- MongoDB Compass installé sur la machine locale.
- Git installé sur votre machine.
- jq installé sur la machine locale.
Création de l’espace de noms pour MongoDB
Lors du déploiement d’applications sur Kubernetes, il est toujours recommandé de créer un espace de noms spécifique pour vos projets.
Les espaces de noms facilitent la gestion des ressources Kubernetes pour les administrateurs et évitent les collisions de noms. Dans le même temps, la création d’espaces de noms empêche une utilisation incorrecte des ressources dans l’environnement Kubernetes.
Ouvrez votre terminal et exécutez la commande kubectl create
ci-dessous pour créer un nouvel espace de noms (ns
) appelé mongodb
sur votre cluster Kubernetes.
Exécutez maintenant la commande kubectl get
ci-dessous pour vérifier la liste des espaces de noms sur votre cluster Kubernetes.
Vous verrez un nouvel espace de noms appelé mongodb disponible sur votre cluster, comme indiqué ci-dessous.

Téléchargement de l’opérateur Kubernetes MongoDB
Après avoir créé un espace de noms, il est temps de télécharger l’opérateur Kubernetes MongoDB. L’opérateur Kubernetes MongoDB est un ensemble d’opérateurs Kubernetes. Ces opérateurs Kubernetes offrent un déploiement, une configuration et une gestion automatiques de MongoDB Community sur l’environnement Kubernetes.
Exécutez la commande git
ci-dessous pour cloner
le projet MongoDB Kubernetes Operator sur votre machine locale.
Maintenant, exécutez chaque commande ci-dessous pour changer votre répertoire de travail actuel en mongodb-kubernetes-operator
et lister (ls
) tous les fichiers et répertoires disponibles.
Vous verrez un sous-répertoire nommé config à l’intérieur du répertoire du projet ~/mongodb-kubernetes-operator, comme indiqué ci-dessous. Le sous-répertoire config contient des exemples de fichiers YAML pour le déploiement de MongoDB sur Kubernetes.

Déploiement de l’opérateur MongoDB
Maintenant que votre espace de noms personnalisé et votre opérateur Kubernetes MongoDB sont configurés, vous êtes prêt à déployer l’opérateur MongoDB sur votre cluster Kubernetes. Comment ? Vous utiliserez la configuration à l’intérieur du répertoire config.
L’opérateur MongoDB gère le cycle de vie de votre déploiement MongoDB sur le cluster Kubernetes. L’opérateur créera, gérera et mettra automatiquement à l’échelle l’état de votre déploiement MongoDB.
Pour déployer l’opérateur MongoDB, vous devez créer une définition de ressources personnalisées (CRD) Kubernetes et le contrôleur. Le CRD Kubernetes est extensible à l’API Kubernetes, ce qui vous permet de créer des ressources personnalisées dans Kubernetes.
1. Exécutez la commande kubectl apply
ci-dessous pour créer un nouveau CRD Kubernetes pour le déploiement de MongoDB.
Le l’opérateur Kubernetes a remplacé toute interaction humaine pour déployer une application sur Kubernetes. L’opérateur est un contrôleur de pod qui déploie et gère automatiquement votre application à état sur Kubernetes.

2. Ensuite, exécutez la commande kubectl get
suivante pour vérifier la liste des crd
disponibles dans votre cluster Kubernetes.
Ci-dessous, vous pouvez voir le CRD avec le nom mongodbcommunity.mongodbcommunity.mongodb.org.

3. Exécutez la commande ci-dessous pour créer un nouveau contrôle d’accès basé sur les rôles (RBAC) personnalisé pour l’opérateur MongoDB, et spécifiez la mise en œuvre du RBAC dans l’espace de noms mongodb.
Cette commande crée un nouveau rôle, un rolebinding et un serviceaccount pour l’opérateur MongoDB, qui sont des autorisations personnalisées sur votre cluster Kubernetes. Ces autorisations personnalisées sont nécessaires pour le déploiement et la gestion automatique de MongoDB.

4. Maintenant, exécutez chaque commande kubectl
ci-dessous pour vérifier le rôle, le rolebinding et le serviceaccount de l’opérateur MongoDB.
La sortie ci-dessous montre que le rôle, le rolebinding et le serviceaccount mongodb-kubernetes-operator sont créés dans l’espace de noms mongodb.

5. Une fois la vérification terminée, exécutez la commande kubectl
ci-dessous pour déployer l’opérateur MongoDB dans l’espace de noms mongodb
.
Cette commande crée un nouveau pod (mongodb-kubernetes-operator) avec l’image Docker de base (quay.io/mongodb/mongodb-kubernetes-operator). Ce pod servira de contrôleur pour le déploiement automatique de ReplicaSets MongoDB sur le cluster Kubernetes.
Ci-dessous, vous pouvez voir que le déploiement de l’opérateur MongoDB est créé, mais le pod est encore en cours d’initialisation.

6. Enfin, exécutez les commandes suivantes pour vérifier le déploiement et les pods dans l’espace de noms mongodb
.
Comme vous pouvez le voir ci-dessous, le pod de l’opérateur MongoDB est en cours d’exécution.

Déploiement de MongoDB ReplicaSet sur Kubernetes
Après le déploiement de votre MongoDB, vous déploierez ReplicaSet sur votre Kubernetes pour assurer une haute disponibilité et une redondance pour votre déploiement MongoDB. Vous ne voudriez pas de temps d’arrêt sur votre déploiement.
Le déploiement de ReplicaSets MongoDB à l’aide de l’opérateur Kubernetes MongoDB est sécurisé par défaut en utilisant l’authentification SCRAM pour les utilisateurs. Dans le même temps, vous pouvez utiliser une connexion sécurisée TLS pour les connexions des utilisateurs et des applications et exposer des métriques Prometheus pour surveiller les ressources.
Connexe: Démarrage avec la surveillance du cluster Kubernetes Grafana & Prometheus
A l’intérieur du répertoire config/samples/, vous verrez plusieurs exemples de fichiers YAML pour le déploiement de ReplicaSet. Chaque fichier peut être utilisé dans différents scénarios de déploiement, mais le fichier de déploiement ReplicaSet par défaut est mongodb.com_v1_mongodbcommunity_cr.yaml.
1. Modifiez le fichier YAML pour votre déploiement en utilisant votre éditeur préféré. Dans cette démonstration, nous utilisons le fichier /mongodb.com_v1_hostpath.yaml pour un déploiement local. Ce fichier YAML se trouve dans le répertoire config/samples/arbitrary_statefulset_configuration/.
Si vous déployez l’opérateur Kubernetes MongoDB sur des services cloud tels que GKE et AKS, utilisez le fichier YAML mongodb.com_v1_mongodbcommunity_cr.yaml. Mais si vous déployez localement à l’intérieur de Kind ou Minikube, vous pouvez utiliser le fichier YAML personnalisé (arbitrary_statefulset_configuration/mongodb.com_v1_hostpath.yaml), qui crée automatiquement des PV et PVC personnalisés pour les pods ReplicaSet de MongoDB.
ci-dessous, changez le nombre (membres) de ReplicaSets que vous souhaitez déployer en fonction de votre environnement, mais par défaut, c’est 3. Pour ce tutoriel, le nombre de ReplicaSets est fixé à 2.
Remplacez <votre-mot-de-passe-ici> par votre mot de passe fort. Vous utiliserez ce mot de passe pour vous connecter à la base de données MongoDB, et par défaut, vous utiliserez l’authentification SCRAM.
Enregistrez les modifications et fermez l’éditeur une fois satisfait de votre mot de passe.
Ensuite, exécutez la commande kubectl
ci-dessous pour déployer (apply
) le ReplicaSet MongoDB en utilisant le mongodb.com_v1_hostpath.yaml
dans l’espace de noms mongodb.
Cette commande crée ce qui suit :
- A new custom resource (MongoDBCommunity) with the name mdb0 under the
mongodbcommunity.mongodb.com/v1
CRD
- Secrets Kubernetes pour stocker les mots de passe des utilisateurs MongoDB. En même temps, certains PV et PVC avec le type en tant que
hostPath
pour le Replica Set MongoDB.
Le déploiement prendra un certain temps, en fonction de la taille des ReplicaSets à créer et du cluster Kubernetes lui-même.

3. Après le déploiement, exécutez chaque commande ci-dessous pour vérifier les ressources personnalisées et les pods sur l’espace de noms mongodb
.
La sortie ci-dessous montre ce qui suit:
- La ressource personnalisée MongoDBCommunity avec le nom mdb0 s’exécute avec MongoDB v4.4.0.
- Les deux pods ReplicaSet MongoDB s’exécutent avec les noms mdb0-0 et mdb0-1. Chaque pod contient deux conteneurs différents, le mongod, et le conteneur mongodb-agent.

4. Enfin, exécutez une autre commande kubectl
ci-dessous pour vérifier les pv
et pvc
sur l’espace de noms mongodb
.
La sortie ci-dessous vous montre certains pv et pvc utilisés par les pods ReplicaSet MongoDB.

Création d’un nouvel utilisateur et d’une base de données pour le déploiement de MongoDB
Vous avez terminé le déploiement de l’opérateur MongoDB et des ReplicaSets sur votre cluster Kubernetes à ce stade. La prochaine étape consiste à créer une nouvelle base de données et un nouvel utilisateur MongoDB pour votre application.
Vous allez créer un nouveau secret Kubernetes pour le nouvel utilisateur, modifier la ressource personnalisée du déploiement ReplicaSet et mettre à jour le ReplicaSet sur votre cluster.
1. Créez un nouveau fichier YAML en utilisant votre éditeur préféré et remplissez le secret Kubernetes suivant. Vous pouvez nommer le fichier YAML comme vous le souhaitez, mais le fichier est nommé new-user.yaml dans ce tutoriel.
Ce fichier YAML crée un nouveau secret Kubernetes avec le nom « myappdata » et le mot de passe « myapppassword ».
2. Ensuite, exécutez la commande kubectl
ci-dessous pour exécuter la configuration new-user.yaml
.
Cette commande crée et applique (apply) un nouveau secret Kubernetes à votre cluster et applique ce secret à l’espace de noms « mongodb ».

3. Modifiez le fichier YAML de votre configuration CRD ReplicaSet (mongodb.com_v1_hostpath.yaml) dans le répertoire config/samples/arbitrary_statefulset_configuration
Ajoutez la configuration suivante au fichier mongodb.com_v1_hostpath.yaml, qui crée la base de données et l’utilisateur pour MongoDB.
N’oubliez pas de remplacer « scram-secret-myapp » par vos propres informations d’identification scram, enregistrez les modifications apportées au fichier et fermez l’éditeur.
4. Maintenant, exécutez la commande ci-dessous pour appliquer
les nouvelles modifications que vous avez apportées dans le fichier mongodb.com_v1_hostpath.yaml
à l’étape trois.

5. Enfin, exécutez chaque commande ci-dessous pour générer les connexions détaillées à MongoDB pour votre application. Ces commandes génèrent la connexion détaillée à MongoDB pour vos applications en sortie JSON et analysent la sortie à l’aide de la commande jq
en ligne de commande.
Remplacez mdb0-admin-mongoadmin par les détails de votre environnement comme suit :
mdb0
– Le nom des métadonnées des ressources MongoDB.
admin
– La base de données à authentifier.
mongoadmin
– L’utilisateur que vous utiliserez pour l’authentification
La sortie ci-dessous montre que vous pouvez vous connecter à MongoDB en utilisant les connexions standard et standardSrv. Vous verrez également le nom d’utilisateur et le mot de passe de votre déploiement MongoDB.

Connexion au déploiement MongoDB
Vous avez terminé le déploiement de MongoDB sur le cluster Kubernetes en utilisant l’opérateur Kubernetes MongoDB. Mais comment savoir si le déploiement fonctionne ? Vous vérifierez la base de données de votre machine locale et la connexion de l’utilisateur à MongoDB à l’intérieur du cluster Kubernetes.
Pour vérifier la connexion à votre déploiement MongoDB, vous utiliserez le transfert de port. Le transfert de port dans Kubernetes vous permet de créer un port de transfert à partir de n’importe quel service Kubernetes vers votre port local.
1. Exécutez la commande kubectl
ci-dessous pour obtenir la liste des services (svc
) dans l’espace de noms mongodb
(-n
).
Ci-dessous, vous verrez le service nommé mdb0-svc, qui expose le port 27017 (port par défaut de MongoDB).

2. Ensuite, exécutez la commande ci-dessous pour créer une redirection de port vers le cluster Kubernetes.
Cette commande crée une nouvelle redirection de port sur le service Kubernetes (mdb0-svc) et redirige le port local 27017 vers le port du service Kubernetes 27017.

3. Enfin, ouvrez votre application MongoDB Compass sur votre machine locale, ajoutez une nouvelle connexion avec le format suivant et cliquez sur Connecter pour vous connecter à MongoDB.
Modifiez le nom d’utilisateur et le mot de passe avec votre utilisateur et mot de passe MongoDB.


Lorsque la connexion réussit, vous obtiendrez la fenêtre suivante confirmant que le déploiement de MongoDB sur Kubernetes fonctionne correctement.
Pour l’utilisateur mongoadmin, vous verrez les bases de données par défaut (local, config et admin).

Pour l’utilisateur appuser, vous ne verrez qu’une seule base de données de privilèges appelée appdb1.

Conclusion
Tout au long de ce tutoriel, vous avez appris comment déployer MongoDB sur le cluster Kubernetes en utilisant l’opérateur Kubernetes MongoDB. Vous avez également abordé l’utilisation de base de l’opérateur Kubernetes. Et à ce stade, vous avez déjà une connaissance solide sur le déploiement et la gestion automatiques des applications sur Kubernetes.
Pourquoi ne pas mettre en place une connexion TLS sur votre déploiement MongoDB pour tirer parti de cette nouvelle connaissance ? La connexion TLS sécurise les connexions entre les ensembles de réplicas et sécurise les connexions client ou application vers MongoDB.