Projet académique — Mastère Infrastructures, Sécurité & Cloud
Migration d'une architecture microservices Docker Compose vers Kubernetes avec GitOps (ArgoCD) sur AWS EKS.
AlgoHive est une plateforme d'apprentissage du code basée sur une architecture microservices. Ce projet part du code source officiel AlgoHive et a pour objectif de :
- Transformer les fichiers
docker-composeen manifestes Kubernetes production-ready - Implémenter un workflow GitOps avec ArgoCD (pattern App of Apps)
- Déployer l'ensemble sur un cluster AWS EKS
- Sécuriser les secrets via Sealed Secrets (Bitnami)
┌─────────────────────────────────────────┐
│ AWS EKS — eu-west-3 │
│ Namespace: algohive │
│ │
Internet ──── ALB ──►│ algohive-client (React/Nginx :80) │
│ algohive-server (API Go :8080) │
│ beehub (Admin :8081) │
│ │
│ BeeAPI Toulouse (:5000) │
│ BeeAPI Montpellier (:5000) │
│ BeeAPI Lyon (:5000) │
│ BeeAPI Staging (:5000) │
│ │
│ Postgres (:5432) Redis (:6379) │
└─────────────────────────────────────────┘
▲
│ GitOps sync
│
┌─────────────────┐
│ ArgoCD │
│ App of Apps │
└────────┬─────────┘
│
┌────────▼─────────┐
│ GitHub Repo │
│ (k8s-v2/) │
└──────────────────┘
| Service | Rôle | Port |
|---|---|---|
algohive-client |
Interface étudiant (React) | 80 |
algohive-server |
API backend, auth JWT, scores | 8080 |
beehub |
Back-office professeurs | 8081 |
beeapi-server-tlse |
Catalogue puzzles Toulouse | 5000 |
beeapi-server-mpl |
Catalogue puzzles Montpellier | 5000 |
beeapi-server-lyon |
Catalogue puzzles Lyon | 5000 |
beeapi-server-staging |
Catalogue puzzles Staging | 5000 |
algohive-db |
PostgreSQL (données, auth) | 5432 |
algohive-cache |
Redis (sessions, cache) | 6379 |
| Couche | Technologie |
|---|---|
| Cloud | AWS EKS (eu-west-3) |
| Orchestration | Kubernetes 1.35 |
| GitOps | ArgoCD — App of Apps pattern |
| Config management | Kustomize (base/overlays) |
| Secret management | Bitnami Sealed Secrets v0.36.0 |
| Exposition | AWS Load Balancer Controller + ALB Ingress |
| Stockage | AWS EBS via CSI Driver (gp2) |
Plank/
├── README.md ← Ce fichier
├── docs/
│ ├── README-AWS.md ← Déploiement AWS EKS pas à pas
│ └── README-TECH.md ← Architecture k8s-v2, Kustomize, ArgoCD
├── k8s-v1/ ← PoC initial (Docker Compose → K8s basique)
│ └── ...
└── k8s-v2/ ← Version production (Kustomize + ArgoCD)
├── argocd/ ← App of Apps ArgoCD
├── base/ ← Manifestes de base (templates)
└── overlays/ ← Configurations par environnement
Première migration Docker Compose → Kubernetes, déployée sur un cluster local kind. Objectif : valider la faisabilité. Voir k8s-v1/.
Limitations identifiées :
- Duplication massive des manifestes BeeAPI (x4)
- Secrets en clair dans le repo Git
- Pas de resource limits ni health probes
- Pas d'Ingress, accès uniquement via port-forward
- Pas de structure GitOps
Refactoring complet adressant toutes les limitations de la v1. Voir k8s-v2/.
Améliorations apportées :
- Template BeeAPI unique via Kustomize (zéro duplication)
- Secrets chiffrés via Sealed Secrets (safe à commiter dans Git)
- Resource limits + readiness/liveness probes sur tous les containers
- Ingress AWS ALB (exposition publique)
- ArgoCD App of Apps avec sync waves (déploiement ordonné)
- Cluster EKS opérationnel +
kubectlconfiguré - ArgoCD installé dans le namespace
argocd - Sealed Secrets controller installé dans
kube-system
kubectl apply -f k8s-v2/argocd/app-of-apps.yamlArgoCD prend en charge le reste : il déploie l'infrastructure, puis les apps core, puis les BeeAPIs — dans le bon ordre grâce aux sync waves.
# État des applications ArgoCD
kubectl get applications -n argocd
# État des pods AlgoHive
kubectl get pods -n algohive| Document | Description |
|---|---|
| docs/README-AWS.md | Déploiement complet AWS EKS : IAM, VPC, EKS, EBS, ALB, ArgoCD — toutes les commandes et tous les problèmes rencontrés |
| docs/README-TECH.md | Architecture technique k8s-v2 : Kustomize, ArgoCD, Sealed Secrets, structure des fichiers |
| k8s-v1/README.md | Documentation du PoC v1 (Kind local) |
| k8s-v1/docs/SETUP_POC_kind.md | Procédure de déploiement du PoC v1 |