Accueil » Cours » Administration système » Cloud Computing » TP02 – Déployer une application sur Kubernetes

Objectif : Déployer une application Node.js avec MongoDB sur un cluster Kubernetes en utilisant Minikube.

Prérequis :

  • Docker

  • Minikube

  • Kubernetes CLI (kubectl)

 

Étape 1 : Installer Minikube

Minikube permet de déployer Kubernetes localement, ce qui est idéal pour tester des déploiements en environnement de développement.

  1. Pour installer Minikube, suivez la documentation officielle : Installation de Minikube.

  2. Démarrez Minikube avec la commande suivante :

    minikube start

    Cela créera un cluster Kubernetes local sur votre machine.

Étape 2 : Créer un fichier deployment.yaml

Nous allons créer un fichier deployment.yaml pour déployer une application Node.js et une base de données MongoDB. Ce fichier va définir les ressources Kubernetes nécessaires pour déployer ces composants.

Créez un fichier deployment.yaml avec le contenu suivant :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nodejs-app-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nodejs-app
  template:
    metadata:
      labels:
        app: nodejs-app
    spec:
      containers:
      - name: nodejs-app
        image: your_dockerhub_username/nodejs-app:latest # Remplacez par votre image Docker
        ports:
        - containerPort: 3000
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongodb-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongodb
  template:
    metadata:
      labels:
        app: mongodb
    spec:
      containers:
      - name: mongodb
        image: mongo:latest
        ports:
        - containerPort: 27017
        volumeMounts:
        - name: mongo-data
          mountPath: /data/db
      volumes:
      - name: mongo-data
        emptyDir: {}

Explication :

  • Ce fichier deployment.yaml crée deux déploiements : un pour l’application Node.js et un autre pour MongoDB.

  • Le déploiement MongoDB utilise un volume emptyDir pour stocker les données temporairement.

Étape 3 : Appliquer la configuration Kubernetes

Pour appliquer la configuration et déployer l’application et la base de données sur votre cluster, exécutez la commande suivante :

kubectl apply -f deployment.yaml

Cette commande va créer les déploiements et les pods correspondants sur votre cluster Kubernetes local.

Étape 4 : Exposer l’application à l’aide d’un service LoadBalancer

Pour que votre application soit accessible, vous devez créer un service LoadBalancer. Créez un fichier service.yaml avec le contenu suivant :

apiVersion: v1
kind: Service
metadata:
  name: nodejs-app-service
spec:
  type: LoadBalancer
  selector:
    app: nodejs-app
  ports:
    - protocol: TCP
      port: 3000
      targetPort: 3000

Appliquez le service en utilisant la commande suivante :

kubectl apply -f service.yaml

Pour obtenir l’URL du service, utilisez la commande suivante :

minikube service nodejs-app-service --url

Cela vous fournira une URL que vous pouvez utiliser pour accéder à l’application Node.js déployée.

Étape 5 : Vérification

Pour vérifier que vos pods sont bien en cours d’exécution, utilisez la commande suivante :

kubectl get pods

Vous devriez voir les pods de votre application Node.js et MongoDB en cours d’exécution.

 

Conclusion : Vous avez déployé avec succès une application Node.js avec une base de données MongoDB sur un cluster Kubernetes local en utilisant Minikube. Vous avez utilisé des déploiements pour définir les ressources et un service pour exposer votre application à l’externe.

Suggestions pour aller plus loin :

  • Créer un volume persistant pour MongoDB au lieu d’un volume emptyDir.

  • Ajouter un fichier ConfigMap pour gérer la configuration de l’application.

  • Explorer l’autoscaling des pods en fonction de la charge de travail.

Retour en haut