Skip to main content
Vegard S. Hagen

Vegard S. Hagen

Post-physicist practicing programmatic principles

Welcome to my self-hosted homepage 👋 Feel free to reach out to me on any platform you feel comfortable on, or check out my recent obsessions below ⤵


Kubernetes Proxmox Container Storage Interface
··3219 words·16 mins
If you plan to run stateful applications in your Kubernetes cluster, you quickly run into the question of where to store this state. A database is often the best solution, though writing to disk is sometimes the only — or at least easier, option.
Intel Quick Sync Video with Kubernetes
··3267 words·16 mins
Taking advantage of hardware acceleration can drastically reduce both CPU and power usage when playing video, enabling seemingly innocuous chips — like the Intel N100, to render multiple 4K video streams. In this article we’ll go through how to enable Intel® Quick Sync Video for hardware accelerated transcoding in containers orchestrated by Kubernetes.
External services with Gateway API
··2057 words·10 mins
In this article we’ll take a look at how to proxy external services through the Kubernetes Gateway API. There are of course more lightweight methods to proxy services, but once you already have the proverbial hammer, why not treat everything like a nail?
Kubernetes on Proxmox
··5989 words·29 mins
In my previous article we took a look at how to bootstrap K3s with Cilium starting from a fresh Debian 12 network installation. Having recently started to play around with Proxmox Virtual Environment, I feel the natural progression is to get to know OpenTofu/ Terraform and Cloud-init to automatically provision virtual machines for a Kubernetes cluster.
Bootstrapping K3s with Cilium
··3947 words·19 mins
Getting started with Kubernetes might seem like a daunting task at first, but getting a basic ephemeral cluster up and running with tools like minikube, kind, or k3d is quite straightforward if you follow their documentation. In this article we’ll explore how to bootstrap a more permanent, or production grade, Kubernetes cluster using k3s.
CUDA on Kubernetes
·1316 words·7 mins
With the LLM era upon us, I’ve been wanting to play around with some of the open source, self-hosted toys available. I’m using an old workstation as a homelab, which conveniently has an old NVIDIA GPU installed. Seeing as I’m running a Kubernetes cluster I want to expose the GPU to the workloads to utilise the existing infrastructure for easy hosting, scheduling, and deployment of GPU assisted applications.
Gateway API with Cilium and Cert-manager
··2214 words·11 mins
The Gateway API SIG (Special Interest Group) recently released v1.0 which spurred my interest in the project. In their own words, If you’re familiar with the older Ingress API, you can think of the Gateway API as analogous to a more-expressive next-generation version of that API.
Wildcard Certificates with Traefik
·1246 words·6 mins
In this article we’ll explore how to use Traefik in Kubernetes combined with Cert-manager as an ACME (Automatic Certificate Management Environment) client to issue certificates through Let’s Encrypt. If instead of Kubernetes you’re running docker-compose, Major Hayden has an excellent tutorial on how to configure Wildcard LetsEncrypt certificates with Traefik and Cloudflare.
Migrating from MetaLB to Cilium
··998 words·5 mins
For my homelab I’m running an over-engineered one-node Kubernetes “cluster” using Cilium as the Container Network Interface (CNI). Up until recently I used MetalLB for LoadBalancer IP Address Management (LB-IPAM) and L2 announcements for Address Resolution Protocol (ARP) requests over the local network, but Cilium has now replaced this functionality.
Theme Dynamic Images
·1422 words·7 mins
In a recent article I wanted one of the images to change dynamically with the theme. I didn’t find any support for this in the Blowfish Hugo theme I’m using, so I had to get creative. I also wanted to reuse an earlier shortcode I experimented with for automatically resizing images.