Writing down the things I learned. To share them with others and my future self.
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...
Set Default Annotations with Kyverno
Kyverno is a policy engine for kubernetes. It allows you to implement ValidatingAdmissionWebhooks and MutatingAdmissionW...
My Personal Backup Design
Compute devices may fail and lose your data. Hardware failures, software bugs and encrypting trojans threaten your data....
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...
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...
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( "...
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....
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...
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...
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 ...
Next page →