InfrastructureTerminé2024

Cluster Kubernetes Homelab

Cluster k3s 4 nœuds sur Raspberry Pi, piloté par OpenTofu, avec observabilité (VictoriaMetrics, Loki, OpenTelemetry, Grafana), Let's Encrypt et services auto-hébergés.

Cluster Kubernetes Homelab
Kubernetesk3sOpenTofuVictoriaMetricsLokiOpenTelemetryRaspberry Pi
Code source ↗

Contexte

J’ai voulu pousser mon homelab au-delà du simple NAS ou du serveur unique. L’objectif : une infrastructure résiliente, reproductible et proche d’un environnement de production réel, mais sur du matériel ARM à faible consommation.

Architecture

Schéma d’architecture du cluster K3s homelab

Le cluster tourne sur 4 Raspberry Pi 4 (8 Go RAM chacun) reliés en Ethernet gigabit :

  • 1 control plane dédié
  • 3 nœuds worker avec stockage Longhorn distribué
  • Pi-hole pour DNS/DHCP et filtrage réseau
  • Traefik comme ingress controller avec certificats TLS automatiques

Services auto-hébergés

  • Immich : gestion de photos façon Google Photos
  • Gitea : dépôt Git privé
  • Docker Registry : registre d’images privé
  • Joplin : synchronisation de notes
  • Radicale : CalDAV/CardDAV

Infrastructure as Code et observabilité

En 2026, le cluster est passé sous OpenTofu : les ressources existantes ont été importées sans redéploiement, et chaque nouvelle couche s’active par un flag avec un budget RAM connu. Une stack d’observabilité adaptée aux Raspberry Pi (VictoriaMetrics, Loki, OpenTelemetry Collector, Grafana) donne enfin une vue sur ce qui tourne, et cert-manager fournit des certificats Let’s Encrypt. Détails, pièges et choix dans le chapitre dédié.

Difficultés rencontrées

La récupération Longhorn après réinstallation a été le défi le plus complexe : il a fallu recréer manuellement les mappings de volumes pour préserver les données existantes sans format propriétaire.

Ce que j’ai appris

  • Gestion fine des ressources sur des nœuds ARM contraints
  • Debugging réseau profond (CNI, kube-proxy, CoreDNS)
  • Stratégies de backup sans verrouillage vendor
  • Reprendre un cluster existant sous infrastructure as code sans interruption de service