Introduction

Passer d’une application monolithe à une architecture microservices sur Kubernetes peut sembler complexe, mais c’est un atout majeur pour la scalabilité et la résilience de votre SaaS. Dans ce tutoriel, vous verrez comment :

  • préparer votre cluster EKS (Amazon Elastic Kubernetes Service),
  • containeriser vos services Node.js,
  • déployer et gérer la stack avec kubectl et Helm.

À la fin, votre SaaS pourra monter en charge automatiquement et vous maîtriserez les bonnes pratiques pour la production.

Prérequis

  • Compte AWS avec droits EKS et IAM configurés.
  • eksctl, AWS CLI et kubectl installés.
  • Applications Node.js packagées en images Docker (Node.js, Docker).
  • Helm pour la gestion des chartes.

Étape 1 : créer et configurer votre cluster EKS

# Installation d'eksctl (selon la doc officielle)
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" \
  | tar xz -C /usr/local/bin

# Création d'un cluster minimal
eksctl create cluster \
  --name saas-micro \
  --region eu-west-1 \
  --nodes 3 \
  --node-type t3.medium

Cette commande déploie un cluster de 3 nœuds. Vous pouvez ajuster le type d’instances selon votre charge.

Étape 2 : containeriser vos microservices Node.js

  1. Dans chaque projet, ajoutez un Dockerfile :
FROM node:18-alpine
WORKDIR /app
COPY package.json ./
RUN npm install --production
COPY . .
CMD ["node", "server.js"]

Construisez et poussez vos images :

docker build -t 123456789012.dkr.ecr.eu-west-1.amazonaws.com/service-a:latest .
aws ecr get-login-password --region eu-west-1 \
  | docker login --username AWS --password-stdin 123456789012.dkr.ecr.eu-west-1.amazonaws.com
docker push 123456789012.dkr.ecr.eu-west-1.amazonaws.com/service-a:latest

Étape 3 : déployer avec Helm

Créer un chart minimal (helm create service-a) puis modifiez values.yaml :

image:
  repository: 123456789012.dkr.ecr.eu-west-1.amazonaws.com/service-a
  tag: latest

service:
  type: ClusterIP
  port: 3000

resources:
  limits:
    cpu: 500m
    memory: 512Mi
  requests:
    cpu: 250m
    memory: 256Mi

Puis :

helm install service-a ./service-a \
  --namespace production \
  --create-namespace

Vérifiez le déploiement :

kubectl get pods -n production
kubectl get svc -n production

Bonnes pratiques pour la production

  • Configurer un Horizontal Pod Autoscaler selon l’usage CPU/mémoire.
  • Activer les probes (livenessProbe & readinessProbe) pour la fiabilité.
  • Mettre en place une solution de monitoring (Prometheus, Grafana).
  • Veiller à la sécurité des secrets via AWS Secrets Manager ou sealed-secrets.
  • Automatiser les mises à jour avec des pipelines GitOps (ArgoCD, Flux).

Conclusion

Vous disposez maintenant d’un cluster EKS prêt à recevoir vos microservices Node.js et d’un déploiement piloté par Helm. Cette approche améliore la résilience, la scalabilité et facilite la maintenance de votre SaaS. Pour aller plus loin, vous pouvez intégrer un maillage réseau (service mesh) ou une CI/CD avancée.

Vous visez un projet similaire ou besoin d’un audit de votre architecture ? Contactez nos experts.