Contexte & objectif
Projet scolaire d’initiation Kubernetes en quatre temps :
- cluster K3s orchestré par Vagrant.
- exposition de trois applications via un Ingress.
- cluster K3d avec Argo CD pour un flux GitOps (déploiement versionné depuis un dépôt GitHub).
- GitLab auto-hébergé pour opérer le pipeline GitOps en interne.
Objectif : pratiquer un cycle complet infra → déploiement → mise à jour continue.
Architecture & mise en œuvre
Partie 1 — K3s & Vagrant
- 2 machines provisionnées avec Vagrant :
- Server (contrôleur) et ServerWorker (nœud agent) avec IPs privées dédiées.
- K3s installé en mode contrôleur sur la première VM, mode agent sur la seconde.
Partie 2 — K3s & 3 applications
- Une VM K3s (server) avec Ingress configuré.
- Trois applications web accessibles via la même IP mais routées par
Host
via l’Ingress. - Scaling avec 3 replicas sur une des application.
Partie 3 — K3d & Argo CD
- Provision d’un cluster K3d.
- Argo CD synchronise l’environnement de développement depuis un dépôt GitHub qui héberge une application.
- L’application packagée dispose de deux versions (v1 / v2).
- Mise à jour : modification du tag d’image dans le dépôt GitHub → Argo CD détecte, synchronise, et l’application passe de la v1 à la v2.
Partie 4 — GitLab auto-hébergé & GitOps interne
- Déploiement d’un GitLab via un Helm chart dans le même cluster pour remplacer GitHub.
- Intégration avec Argo CD : commits → changement de tag d’image → sync automatique côté cluster.
Compétences développées
- Infra as Code : Vagrantfiles, provisioning, etc.
- Kubernetes (K3s/K3d) : nodes Server/Agent, Ingress, Deployments/Replicas, Namespaces, kubectl, etc.
- GitOps/CI : déploiement déclaratif avec Argo CD, gestion des tags d’images et mises à jour continues.
- Observabilité & soutenance : démonstration live (Ingress, namespaces, …).