Journal

Writing down the things I learned. To share them with others and my future self.

19 Feb 2021

Explore Container Images Without A Shell

A best practice in building container images is to add as little dependencies as possible into the image. Most applicati...
05 Feb 2021

Set Default Annotations with Kyverno

Kyverno is a policy engine for kubernetes. It allows you to implement ValidatingAdmissionWebhooks and MutatingAdmissionW...
08 Jan 2021

My Personal Backup Design

Compute devices may fail and lose your data. Hardware failures, software bugs and encrypting trojans threaten your data....
15 Dec 2020

Linkdump: CPU alerts and why they are mostly useless

This article from my reading backlogs shows a nice summary why your CPU alerts are mostly useless. https://blog.koehntop...
28 Oct 2020

Lookup Public IP via Commandline

When working from home, I have a changing public IP. My ISP assigns me a new public IP on every router reboot. For debug...
07 Jun 2020

The Non-Obvious properties of JSON Encoder.Encode directly to http.ResponseWriter

Today I came across the following code snipped in a golang HTTP handler: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import( "...
30 May 2020

Managing Kubernetes Ingress JSON Log Format with Sanity

The nginx ingress supports a custom log format. The option can be set via the log_format field in the ingress configmap....
27 May 2020

Moving the NAS

I had to move my NAS into the basement. There is no room in our flat left for noisy computer equipment. My flat is in th...
13 May 2020

Set Default Value of Prometheus Label if not set

I had to implement the following behaviour in a prometheus relabel config: Given two labels A and B. I want to set A to...
11 May 2020

On Errors in Golang

In Golang are two ways to signal an error in a function or method. The first is the convention to return an error value ...