<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Louis FRADIN</title><link>https://blog.lerenn.dev/</link><description>Recent content on Louis FRADIN</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><lastBuildDate>Thu, 18 Dec 2025 10:00:00 +0100</lastBuildDate><atom:link href="https://blog.lerenn.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>K8s Homelab: Longhorn Backups with RustFS and Encrypted FTP Off-Site Storage</title><link>https://blog.lerenn.dev/posts/homelab-longhorn-ftp-backups/</link><pubDate>Thu, 18 Dec 2025 10:00:00 +0100</pubDate><guid>https://blog.lerenn.dev/posts/homelab-longhorn-ftp-backups/</guid><description>This is the eighth post in our &amp;ldquo;K8s Homelab&amp;rdquo; series. Check out the previous post to see how we migrated PVCs and implemented backup strategies.
The Backup Storage Challenge After optimizing storage usage and implementing manual backup procedures, the next critical step was setting up automated, off-site backups for Longhorn volumes. Longhorn supports S3-compatible storage for backups, but I needed a solution that:
Runs on-premises - A dedicated backup server (Raspberry Pi) with local storage Provides S3-compatible API - For seamless Longhorn integration Encrypts backups - Secure data at rest and in transit Syncs to cloud storage - Off-site backup to Box.</description></item><item><title>K8s Homelab: Deploying Forgejo Git Hosting</title><link>https://blog.lerenn.dev/posts/homelab-forge/</link><pubDate>Sun, 14 Dec 2025 10:00:00 +0100</pubDate><guid>https://blog.lerenn.dev/posts/homelab-forge/</guid><description>This is the ninth post in our &amp;ldquo;K8s Homelab&amp;rdquo; series. Check out the previous post to see how we set up automated, encrypted backups for Longhorn volumes.
The Need for Self-Hosted Git Hosting With the cluster infrastructure in place—MetalLB, Traefik, Longhorn, the LGTM observability stack, and container registries—I had a solid foundation for running services. But I needed a way to host my Git repositories privately, without relying on external services like GitHub or GitLab.</description></item><item><title>Using Dagger with Podman Machine on Fedora Silverblue</title><link>https://blog.lerenn.dev/posts/use-dagger-on-fedora-silverblue/</link><pubDate>Thu, 11 Dec 2025 12:02:04 +0100</pubDate><guid>https://blog.lerenn.dev/posts/use-dagger-on-fedora-silverblue/</guid><description>Fedora Silverblue is an immutable operating system that uses toolboxes for development environments. When trying to run Dagger Engine inside a toolbox, you&amp;rsquo;ll quickly encounter a critical issue: Dagger requires rootful Podman access for its CNI networking, but toolboxes run with rootless Podman by default. This post documents the problem and provides a solution using a shared Podman Machine to provide rootful Podman access for Dagger across all your toolboxes.</description></item><item><title>K8s Homelab: HomeAssistant VM with KubeVirt</title><link>https://blog.lerenn.dev/posts/homelab-homeassistant/</link><pubDate>Sat, 29 Nov 2025 18:00:00 +0100</pubDate><guid>https://blog.lerenn.dev/posts/homelab-homeassistant/</guid><description>This is the seventh post in our &amp;ldquo;K8s Homelab&amp;rdquo; series. Check out the previous post to see how we deployed gaming VMs with GPU passthrough.
From Raspberry Pi to Kubernetes-Native HomeAssistant has been running on a Raspberry Pi 5 in my homelab, managing smart home devices including Philips Hue lights, electrical sockets, A/C units, and surveillance cameras. While the Pi worked well, I wanted to migrate it to the Kubernetes cluster for better resource management, automated backups, and integration with the rest of the infrastructure.</description></item><item><title>K8s Homelab: PVC Migration Strategies</title><link>https://blog.lerenn.dev/posts/homelab-pvc-migration-backup/</link><pubDate>Sat, 29 Nov 2025 16:00:00 +0100</pubDate><guid>https://blog.lerenn.dev/posts/homelab-pvc-migration-backup/</guid><description>This is the seventh post in our &amp;ldquo;K8s Homelab&amp;rdquo; series. Check out the previous post to see how we deployed gaming VMs with KubeVirt and GPU passthrough.
The Storage Optimization Challenge After deploying gaming VMs with KubeVirt, we faced a storage capacity challenge. The Windows system volume was configured with 3 replicas (x3) for high availability, consuming 384Gi of NVME storage (128Gi × 3 replicas) across the cluster. However, with only 256GB NVME drives on the Lenovo nodes and a 1TB drive on Tower, this was consuming too much space.</description></item><item><title>K8s Homelab: Gaming VMs with KubeVirt and GPU</title><link>https://blog.lerenn.dev/posts/homelab-gaming-kubevirt/</link><pubDate>Sat, 29 Nov 2025 14:00:00 +0100</pubDate><guid>https://blog.lerenn.dev/posts/homelab-gaming-kubevirt/</guid><description>This is the sixth post in our &amp;ldquo;K8s Homelab&amp;rdquo; series. Check out the previous post to see how we deployed the observability stack with Loki, Grafana, Tempo, and Mimir.
From Physical Gaming PC to Kubernetes-Native VMs The original goal of this homelab project was to migrate my gaming setup from a physical PC with QEMU/Libvirt VMs to a Kubernetes-native solution. The gaming PC (Tower) had an NVIDIA RTX 3080 GPU that needed to be passed through to VMs, and I wanted the flexibility to run gaming sessions with full GPU access or maintenance tasks without GPU overhead.</description></item><item><title>K8s Homelab: High Availability for the Control Plane</title><link>https://blog.lerenn.dev/posts/homelab-ha-control-plane/</link><pubDate>Thu, 20 Nov 2025 15:00:00 +0100</pubDate><guid>https://blog.lerenn.dev/posts/homelab-ha-control-plane/</guid><description>This is the fifth post in our &amp;ldquo;K8s Homelab&amp;rdquo; series. Check out the previous post to see how we deployed MetalLB, Traefik, Longhorn, and container registries.
The Single Point of Failure Problem The cluster was running beautifully. Three nodes, all services deployed, everything humming along. I could access my services from anywhere via VPN, manage the cluster with kubectl, and life was good.
Until I realized I had a problem.</description></item><item><title>K8s Homelab: Deploying Container Image Registries</title><link>https://blog.lerenn.dev/posts/homelab-registries/</link><pubDate>Wed, 19 Nov 2025 10:00:00 +0100</pubDate><guid>https://blog.lerenn.dev/posts/homelab-registries/</guid><description>This is the sixth post in our &amp;ldquo;K8s Homelab&amp;rdquo; series. Check out the previous post to see how we deployed the observability stack.
The Need for Container Registries With the cluster infrastructure in place—MetalLB, Traefik, Longhorn, and the LGTM observability stack—I had a solid, production-ready Kubernetes environment. But I needed a way to store custom container images and cache public images to avoid rate limiting and speed up pulls.
I needed:</description></item><item><title>K8s Homelab: Deploying the LGTM Observability Stack</title><link>https://blog.lerenn.dev/posts/homelab-lgtm-stack/</link><pubDate>Wed, 05 Nov 2025 10:00:00 +0100</pubDate><guid>https://blog.lerenn.dev/posts/homelab-lgtm-stack/</guid><description>This is the fifth post in our &amp;ldquo;K8s Homelab&amp;rdquo; series. Check out the previous post to see how we deployed MetalLB, Traefik, and Longhorn as the foundation layer.
From Infrastructure to Observability With the cluster infrastructure in place—MetalLB providing load balancing, Traefik handling ingress, and Longhorn offering distributed storage—the cluster was functional but blind. I had no visibility into what was happening inside. Pods could crash, nodes could fail, services could degrade, and I&amp;rsquo;d have no idea until something broke catastrophically.</description></item><item><title>K8s Homelab: Deploying the Cluster Infrastructure</title><link>https://blog.lerenn.dev/posts/homelab-foundation-layer/</link><pubDate>Tue, 28 Oct 2025 10:00:00 +0100</pubDate><guid>https://blog.lerenn.dev/posts/homelab-foundation-layer/</guid><description>This is the fourth post in our &amp;ldquo;K8s Homelab&amp;rdquo; series. Check out the previous post to see how we deployed the physical K3s cluster with PXE boot and Butane configurations.
Building the Foundation Layer With the physical K3s cluster up and running across our three Lenovo nodes, it was time to deploy the essential infrastructure services that would form the foundation for everything else. These services provide the core primitives that all workloads running on the cluster will depend on.</description></item><item><title>K8s Homelab: From Network Infrastructure to K3s Cluster</title><link>https://blog.lerenn.dev/posts/homelab-kubernetes-cluster/</link><pubDate>Sun, 12 Oct 2025 13:00:00 +0100</pubDate><guid>https://blog.lerenn.dev/posts/homelab-kubernetes-cluster/</guid><description>This is the third post in my &amp;ldquo;K8s Homelab&amp;rdquo; series. If you haven&amp;rsquo;t read the first post and second post, start there — they set the stage for what comes next.
The Leap: From Clean VLANs to a Real Cluster The network was finally stable. VLANs behaved, DHCP worked, and devices were segmented the way I had always wanted. After hours of troubleshooting OpenWRT, fighting with proprietary firmware, and wrestling with WiFi configuration, I finally had the foundation I needed.</description></item><item><title>K8s Homelab: the VLAN-Segmented Network</title><link>https://blog.lerenn.dev/posts/homelab-network/</link><pubDate>Sat, 20 Sep 2025 11:00:00 +0100</pubDate><guid>https://blog.lerenn.dev/posts/homelab-network/</guid><description>This is the second post in our &amp;ldquo;K8s Homelab&amp;rdquo; series. Check out the previous post to see how we planned the network architecture.
The Beginning: A Dream and a Plan It all started with a simple dream: transform my basic homelab into a properly segmented, Kubernetes-based infrastructure. I had been running everything on a single network for years, and the security implications were starting to keep me up at night. Smart home devices mixed with servers, personal devices sharing the same subnet as my lab equipment – it was a security nightmare waiting to happen.</description></item><item><title>K8s Homelab: A Long Journey</title><link>https://blog.lerenn.dev/posts/homelab-introduction/</link><pubDate>Sat, 20 Sep 2025 10:00:00 +0100</pubDate><guid>https://blog.lerenn.dev/posts/homelab-introduction/</guid><description>The Journey Begins: From Chaos to Order I&amp;rsquo;ve always been fascinated by infrastructure and automation. What started as a simple gaming PC running Fedora Linux with a few VMs has evolved into a full-scale homelab project. This series of blog posts documents my journey from a basic setup to a properly segmented, Kubernetes-based infrastructure.
Current Setup: A Gaming PC with VMs My current setup is humble but functional:
Gaming PC (Tower): Fedora Linux host with 3 VMs via QEMU/Libvirt</description></item><item><title>Speed up CI/CD with Dagger Engine and Docker Registry Mirror</title><link>https://blog.lerenn.dev/posts/dagger-kubernetes-deployment/</link><pubDate>Wed, 06 Aug 2025 15:30:00 +0200</pubDate><guid>https://blog.lerenn.dev/posts/dagger-kubernetes-deployment/</guid><description>This blog post covers how to deploy Dagger Engine with a Docker registry mirror on Kubernetes to speed up CI/CD pipelines and avoid Docker Hub rate limiting issues. I&amp;rsquo;ll explore the problem, the solution architecture, and provide complete Kubernetes manifests for production use.
What is Dagger? Dagger is a modern CI/CD engine that allows you to write your pipelines as code. It provides a powerful API for building, testing, and deploying applications.</description></item><item><title>Asyncapi Codegen: a code generator in Go, for Go!</title><link>https://blog.lerenn.dev/posts/asyncapi-codegen-presentation/</link><pubDate>Sat, 14 Oct 2023 16:41:34 +0200</pubDate><guid>https://blog.lerenn.dev/posts/asyncapi-codegen-presentation/</guid><description>This first blog post is about an open-source tool that I&amp;rsquo;m currently writing here.
AsyncAPI, an initiative to rule them all What is AsyncAPI? As a response to the lack of tools to define contracts between asynchronous services, Fran Méndez started the project AsyncAPI as a set of tools heavily inspired by OpenAPI initiative to define communication inside an Event-Driven Architecture (EDA).
Like OpenAPI, you have a specification, in YAML or JSON, that can be used to define the interfaces of asynchronous APIs.</description></item><item><title>About</title><link>https://blog.lerenn.dev/pages/about/</link><pubDate>Sun, 14 May 2023 00:00:00 +0000</pubDate><guid>https://blog.lerenn.dev/pages/about/</guid><description>Hello ! I&amp;rsquo;m a back-end / devops / sysadmin developer and this is my blog!</description></item></channel></rss>