<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>HCI on Chris Wagner</title><link>/categories/hci/</link><description>Recent content in HCI on Chris Wagner</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>cw@wagner.org.za (Chrisando Wagner)</managingEditor><webMaster>cw@wagner.org.za (Chrisando Wagner)</webMaster><copyright>© 2026 Chrisando Wagner</copyright><lastBuildDate>Mon, 06 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="/categories/hci/index.xml" rel="self" type="application/rss+xml"/><item><title>Homelab Part 4 - k3s Automation</title><link>/posts/k3s-automation/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><author>cw@wagner.org.za (Chrisando Wagner)</author><guid>/posts/k3s-automation/</guid><description>&lt;p&gt;In &lt;a
href="../../posts/homelab3"&gt;Part 3&lt;/a&gt;
we deployed k3s manually — great for understanding what each piece does, but not something you want to repeat. This post automates the entire thing: Terraform provisions the VMs, Ansible configures them and installs k3s + Cilium, and ArgoCD bootstraps itself and takes over GitOps management of the full cluster stack.&lt;/p&gt;
&lt;p&gt;Source: &lt;a
href="https://git.wagner.org.za/homelab/k3s-proxmox-automation.git"
target="_blank"
&gt;git.wagner.org.za/homelab/k3s-proxmox-automation&lt;/a&gt;
&lt;/p&gt;
&lt;h2 class="relative group"&gt;Architecture
&lt;div id="architecture" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100"&gt;
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#architecture" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;┌──────────────────────────────────────────────────────────────────────────────┐
│ Proxmox Host │
│ │
│ ┌─────────────────┐ ┌───────────────┐ ┌───────────────┐ ┌────────────┐ │
│ │ k3s-controller │ │ k3s-worker-01 │ │ k3s-worker-02 │ │k3s-worker │ │
│ │ 172.16.10.1 │ │ 172.16.10.2 │ │ 172.16.10.3 │ │172.16.10.4 │ │
│ │ 8 cores / 16 GB │ │ 16c / 32 GB │ │ 16c / 32 GB │ │16c / 32 GB │ │
│ │ vda: 200 GB │ │ vda: 200 GB │ │ vda: 200 GB │ │vda: 200 GB │ │
│ │ │ │ vdb: 512 GB │ │ vdb: 512 GB │ │vdb: 512 GB │ │
│ │ k3s server │ │ vdc: 512 GB │ │ vdc: 512 GB │ │vdc: 512 GB │ │
│ │ Cilium / ArgoCD │ │ k3s agent │ │ k3s agent │ │k3s agent │ │
│ └────────┬────────┘ └──────┬────────┘ └──────┬────────┘ └─────┬──────┘ │
│ └───────────────-──┴──────────────────┴────────────-────┘ │
└──────────────────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;div class="mermaid"&gt;
graph TB
subgraph Proxmox["Proxmox Host"]
C["&lt;b&gt;k3s-controller-01&lt;/b&gt;&lt;br/&gt;172.16.10.1&lt;br/&gt;8c / 16 GB&lt;br/&gt;vda: 200 GB OS&lt;br/&gt;─────────────&lt;br/&gt;k3s server&lt;br/&gt;Cilium · ArgoCD"]
W1["&lt;b&gt;k3s-worker-01&lt;/b&gt;&lt;br/&gt;172.16.10.2&lt;br/&gt;16c / 32 GB&lt;br/&gt;vda: 200 GB OS&lt;br/&gt;vdb: 512 GB DirectPV&lt;br/&gt;vdc: 512 GB Longhorn&lt;br/&gt;─────────────&lt;br/&gt;k3s agent"]
W2["&lt;b&gt;k3s-worker-02&lt;/b&gt;&lt;br/&gt;172.16.10.3&lt;br/&gt;16c / 32 GB&lt;br/&gt;vda: 200 GB OS&lt;br/&gt;vdb: 512 GB DirectPV&lt;br/&gt;vdc: 512 GB Longhorn&lt;br/&gt;─────────────&lt;br/&gt;k3s agent"]
W3["&lt;b&gt;k3s-worker-03&lt;/b&gt;&lt;br/&gt;172.16.10.4&lt;br/&gt;16c / 32 GB&lt;br/&gt;vda: 200 GB OS&lt;br/&gt;vdb: 512 GB DirectPV&lt;br/&gt;vdc: 512 GB Longhorn&lt;br/&gt;─────────────&lt;br/&gt;k3s agent"]
end
C --&gt;|k3s API :6443| W1
C --&gt;|k3s API :6443| W2
C --&gt;|k3s API :6443| W3
C &amp; W1 &amp; W2 &amp; W3 --&gt;|eBGP AS 65000| R["Router&lt;br/&gt;172.16.10.254"]
R --&gt;|advertises LB pool&lt;br/&gt;172.16.1.0/24| NET["Network"]
&lt;/div&gt;
&lt;p&gt;Each worker gets three disks:&lt;/p&gt;</description></item><item><title>Homelab Part 3 - Kubernetes</title><link>/posts/homelab3/</link><pubDate>Mon, 24 Nov 2025 00:00:00 +0000</pubDate><author>cw@wagner.org.za (Chrisando Wagner)</author><guid>/posts/homelab3/</guid><description>&lt;h2 class="relative group"&gt;Kubernetes
&lt;div id="kubernetes" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100"&gt;
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#kubernetes" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;Kubernetes is a popular open-source container orchestration platform that automates the deployment, scaling, and management of containerised applications. It provides a robust and scalable infrastructure for running microservices and containerised applications across multiple nodes.&lt;/p&gt;
&lt;p&gt;Kubernetes is a powerful tool that enables developers to deploy, manage, and scale containerised applications across multiple nodes. It provides a declarative way to define the desired state of the application, and automatically manages the deployment, scaling, and health of the application.&lt;/p&gt;</description></item><item><title>Homelab Part 2 - Cloud Images</title><link>/posts/homelab2/</link><pubDate>Wed, 19 Mar 2025 00:00:00 +0000</pubDate><author>cw@wagner.org.za (Chrisando Wagner)</author><guid>/posts/homelab2/</guid><description>&lt;h1 class="relative group"&gt;Proxmox Cloud Images
&lt;div id="proxmox-cloud-images" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100"&gt;
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#proxmox-cloud-images" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h1&gt;
&lt;p&gt;We will now create our base VM cloud images and using cloudinit to configure them.&lt;/p&gt;
&lt;h2 class="relative group"&gt;Ubuntu image using CLI
&lt;div id="ubuntu-image-using-cli" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100"&gt;
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#ubuntu-image-using-cli" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;These steps can be followed for any cloud image of your choice and will work with for example Rocky linux, etc.&lt;/p&gt;
&lt;p&gt;Choose your image at &lt;a
href="https://cloud-images.ubuntu.com"
target="_blank"
&gt;Ubuntu Cloud&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Homelab Part 1 - HCI</title><link>/posts/homelab/</link><pubDate>Wed, 28 Aug 2024 00:00:00 +0000</pubDate><author>cw@wagner.org.za (Chrisando Wagner)</author><guid>/posts/homelab/</guid><description>&lt;h2 class="relative group"&gt;Introduction
&lt;div id="introduction" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100"&gt;
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#introduction" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;Welcome to the first part of my homelab series! In this part, we will explore the architecture of my homelab infrastructure and introduce the tools we will be using.&lt;/p&gt;
&lt;h2 class="relative group"&gt;Homelab Architecture
&lt;div id="homelab-architecture" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100"&gt;
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#homelab-architecture" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;In this part we will get our hands dirty and get our host operating system ready for deployment.&lt;/p&gt;</description></item></channel></rss>