Déploiement JavaScript sur Kubernetes : guide de base pour débutants

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

Introduction : Pourquoi déployer JavaScript sur Kubernetes ?

\n\n

Le développement web moderne est impensable sans la conteneurisation. Si vous codez en JavaScript (Node.js) et souhaitez que votre application fonctionne de manière stable, évolue automatiquement et soit tolérante aux pannes, Kubernetes (K8s) deviendra votre meilleur allié.

\n\n

Kubernetes est une plateforme d'orchestration de conteneurs. Elle gère le déploiement, la mise à l'échelle et le fonctionnement de vos applications. Dans ce guide, nous allons aborder le déploiement de base d'une application Node.js simple sur Kubernetes. Vous apprendrez à empaqueter votre code dans une image Docker, à créer un Pod, un Service et un Deployment.

\n\n

Cet article est destiné aux débutants. Il est supposé que vous avez déjà installé Docker et Minikube (ou que vous avez accès à un cluster K8s).

\n\n

Étape 1 : Préparation de l'application Node.js et de l'image Docker

\n\n

Pour commencer, créons une application web simple avec Express. Elle répondra aux requêtes HTTP.

\n\n

1.1. Code de l'application (app.js)

\n\n

Créez le fichier app.js :

\n\n
const express = require('express');\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('/', (req, res) => {\n  res.send('Bonjour depuis Kubernetes !');\n});\n\napp.listen(PORT, () => {\n  console.log(`Serveur démarré sur le port ${PORT}`);\n});\n
\n\n

1.2. Fichier package.json

\n\n

Créez le fichier package.json :

\n\n
{\n  "name": "k8s-node-app",\n  "version": "1.0.0",\n  "main": "app.js",\n  "scripts": {\n    "start": "node app.js"\n  },\n  "dependencies": {\n    "express": "^4.18.2"\n  }\n}\n
\n\n

1.3. Dockerfile

\n\n

Créons maintenant le Dockerfile pour construire l'image :

\n\n
FROM node:18-alpine\n\nWORKDIR /usr/src/app\n\nCOPY package*.json ./\nRUN npm install\n\nCOPY . .\n\nEXPOSE 3000\n\nCMD ["node", "app.js"]\n
\n\n

1.4. Construction et chargement de l'image

\n\n

Exécutez les commandes :

\n\n
docker build -t my-node-app:v1 .\n
\n\n

Si vous utilisez Minikube, construisez l'image dans son environnement :

\n\n
minikube image build -t my-node-app:v1 .\n
\n\n

Ou chargez l'image sur Docker Hub / n'importe quel registre et spécifiez-la dans le manifeste.

\n\n

Étape 2 : Objets Kubernetes de base (Pod, Deployment, Service)

\n\n

Kubernetes fonctionne avec des objets. Pour le déploiement, nous aurons besoin de trois principaux :

\n\n
    \n
  • Pod — l'unité minimale, un ou plusieurs conteneurs.
  • \n
  • Deployment — gère les Pods, assure la mise à l'échelle et les mises à jour.
  • \n
  • Service — point d'accès stable aux Pods (généralement via ClusterIP ou NodePort).
  • \n
\n\n

2.1. Création du Deployment

\n\n

Créez le fichier deployment.yaml :

\n\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: node-app-deployment\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: node-app\n  template:\n    metadata:\n      labels:\n        app: node-app\n    spec:\n      containers:\n      - name: node-app\n        image: my-node-app:v1\n        ports:\n        - containerPort: 3000\n        env:\n        - name: PORT\n          value: "3000"\n
\n\n

Explication :

\n
    \n
  • replicas: 3 — nous lançons 3 copies de l'application pour la tolérance aux pannes.
  • \n
  • selector et labels — lient le Deployment aux Pods.
  • \n
  • image — le nom de votre image Docker.
  • \n
\n\n

2.2. Création du Service

\n\n

Créez le fichier service.yaml pour accéder à l'application :

\n\n
apiVersion: v1\nkind: Service\nmetadata:\n  name: node-app-service\nspec:\n  selector:\n    app: node-app\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 3000\n  type: NodePort\n
\n\n

Ce qui se passe ici :

\n
    \n
  • Le Service redirige le trafic du port

Blogs

Book Recommendations