Infra k3s GitOps

La plateforme qui sert la page que vous lisez — Kubernetes en production sur un VPS de 1,8 Go de RAM.

k3sFlux CDSOPS / age cert-managerTraefikGitHub Actions

le probleme

Un seul VPS, plusieurs applications à héberger (ce site, Coach Adaptatif, d'autres à venir), et l'envie d'un vrai pipeline : déploiement automatique, staging, rollback en une commande. Contrainte assumée : 1,8 Go de RAM — là où la plupart des guides Kubernetes en recommandent 4 au minimum.

architecture

Internet → Traefik (ingress) + cert-manager (Let's Encrypt)
  ├── jjoly.eu          → site statique (nginx, ce site)
  ├── coach.jjoly.eu    → coach-app + MariaDB dédiée
  ├── fridge.jjoly.eu   → fridge-app + SQLite (une base par foyer)
  └── staging.*         → namespace staging (0 réplique hors usage)

Flux CD observe le repo Git d'infra → applique tout changement
CI (GitHub Actions) : tests → build → scan Trivy → GHCR → commit du tag

les choix qui comptent

resilience

resultat

Un push sur main met à jour le staging en ~1 minute ; un tag vX.Y.Z déploie en production. Ajouter une application = dupliquer un dossier de manifests. Ce site en est la démonstration vivante.

l'etat du cluster

Mesuré le 29/07/2026 avec outils/mesurer-infra.sh. Ces valeurs ne sont pas collectées par la CI : donner un accès au cluster au runner créerait un chemin vers la production depuis un tiers.

ce qui tourne dessus

Versions réellement déployées, lues dans le dépôt d'infrastructure, et réponse HTTP constatée au moment de la construction de cette page — le 29/07/2026. Ce n'est pas une supervision temps réel : c'est un constat daté, sans aucun appel depuis votre navigateur.
ServiceVersion en productionAu dernier build
Frigo Adaptatif v3.9.0 a répondu 200
Coach Adaptatif v0.1.0 a répondu 200
jjoly.eu sha-af5a4b3 a répondu 200