← Tous les projets

Plateforme · Kubernetes

Un cluster Kubernetes monté et exploité seul

Deux machines, Kubernetes installé avec Kubespray, et tout ce qu'il faut pour héberger des sites publics : entrée HTTPS, certificats automatiques, forge Git, supervision, sauvegardes vérifiées.

  • Kubespray
  • Calico
  • ingress-nginx
  • cert-manager
  • Helm
  • kube-prometheus-stack
  • GitLab
  • Zabbix

Le problème

Garder la main sur Kubernetes en dehors d'une entreprise, sur une vraie infrastructure exposée à Internet plutôt que sur un poste local, avec les contraintes qui vont avec : sécurité, certificats, sauvegardes, supervision.

Ce que j'ai construit

  • Kubernetes installé avec Kubespray : un control plane et un worker, réseau Calico ; metrics-server, stockage local-path et cert-manager en modules.
  • ingress-nginx sur les ports 80 et 443 du worker : un seul point d'entrée, un certificat Let's Encrypt pour chaque nom, émis et renouvelé par cert-manager.
  • GitLab (forge, CI, registre d'images) et Zabbix installés sur la machine, publiés derrière l'ingress par des Services sans sélecteur : leurs ports ne sont pas joignables depuis Internet.
  • Prometheus, Alertmanager et Grafana (kube-prometheus-stack) installés avec Helm, fichiers de valeurs versionnés.
  • Sauvegardes nocturnes d'etcd et de sa PKI, de GitLab et de Zabbix, croisées entre les deux machines, sept copies de chaque.

Choix et raisons

  • Pare-feu sur l'interface publique du worker : seuls SSH, HTTP, HTTPS, le VPN et l'autre nœud passent. Le kubelet et les exporters ne répondent plus à Internet.
  • Pod Security « restricted » sur les namespaces applicatifs, et aucun jeton Kubernetes dans les pods qui n'en ont pas besoin.
  • Alertes envoyées par mail directement au serveur du domaine, sans compte SMTP ni mot de passe ; une alerte se déclenche après 30 h sans sauvegarde réussie.

Vérifié

  • Snapshot etcd restauré dans un dossier jetable (1 804 clés), archive GitLab complète relue (base et 43 dépôts), dump Zabbix lisible (186 tables).
  • L'état du cluster est public et en direct sur lab.hoortrend.com : nœuds, pods, alertes, et un bac à sable que chacun peut casser.

Limites et suite

Un seul control plane et un seul worker : pas de haute disponibilité, c'est assumé pour un lab. Les sauvegardes restent chez le même hébergeur, et le temps de restauration complète n'est pas encore chronométré. Prochaine étape : un exercice de reprise automatisé et mesuré.