Retour sur l’OSXP 2025 : Mini W’aaS, le Cloud Provider de poche à la Cité des Sciences

Lors de l’édition 2025 de l’Open Source Experience (OSXP) à la Cité des Sciences et de l’Industrie, on a voulu relever un défi un peu fou avec le projet Mini W’aaS : la démonstration en live et en miniature de notre offre d’hébergement W’aaS.

Le défi : déployer, seul et en seulement 2 jours de préparation, une infrastructure Cloud Provider complète (IaaS), sécurisée et monitorée, sur du matériel de bureau obsolète.

L’objectif n’était pas de montrer la puissance brute, mais de démontrer l’expertise et l’efficience : prouver qu’avec une architecture logicielle maîtrisée, on peut faire tourner OpenStack, Kubernetes et Ceph sur des machines que d’autres auraient mis à la benne.

Architechture ultra simplifiée de mini waas

Le Hardware : des machines d’occasion et des contraintes extrêmes

Le matériel

Pour cette démo, le Data Center tenait sur une table et dans trois racks. Il était composé de 21 machines récupérées, des ThinkCentre Tiny :

  • 14x ThinkCentre M700
  • 13x ThinkCentre M710Q (dont je n’ai utilisé qu’une partie)
  • 8x ThinkCentre M715Q
  • 15x ThinkCentre M73 (les vétérans de 2014 !)
  • 1 Switch 24 Ports pour faire quelques vlans et Jumbo frame

OSXP 2025 - Mini W'aaS

La contrainte absolue : 4 Go de RAM par machine

C’est là que résidait tout le sel de la démo. Dans le monde du Cloud, 4 Go, c’est ce qu’on alloue à une petite VM. Ici, c’est la RAM totale du host physique pour faire tourner l’OS, Kubernetes (K3s), l’agent OpenStack (Nova), l’agent Ceph et les VMs clientes.

Le stockage “audacieux” sur USB

Pour le stockage distribué (Ceph), pas de disques NVMe. J’ai utilisé 3 hosts dédiés avec 6 OSDs montés sur… des clés USB. Faire tourner un cluster Ceph fonctionnel sur de la mémoire flash USB grand public démontre la robustesse incroyable de Rook, capable de gérer la santé du stockage même sur des supports lents (la subtilité : faire croire que les clés usb n’en sont pas).

[root@k1 ~]# kubectl exec -n rook-ceph deploy/rook-ceph-tools -- ceph status
  cluster:
    id:     31de7d7b-e50a-4fc9-aaef-1159c0a0c047
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum a,b,c (age 2d)
    mgr: a(active, since 2d)
    osd: 6 osds: 6 up (since 2d), 6 in (since 2d)
 
  data:
    pools:   7 pools, 193 pgs
    objects: 115 objects, 293 MiB
    usage:   4.2 GiB used, 342 GiB / 347 GiB avail
    pgs:     193 active+clean
 
  io:
    client:   20 KiB/s wr, 0 op/s rd, 1 op/s wr

Une stack logicielle parfaitement adaptée

Liste des logiciels utilisés

Si on fait un petit résumé des principaux produits déployés :

Technologie Lien Commentaires
OpnSense opnsense.org Pare-feu Open Source
Rocky Linux 9 rockylinux.org OS Base
SELinux docs.rockylinux.org Module de sécurité noyau
K3S K3s.io Distribution Kubernetes légère
Calico tigera.io/project-calico CNI (Interface Réseau K8s)
WireGuard wireguard.com VPN moderne et rapide
OpenStack-Helm docs.openstack.org / Git Orchestre les conteneurs OpenStack (Nova, Neutron, Keystone, Cinder) sur Kubernetes
Rook-Ceph rook.io Opérateur Kubernetes pour Ceph
MetalLB metallb.universe.tf Load Balancer pour K8s
FRR frrouting.org Suite de routage (BGP/OSPF)
FreeIPA freeipa.org Gestion d’identité centralisée (LDAP/Kerberos)
Keycloak keycloak.org Gestionnaire d’identité et d’accès (IAM)
Grafana grafana.com Visualisation
Prometheus prometheus.io Base de données Time-Series / Collecte les métriques
Exporter FRR github.com/tynany/frr_exporter Permet de monitorer l’état des sessions BGP
Exporter Node github.com/prometheus/node_exporter Métriques système de base (CPU, RAM, Disque, Réseau) de chaque serveur physique
Exporter OpenStack github.com/openstack-exporter Interroge les API OpenStack pour remonter l’état applicatif
Exporter Goldpinger github.com/bloomberg/goldpinger Outil visuel génial pour voir la connectivité réseau entre les nœuds K8s
Exporter Kubernetes github.com/kubernetes/kube-state-metrics Remonte l’état des objets K8s
Ansible ansible.com Automatisation. Utilisé pour le Day 0
Helm helm.sh Gestionnaire de paquets K8s

Il est possible qu’il en manque mais cela représente déjà une idée du projet.

Avec cette répartition sur le matériel

Pour la démo, nous sommes parti d’une infrastructure de Data Center Leaf Spine à la sauce petit hardware :

  • 3 Firewalls OpnSense avec le routage FRR
  • 3 Leafs avec du FRR et les services Freeaipa
  • 6 noeuds K3S hébergeant les control Plane : Openstack / Ceph / K3S
  • 6 noeuds Kubernetes pour les computes Openstack
  • 3 noeuds Ceph pour les 6 OSDs

OSXP 2025 - Mini W'aaS

K3s & WireGuard : l’art du déploiement optimisé

Pour faire tenir tout ce monde dans 4 Go de RAM, chaque mégaoctet comptait. L’utilisation d’un Kubernetes standard (k8s) était impossible car trop gourmand.

L’Orchestrateur : K3s

Mon choix s’est porté sur K3s, la distribution Kubernetes légère certifiée. Là où un K8s classique consomme facilement 1 Go de RAM à vide, K3s se contente de moins de 512 Mo, laissant des ressources vitales pour les charges de travail OpenStack.

L’installation s’est faite en une ligne de commande, illustrant la puissance de l’automatisation moderne.

Le Secret : WireGuard dans Calico

Le véritable tour de force réside dans la couche réseau (CNI). Je voulais un réseau chiffré (Zero Trust), mais sur des CPU vieux de 10 ans, le chiffrement IPsec classique aurait mis les machines à genoux.

La solution ? Utiliser le backend WireGuard de Calico pour pouvoir utiliser MetalLB. WireGuard fonctionnant directement dans le kernel Linux, l’overhead est minime et les performances excellentes.

K3s configure automatiquement des tunnels WireGuard transparents entre tous les nœuds. Le résultat est immédiat : tout le trafic inter-pod est encapsulé et chiffré, sans aucune configuration complexe de certificats ou de VPN tiers.

Sécurité : Niveau Entreprise (Zero Trust)

Même si le matériel est roots et que le setup a été monté en deux jours, la sécurité n’a pas été sacrifiée. Au contraire, elle respecte les standards les plus stricts.

Identité Unifiée et SSO

Pas de comptes locaux dispersés. L’infrastructure repose sur une gestion d’identité centralisée :

  • FreeIPA : pour la gestion des serveurs Linux, l’authentification SSH centralisée et les règles SUDO. Chaque nœud rejoint le domaine au boot. Hébergé sur les trois noeuds FRR, une machine virtuelle hébergeant les services FreeIPA permet d’avoir une redondance.
  • Keycloak : pour la couche fédération d’identité. L’accès au dashboard OpenStack (Horizon), à Grafana et aux APIs est protégé par SSO (Single Sign-On) hébergé directement sur le K3s. Une seule identité permet de tout piloter.

SDN Chiffré (Le résultat du setup K3s)

Grâce à la configuration WireGuard décrite plus haut, le réseau Overlay (les tunnels VXLAN qui transportent les paquets des VMs) ne circule pas en clair. Même si on branche un sniffer sur le switch de la démo, on ne voit qu’un flux chiffré indéchiffrable entre les hyperviseurs. Le réseau physique est considéré comme non-sûr par défaut.

L’Observabilité : piloter au millimètre

Faire tourner une stack Cloud complète sur 4 Go de RAM ne laisse aucune marge d’erreur. Une fuite mémoire de 200 Mo et le nœud crash (OOM Killer). L’observabilité n’était pas un luxe, mais une nécessité vitale.

J’ai déployé une stack Prometheus / Grafana surveillant 4 niveaux critiques :

La surveillance des ressources

Via node_exporter, je surveillais l’usage RAM à la seconde près. Des alertes étaient configurées pour prévenir si la RAM disponible descendait sous les 200 Mo, permettant d’intervenir avant que le kernel ne tue les processus OpenStack.

Vue globale

La performance du stockage USB

Avec le module Ceph Exporter, je surveillais spécifiquement la latence de commit (écriture) sur les 6 clés USB. Le constat : on pouvait voir graphiquement les pics d’IOPS lors du déploiement d’une VM. Malgré la lenteur du support, Rook a parfaitement lissé la charge, assurant la stabilité du service.

La santé du Control Plane

Un exportateur dédié interrogeait les APIs OpenStack pour vérifier l’état des agents Nova, Neutron et Cinder. Cela permettait de savoir instantanément si un service était Down sans avoir à se connecter en SSH.

La connectivité BGP

Grâce au monitoring de FRR, je pouvais visualiser l’état des sessions BGP entre les hyperviseurs et les routeurs de bordure, garantissant que les IPs des VMs étaient bien annoncées sur le réseau.

FRR Exporter

Conclusion

Ce projet Mini W’aaS présenté à l’OSXP démontre qu’OpenStack n’est pas une usine à gaz réservée aux équipes de 50 personnes avec un budget illimité. Seul, en 2 jours, et sur du matériel de récupération, il est possible de monter un Cloud Privé résilient, avec du chiffrement WireGuard natif, du SSO et un monitoring complet. C’est une belle preuve de ce que permet la sobriété quand elle est couplée à une expertise technique sur des outils comme K3s.

  • Retour de helm
    [root@k1 ~]# helm list -n openstack
    NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
    cinder          openstack       7               2025-12-04 15:51:19.950985143 +0100 CET deployed        cinder-2025.2                   v1.0.0     
    glance          openstack       1               2025-12-03 13:12:30.524797775 +0100 CET deployed        glance-2025.2                   v1.0.0     
    horizon         openstack       2               2025-12-04 16:04:21.569158846 +0100 CET deployed        horizon-2025.2                  v1.0.0     
    ingress         openstack       2               2025-12-03 11:33:30.030254791 +0100 CET deployed        ingress-0.2.19                  v1.8.2     
    keystone        openstack       3               2025-12-03 12:02:03.239122838 +0100 CET deployed        keystone-2025.2                 v1.0.0     
    libvirt         openstack       5               2025-12-03 17:30:27.140643483 +0100 CET deployed        libvirt-2025.2                  v1.0.0     
    mariadb         openstack       1               2025-12-02 13:20:41.893833456 +0100 CET deployed        mariadb-2025.2                  v10.6.7    
    memcached       openstack       1               2025-12-02 13:39:38.422099454 +0100 CET deployed        memcached-2025.2                v1.5.5     
    neutron         openstack       1               2025-12-03 13:42:06.874793696 +0100 CET deployed        neutron-2025.2                  v1.0.0     
    nova            openstack       23              2025-12-04 16:11:55.042845769 +0100 CET deployed        nova-2025.2                     v1.0.0     
    openvswitch     openstack       2               2025-12-03 17:31:10.676735009 +0100 CET deployed        openvswitch-2025.2              v1.0.0     
    placement       openstack       1               2025-12-03 13:28:08.736924742 +0100 CET deployed        placement-2025.2                v1.0.0     
    rabbitmq        openstack       1               2025-12-03 11:51:58.42025061 +0100 CET  deployed        rabbitmq-2025                   v3.12.0
    

Rendez-vous à la prochaine édition :)

Retrouvez notre retour complet de l’événement et nos conférences dans nos actualités : L’Open Source Experience, c’est fini ! Retour sur l’édition 2025.