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 ⤵

Recent

External services with Gateway API
·1834 words·9 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
··5990 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
··2176 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.
mo.unit wiring
·457 words·3 mins
My first motorcycle was a Moto Guzzi V65 Custom from 1986 which I constantly tinker with. One of the charms with veteran bikes is that you can kinda hold all the inner workings of the bike in your head at once, and it all kinda just works if you don’t mess up too bad.
Browser rendered terminal
·1254 words·6 mins
This is going to be a bit of a follow-up on an earlier article on Cloudflare SSH tunneling where we configured SSH-tunneling through Cloudflare’s WARP-client. In this article we’ll configure Cloudflare’s cloudlared-tunnel and a Zero Trust Application to expose a browser rendered terminal to our server.