Cookies & Containers

Or how I learned to love the cloud.


View source

Migrating to Scroll

about.html · 2022-09-03-scroll.html · 2022-04-13-jaeger-eks.html

September 3, 2022 — After running this blog with Jekyll and github-pages for over two years, I ran into Scroll and fell in love with the newspaper-y style and minimalist setup.

Continue reading...

Tracing with Jaeger on EKS with Istio

2022-09-03-scroll.html · 2022-04-13-jaeger-eks.html · 2022-01-06-trying-litmus.html

April 13, 2022 — Understanding and debugging microservices communication can be a challenge in itself. Luckily there are a bunch of tools to make it easier.

In addition to the observability you get from running visualization tooling like Kiali with your service mesh, tracing provides valuable information for troubleshooting. That's where Jaeger comes in.

Continue reading...

Trying out Chaos Engineering using Litmus

2022-04-13-jaeger-eks.html · 2022-01-06-trying-litmus.html · 2021-12-16-lambda-s3-dynamo.html

January 6, 2022 — The idea of using Chaos Engineering to improve systems is becoming more and more popular with the Kubernetes crowd, no doubt due to Netflix's Simian Army and the experiences that followed. Simulating outages or different errors to test resilience, understanding your system better and battle-test your applications sounds like a good idea, here's one way of getting started.

Understand the basics

Chaos Engineering is NOT about breaking things randomly and seeing what happens. It's about making an assumption about your system, trying to understand what would happen if a certain error or outage happens and testing that assumption in a controlled environment. For real-life systems that involves a large amount of preparation, communication and learning from whatever results a chaos experiment may have.

Continue reading...

Using AWS Lambda to write from S3 to DynamoDB

2022-01-06-trying-litmus.html · 2021-12-16-lambda-s3-dynamo.html · 2021-11-29-simple-flask-docker-app.html

December 16, 2021 — Creating a lambda function triggered by an S3 event can be done in different ways. Using a blueprint, the console or AWS CDK. We'll take a look at creating a Python Lambda function created from Typescript CDK code.

CDK Resources

We create a separate CDK Stack for an S3 bucket

const bucket = new s3.Bucket(this, 'S3Bucket', { bucketName: 'somebucketnamethatsnottaken', autoDeleteObjects: true, removalPolicy: cdk.RemovalPolicy.DESTROY, encryption: s3.BucketEncryption.S3_MANAGED, }); bucket.grantRead(new AccountRootPrincipal());Continue reading...

Containerizing a simple Flask App

2021-12-16-lambda-s3-dynamo.html · 2021-11-29-simple-flask-docker-app.html · 2021-11-17-syslog-fluentd.html

November 29, 2021 — It never hurts to have a basic example for a quick WebApp to deploy onto a container service. Here's one for a Python app, using Flask, Docker and Gunicorn.

Folder structure

To get started we create the following structure (it's ok to leave the files empty, we'll fill them during the next few instructions):

. ├── Dockerfile # Instruction for building the docker image ├── app │   ├── # Actual python source │   ├── templates │   │   └── factorial-form.html # Template for HTML used in the WebApp │   └── tests │   ├── │   └── # Simple tests for the webapp └── requirements.txt # Required packagesContinue reading...

Adding a secondary fluentd to Openshift Logging as a syslog receiver

2021-11-29-simple-flask-docker-app.html · 2021-11-17-syslog-fluentd.html · 2021-09-08-powerdns.html

November 17, 2021 — OpenShift comes with loads of handy operators managing various Kubernetes resources for you, some open source, some not.

OpenShift Logging is the wrapper for an EFK stack running on your cluster. Like with other operators you don't create your own daemonsets or deployments, instead you configure it with a CustomResource called ClusterLogging.

So if you're thinking of using this Fluentd for anything other than logs from this cluster, you're pretty much out of luck.


You can set everything to Unmanaged and change the configs, but that's not sustainable as you're basically disabling any operator actions. Also editing what's supposed to be an indented file represented as one long string is no fun.

You can however piggyback on the resources deployed by the operator by adding a secondary Fluentd in the same namespace with some modifications.

Continue reading...

Running PowerDNS in docker-compose

2021-11-17-syslog-fluentd.html · 2021-09-08-powerdns.html · 2021-05-03-dhcp-relays.html

September 8, 2021 — PowerDNS is easily installed and run on most servers, whether you're using it as an authoritative server or a recursor. To better understand the difference, check out this blog.

Basically your authoritative server has the actual DNS info you're looking for or providing (usually an IP), and your recursive server is the one finding the path to the right server and caching any previously checked information.

Continue reading...

What the heck are DHCP relays?

2021-09-08-powerdns.html · 2021-05-03-dhcp-relays.html · 2021-04-01-ipc.html

May 3, 2021 — If you're just getting starting with Zero-Touch-Provisioning there are a few networking challenges ahead for you. Luckily there are some great tools to support out there, which make getting started very simple.


The Dynamic Host Configuration Protocol (DHCP) is used to dynamically assign IP addresses to devices connected via a layer 2 network. That means a DHCP server needs to exist in the same network already, or you're stuck with having to assign static IPs.

DHCP has four phases of operation:

Continue reading...

WTF is Inter-Process Communication

2021-05-03-dhcp-relays.html · 2021-04-01-ipc.html · 2021-03-17-quick-openstack.html

April 1, 2021 — A colleague and I wrote this short overview over different IPC mechanisms and when to use what in your microservices architecture. It covers REST, GraphQL, gRPC and RabbitMQ and compares them based on different criteria.

Link to post on CS blog.

View source

Getting started with OpenStack

2021-04-01-ipc.html · 2021-03-17-quick-openstack.html · 2020-11-03-windows-kubevirt-k3s.html

March 17, 2021 — The fastest way I found (after reading on components, which gazillions of parts there are and which you probably won't need) was to just run DevStack.

Continue reading...

Running a Windows VM on KubeVirt on K3s

2021-03-17-quick-openstack.html · 2020-11-03-windows-kubevirt-k3s.html · 2020-08-31-simple-k8s-operator-java.html

November 3, 2020 — To get the obvious "WTF, why would you wanna do this?" out of the way: We had to. For reasons.


In cases where you need a Windows VM, but don't want to leave your Kubernetes platform, KubeVirt is your friend.

Be warned that this is going to be a heavy workload, so go for something with a lot of CPU, memory and disk space.

Continue reading...

Writing a simple K8s Operator in Java

2020-11-03-windows-kubevirt-k3s.html · 2020-08-31-simple-k8s-operator-java.html · 2020-06-25-adventures-telco-xos.html

August 31, 2020 — Kubernetes Operator are often used to simplify the usage of applications or software in and outside a K8s cluster. They allow you to extend K8s by adding custom controllers for custom resources, allowing for example simpler database upgrades, application maintenance and automated creation of K8s resources.

There is a large number of Operators readily availabe, from OperatorHub or GitHub.

Why write your own?

You might be providing an application that needs certain maintenance that you want to automate. You might be providing a database to your developers that you don't want them to have to provision themselves. You might just wanna learn more about Kubernetes.

Continue reading...

Adventures in Telco I: Setting up a Kubernetes Deployment using XOS

June 25, 2020 — This blog post describes how you can deploy a few Kubernetes resources onto an edge computing platform, so that those resources can be managed via XOS.

What is XOS?

The CORD platform gives network operators a cloud-native and open-source reference implementation of a Mobile Edge Computing stack.

2020-08-31-simple-k8s-operator-java.html · 2020-06-25-adventures-telco-xos.html · 2020-06-12-byo-prometheus.html
Continue reading...

Bring Your Own Prometheus to Istio

June 12, 2020 — How to integrate your standalone Prometheus with Istio-enabled Pods as mentioned briefly in the Istio docs here.

Continue reading...

Setting up an MH-Z14A CO2 sensor with Raspberry Pi

May 17, 2020 — After feeling tired for days (yay for the COVID-19 lockdown and being at home all day every day), I wanted to see if the indoor air was at fault. So I bought an MH-Z14A sensor to get CO2-levels at home, by attaching it to a Raspberry Pi 3.

Indoor CO2-levels have pretty large impact on sleep and concentration. Usually measured in ppm (parts per million), the desired values are below 1000ppm.

Continue reading...

Cross-Account Roles in AWS via Terraform

April 7, 2020 — Stuck on creating cross-account AWS IAM roles via terraform? Most companies these days use multiple cloud accounts to separate resources, customers, or even internal departments. With multiple AWS accounts, it’s practical to rely on a so-called bastion account for Identity and Access Management (IAM) users. It serves as one central place for users, S3 buckets, and other shared resources.

Continue reading...

Going Cloud Native

October 4, 2019 — Curious what changes to expect when going from a large, corporate business to a small, cloud-native environment?

I wrote a blog post at a previous company:

View source

Unavoidable Hello World

2019-10-04-going-cloudnative.html · 2019-09-10-hello-world.html · about.html

September 10, 2019 — Hi world.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam et quam lobortis eros porta pellentesque porta a lorem. Etiam turpis lacus, bibendum vel aliquam a, elementum nec sem. Vivamus fringilla erat sit amet ligula volutpat volutpat. Mauris efficitur aliquam volutpat. Suspendisse pulvinar convallis libero commodo viverra. Morbi sit amet placerat dolor, in facilisis justo. Vestibulum suscipit, urna sit amet posuere consequat, nibh diam euismod turpis, sed porttitor leo justo in nibh. Proin in nisl finibus velit vulputate elementum non eu tortor. Pellentesque convallis eros sed sem dignissim placerat. Mauris posuere urna vel dui bibendum hendrerit. Suspendisse rutrum tincidunt lectus vel maximus. Etiam scelerisque pharetra nibh at vestibulum. Ut eget quam at urna finibus lacinia. Nulla non metus efficitur, elementum lectus at, tempus dui. Donec quis efficitur sem.

View source

Gmail icon Twitter icon GitHub icon
Built with Scroll v31.4.1