Infrastructure K3s avec ArgoCD

Sur mon serveur, j’ai déployé une infrastructure d’hébergement moderne basée sur K3s, une distribution Kubernetes légère idéale pour l’auto-hébergement. La gestion et le déploiement de mes applications (portfolio, portail de liens) s’effectuent entièrement selon les principes GitOps grâce à Argo CD.

Ce projet répond à un objectif clair : disposer d’une plateforme robuste, sécurisée et hautement automatisée, où chaque modification de code poussée sur GitHub déclenche une mise à jour transparente en production.

Schéma des flux (de l’extérieur vers l’intérieur)

[Internet] ──> [Traefik Ingress] ──> rocheralexandre.com ──> [Portfolio]
                                 \──> onlymore.net ──────────> [OnlyHub]
                                 \──> grafana.onlymore.net ──> [Grafana]

Choix technologiques

Réseau & Accès Sécurisé (Tailscale VPN)

  • Sécurité et simplicité : Utilisation de Tailscale pour interconnecter mes équipements de manière sécurisée sans exposer les ports d’administration sur le réseau public.
  • Accès nomade : Administration de mon infrastructure à distance depuis n’importe quel terminal connecté à mon réseau maillé privé.

Orchestration (K3s)

  • Légèreté & Performance : Une distribution Kubernetes certifiée optimisée pour les environnements à ressources contraintes, réduisant l’empreinte mémoire par rapport à un Kubernetes standard.
  • Standards cloud-native : Utilisation des API Kubernetes standards (Deployments, Services, Ingresses, Kustomize) facilitant l’apprentissage.

Déploiement Continu (Argo CD & GitOps)

  • Déclaratif : Tout l’état ciblé de mon cluster est défini dans un dépôt Git, garantissant la reproductibilité et la traçabilité.
  • Synchronisation automatique : Argo CD réconcilie en permanence l’état réel du cluster avec le dépôt Git.
  • Mises à jour automatisées : Intégration d’Argo CD Image Updater pour détecter automatiquement la publication de nouvelles images de conteneurs sur le registre et mettre à jour les applications sans intervention manuelle.

Routage & SSL (Traefik)

  • Ingress Controller : Gestion dynamique du routage HTTP/HTTPS au sein du cluster Kubernetes.
  • Certificats automatisés : Let’s Encrypt gère automatiquement la génération et le renouvellement des certificats SSL (via validation DNS Cloudflare).

Supervision (Prometheus & Grafana)

  • Observabilité : Collecte des métriques système et applicatives en temps réel.
  • Alerting : Envoi automatique de notifications sur Discord en cas de comportement anormal (saturation disque, crash de pod).