Faire cohabiter services publics et privés sur un seul nœud Kubernetes

Le contexte Mon homelab tourne sur un seul serveur physique : un vieux i7 avec 32 Go de RAM. Dessus, j’ai monté un cluster Kubernetes avec microk8s. Pourquoi ce choix ? Parce qu’il passe facilement à l’échelle, que la communauté est énorme et qu’il existe un outil pour tout : logs, sécurité, sauvegardes. Il peut aussi fonctionner en mode hybride, avec mon nœud local d’un côté et quelques nœuds dans le cloud de l’autre, si un jour j’en ai besoin. ...

5 octobre 2026 · 8 min · Flavien Jourdren

HTTPS avec Let's Encrypt, Traefik et Cloudflare sur un cluster Kubernetes multi-domaines

Les utilisateurs s’attendent à ce que chaque service soit sécurisé par défaut. On ne sait jamais qui écoute, même sur son propre réseau. C’est pour ça que HTTPS est devenu la norme dans toute infrastructure moderne. Cet article explique comment je l’ai mis en place sur un cluster Kubernetes avec Cloudflare, Traefik et le challenge DNS-01 de Let’s Encrypt. Une de mes contraintes était de pouvoir réinstaller tout le serveur très rapidement. Et c’est ce qui m’a valu d’être rate-limité. Donc si vous ne voulez pas attendre 24 heures pour rien comme moi, lisez bien ce qui suit. ...

29 août 2026 · 7 min · Flavien Jourdren

Tailscale sur un homelab Kubernetes local

Contexte Mon serveur homelab fait tourner 28 services. La plupart sont privés, et je voulais un moyen simple d’y accéder depuis l’extérieur. J’ai choisi Tailscale. Voici comment je l’ai mis en place. Le réseau en dessous Avant la configuration du VPN, un peu de contexte sur la façon dont le réseau de mon cluster Kubernetes est organisé. La plupart de mes services sont privés, quelques-uns sont exposés sur internet. Cette séparation m’a donné deux classes de services, chacune a son propre namespace, son réseau et ses règles de sécurité (NetworkPolicies). ...

19 août 2026 · 6 min · Flavien Jourdren

Comment j’ai migré une codebase sans tests avec des boucles et un harnais IA

On m’a confié un SaaS sur Firebase à faire passer sur Supabase, avec un budget très limité. Cet article présente les techniques que j’ai utilisées pour y arriver avec un harnais IA. Point de départ L’application était un SaaS Nuxt.js avec 20 gros écrans qui tournaient sur Firebase, déjà écrit en TypeScript. Elle fonctionnait comme un workflow qui enrichissait les données métier étape par étape. Les utilisateurs pouvaient gérer plusieurs projets. Chaque projet appartenait à un ou plusieurs « managers », qui pouvaient inviter des « contributors » à parcourir le workflow. Cela impliquait un système de rôles. Il y avait également une partie administration. ...

8 août 2026 · 7 min · Flavien Jourdren

Installation de DevStack

DevStack est un projet dont le principe est de déployer rapidement un environnement de développement et de test du projet OpenStack. DevStack supporte Ubuntu 16.04 / 17.04, Fedora 24/25, CentOS / RHEL 7, ainsi que Debian et OpenSUSE. Dans cet article, nous installerons la version Ocata d’OpenStack. DevStack installe par défaut les modules : Keystone : Système d’identification. Nova : Module s’occupant de la virtualisation des machines. Cinder : Stockage. Neutron : Module réseau. Horizon : Interface web. Attention : DevStack n’est pas fait pour être redémarré. Il ne peut donc pas être utilisé comme environnement de production. ...

7 juin 2018 · 3 min · Flavien Jourdren

Réaliser une API REST

Le principe est de découper l’application sous forme de ressources que les clients peuvent utiliser au travers de requêtes HTTP. Cette architecture destinée aux systèmes distribués a été créée en 2000 par Roy Fielding dans sa thèse de doctorat. L’intérêt d’une API REST est de rendre les ressources de l’application utilisables par tous les composants de celle-ci. Cela permet de mettre en place des micro-services, de la portabilité, de donner accès à certaines fonctionnalités à des personnes extérieures… ...

6 juin 2018 · 3 min · Flavien Jourdren

Déploiement continu et automatique avec Docker et Jenkins

Le but de ce tutoriel sera de mettre en place le déploiement continu & automatique d’une application avec Jenkins sur une architecture Docker. Le déploiement continu & automatique est l’un des concepts clés du mouvement DevOps. Le but de la manoeuvre est de favoriser l’industrialisation d’une application en permettant à un système : de tester l’application, de construire l’image du conteneur et de mettre celui-ci en production. ...

14 avril 2018 · 6 min · Flavien Jourdren

Rappel sur la répartition de charge

La répartition de charge est l’un des concepts essentiels à la mise en place d’architectures capables d’absorber une charge importante et résistantes aux pannes. Il s’agit d’un ensemble de techniques permettant de distribuer une charge de travail entre différents ordinateurs d’un groupe. Les domaines d’utilisation de la répartition de charge sont de plus en plus nombreux en particulier avec l’avènement du cloud et des architectures de données décentralisées. Ainsi ces techniques sont utilisées dans : les supercalculateurs, les services HTTP à forte audience, les bases de données nécessitant un accès permanent, le big data, l’entraînement des réseaux neuronaux, etc. ...

7 avril 2018 · 3 min · Flavien Jourdren

Installation de Jenkins

Jenkins est un outil d’intégration continue Open Source développé en Java. Ajout des dépôts pour installer Java 8 Ajout des dépôts : echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list Ajout du certificat de vérification des paquets : apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886 Mise à jour des dépôts : apt-get update Installation de Java 8 Installer le paquet de java 8 et accepter ses conditions d’utilisation : ...

6 avril 2018 · 2 min · Flavien Jourdren

Création d'un serveur MySQL Master-Master avec load balancing

Cet article traitera de la procédure de mise en place d’un serveur MySQL Master-Master (et Master-Slave) avec un système de load balancing utilisant l’algorithme round robin (grâce à HAProxy). Dans l’exemple nous aurons trois serveurs, un gérera la répartition de charge (qui se nommera SRV-LBSQL et aura l’adresse IP 10.0.0.100) et deux serveurs MySQL connectés l’un avec l’autre (ayant respectivement pour nom SRV-MYSQL01 et SRV-MYSQL02 et les adresses IP 10.0.0.1 et 10.0.0.2). Chaque serveur MySQL traitera à tour de rôle une requête SQL. Les serveurs de base de données répliqueront les informations l’un à l’autre grâce à une technique de double relation Master-Slave. ...

28 mars 2018 · 6 min · Flavien Jourdren