Déploiement JavaScript (Node.js) sur Kubernetes : guide étape par étape

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Déploiement JavaScript (Node.js) sur Kubernetes : guide pratique de base



Le développement web moderne est impensable sans conteneurisation et orchestration. Si vous écrivez en JavaScript (Node.js), tôt ou tard se posera la question : comment exécuter de manière fiable une application en production, assurer sa mise à l'échelle et sa tolérance aux pannes ? La réponse — Kubernetes. Ce n'est pas seulement un outil à la mode, mais un standard de facto pour la gestion des applications conteneurisées.

Dans ce guide, nous allons parcourir le cycle complet de déploiement d'une application Node.js simple sur Kubernetes. Vous apprendrez comment empaqueter le code dans une image Docker, créer les manifestes nécessaires et tout exécuter dans un cluster. Le contenu est destiné aux développeurs qui connaissent déjà les bases de Node.js et souhaitent maîtriser les pratiques DevOps.



1. Préparation de l'application Node.js à la conteneurisation

Avant de déployer l'application sur Kubernetes, il faut l'empaqueter dans un conteneur. Pour cela, créons une simple application Express. Assurez-vous d'avoir installé Node.js et npm.

Créez le fichier app.js :

const express = require('express');const app = express();const port = process.env.PORT || 3000;

app.get('/', (req, res) => { res.json({ message: 'Bonjour depuis Node.js sur Kubernetes !' });});

app.get('/health', (req, res) => { res.status(200).send('OK');});

app.listen(port, () => { console.log(`Serveur en écoute sur le port ${port}`);});

Il est important d'ajouter un endpoint /health — Kubernetes l'utilisera pour vérifier le bon fonctionnement (liveness probe).

Créez maintenant un Dockerfile à la racine du projet :

FROM node:18-alpine

WORKDIR /usr/src/app

COPY package*.json ./RUN npm install --production

COPY . .

EXPOSE 3000

CMD ["node", "app.js"]

Construisez l'image et testez-la localement :

docker build -t my-node-app:latest .docker run -p 3000:3000 my-node-app:latest

Ouvrez http://localhost:3000 — vous devriez voir une réponse JSON.



2. Manifestes Kubernetes de base pour Node.js

Kubernetes fonctionne avec des configurations déclaratives (YAML). Pour déployer une application Node.js, nous aurons besoin d'au moins deux ressources principales : Deployment et Service.



2.1. Deployment

Le Deployment gère les répliques de votre application. Créez le fichier deployment.yaml :

apiVersion: apps/v1kind: Deploymentmetadata:  name: node-app-deployment  labels:    app: node-appspec:  replicas: 3  selector:    matchLabels:      app: node-app  template:    metadata:      labels:        app: node-app    spec:      containers:      - name: node-app        image: my-node-app:latest        ports:        - containerPort: 3000        env:        - name: PORT          value: "3000"        livenessProbe:          httpGet:            path: /health            port: 3000          initialDelaySeconds: 5          periodSeconds: 10        readinessProbe:          httpGet:            path: /            port: 3000          initialDelaySeconds: 3          periodSeconds: 5

Points importants :

  • replicas: 3 — Kubernetes créera 3 copies de votre application pour la tolérance aux pannes.
  • livenessProbe — vérifie si l'application est vivante. Si aucune réponse, Kubernetes redémarrera le conteneur.
  • readinessProbe — vérifie si l'application est prête à recevoir du trafic. Tant que la vérification n'est pas réussie, le pod ne reçoit pas de requêtes.


2.2. Service

Le Service assure l'accès réseau aux pods. Créez service.yaml :

apiVersion: v1kind: Servicemetadata:  name: node-app-servicespec:  selector:    app: node-app  ports:    - protocol: TCP                

Blogs

Book Recommendations