I Need a New NAS Context and Problem Statement My current NAS, a QNAP TS-251+ with 4TB of usable space. I use about 2.5TB of the storage, so there is still …
TIL: jq exit code jq is one of the most common tools I use in shell scripts and ad hoc shell commands. It allows you to parse, and query JSON data. …
Monitoring nginx with mtail I use prometheus to monitor my infrastructure and until now, the nginx serving this blog wasn’t monitored properly. Prometheus is a pull …
[Link] Architecture best practices for your small team Yesterday, I published a longer text in the blog of my employer. I wrote how to structure your software architecture, as a small team …
Things I learned about VMs with two interfaces on OpenStack Sometimes you want to attach two interfaces to a OpenStack virtual machine (VM). As discussed in my last post, I had to disable OpenStacks …
Things I learned about IPVS on OpenStack Currently, I’m working with IPVS and OpenStack. This block post records some quirks I have found while setting up IPVS within a VM on top of …
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 application don’t need a …
Set Default Annotations with Kyverno Kyverno is a policy engine for kubernetes. It allows you to implement ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks by creating …
My Personal Backup Design Compute devices may fail and lose your data. Hardware failures, software bugs and encrypting trojans threaten your data. And even if your …
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. …
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 debugging I often have to …
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( "encoding/json" …
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. As you can see, the …
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 the first floor. I …
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 the value of label …
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 as last return …
On Using Fluentd to Parse Elastic Common Scheme from Kubernetes Pod Logs Today I had to parse the JSON logs of our containers in Kubernetes. Our application are logging in the Elastic Common Scheme format to …
Mount Local GOPATH Directory into Container Given you have an old golang project depending on the GOPATH. You want to build that project in the golang docker image. This one liner …
Migrate Elasticsearch 5.x to 6.x We want to migrate an pre 6.0.0 cluster to 6.x.x. Therefore we have to make sure every index contains only one mapping. The following …