Photo by Jake Hills / image source Hey, thanks for stopping by. After over two years of silence on this blog I finally felt the urge to write about something that is worth sharing again. A lot has happened since my last post but that’s something for another day. Today we are talking indie hacking, an endeavor? hobby? lifestyle? 🤷 that I started moving into at the end of last year. In case you are…
Running and maintaining Kubernetes clusters is hard. They need to be upgraded, automatically scale based on demand, be monitored and most importantly, ensured to be highly available at all time. So the idea of sharing clusters across teams, divisions or even whole companies is definitely valid. There are various ways of achieving multi-tenancy which we will be exploring today. Multiple clusters…
Why migrate? I added the ability to leave comments on posts of this blog around a year ago. Back then I was looking for a privacy friendly, open source, free and easy to setup solution. When I came across utterances and knew I found the right tool. Using Github’s issue feature as a backend for comments is just a very elegant solution in my opinion. No database that you need to manage, using Github…
So there you are with your newly created Route53 hosted zone, ready to assign some DNS names to your hosts. A simple click on the “Create Record” button and you want to check if it works immediately. But trying to resolve the DNS entry fails. What’s going on? pending vs. insync Creating a Route53 record is a two-step process consisting of: pushing the record to the Route 53 database propagating it…
Hint: This post has been happily sponsored by StormForge , the company building the product that is being used. Despite sponsorship, they allowed me to share my honest opinion. Huge thanks for their trust and support! intro Manually optimizing an application on Kubernetes is hard, especially if your goal is to keep costs low. There are plenty of options, the dependency trees in modern microservice…
some background I jumped into the world of self-employment as a DevOps freelancer at the beginning of this year. After reviewing my first month was well received by the community I decided to keep this going. Here’s my second update after three months of self-employment. let’s start with numbers From my previous three clients two remain . Will go into more detail on that topic in the next section.…
Kubernetes enables you to do a lot. Orchestrating your application deployments, seamlessly integrating with public cloud services, distributing workload across thousand of nodes or simply generating a huge bill by the end of each month. While the latter can be beneficial if you are on the issuing side of the bill, this blog posts showcases a few pitfalls that I’ve seen (a lot) and explains how to…
At first sight AWS launch configurations and templates may seem very similar. Both allow you to define a blueprint for EC2 instances. Let’s have a look at their differences and see which one we should prefer. They grow up so fast Launch configuration are old. In terms of cloud technologies they are essentially ancient. During my research I found articles that date back to 2010. It’s hard to find…
my way towards self-employment In November 2020 I decided to take a huge personal step. I quit my beloved job and started my journey in becoming an independent freelancer. During the previous five years of working at two different companies the desire to start something for myself and being able to work with people from more than one company at a time became bigger and bigger. So the day came, 1st…
Introduction This post is the second part of a little blog series in which we are going through the complete process of implementing our own Kubernetes operator with Python. Previously we had a look at two ways on how to register a CRD for our ExchangeRate resource. Based on this we can now start writing our controller that will query the requested currency exchange rate and make them available to…
Introduction A lot of the core processes happening in a Kubernetes cluster are following the so called controller pattern . This pattern describes an ongoing monitoring of resources and reacting appropriately to bring the current state closer their desired state. A simple example is the relationship between the Deployment and Pod resources. When increasing the replica count in the Deployment…
Lately I made some investigations on different events that you can use to trigger Github Actions workflows. I was especially interested in the pull request events as executing some clean up task as soon as a PR is merged was one of my goals. Going through the list of available events , closed turned out to be what I was looking for. Additionally I added the requirement to make a distinction…
the power of infrastructure as code Back in the day (must have been around 2016) my team and I were using Ansible to provision our infrastructure. It’s a tool to configure servers in an automated and reproducible manner. It helped us to setup web servers, databases and all kinds of services with very little preconditions. There’s no central server that you need to setup initially and keep running.…
I started creating and sharing overviews of various Kubernetes objects on my Twitter . Some people requested to put them in a more convenient place for later use. This page is the result. Feel free to use them for yourself. Giving credit is very much appreciated. Have fun (y) Architecture Overview of Kubernetes' basic architecture Workload Overview of Kubernetes Workload objects Networking…
the cloud solves all your problems… Lately I was in need of a load balancer solution supporting the classic active-passive scenario. In other words, forward (ideally TCP) traffic to server A. If server A is not reachable reroute to server B. Being a fairly simple and common problem it actually took me quite some time to find a solution I was happy with. Initially I was very confident that the…
Introduction AWS’ IAM service is a powerful system to provide fine-grained control over AWS resources. Additionally it is integrated into several AWS services and EKS is no exception. Next to the cluster role, AWS introduced 2019 the concept of IRSA, which stands for IAM Roles for Service Accounts. Together with Kubernetes’ RBAC system it allows to assign IAM role capabilities to K8s computing…
After having a look at how to integrate cdk8s with Flux I was asked whether I could have a look at Argo CD as well. So without further ado, let’s integrate cdk8s with Argo CD. Argo CD But at first, what is Argo CD? Similar to Flux it realizes Kubernetes Manifest deployments by following the GitOps paradigm. This states that the desired condition of your system should be kept in one or more Git…
After I got used to cdk8s I was curious how well it integrates with some current continuous delivery tools for Kubernetes. Therefore I sat down for a quick session for integrating it with Flux . I will give you a short introduction for both tools to make sure you understand everything when we put them together. If you are already familiar with cdk8s and Flux you can probably skip the next two…
Hint: As cdk8s is fairly new at the time of this writing expect that things will change/have changed. Intro cdk8s (probably cloud development kit for Kubernetes) is a new framework released by AWS Labs (AWS’s open source organization)that is written in TypeScript. It allows you to define Kubernetes manifests using modern object oriented programming languages. This enables you to develop a very…
These days there are a few tools that claim to (partially) replace a fully fledged Kubernetes cluster. Using them allows e.g. every developer to have their own local cluster instance running to play around with it, deploy their application or execute tests against applications running in K8s during CI/CD. In this post we’ll have a look at three of them, compare their pros and cons and identify use…
1. The problem Lately I was in need to periodically execute a Python script. To achieve this task my router, a TP-Link N600 , running OpenWRT Chaos Calmer came to my mind as it’s running the whole day anyway. So I checked the available packages in opkg, OpenWRT’s package manager, and found what I was looking for. Confidently executing opkg install python3 (for Python 2 it’s opkg install python )…
Intro: In this post you are going to find a list of aspects where I think the provisioning engine Ansible excels. I’m a guy that lives in a Linux dominated infrastructure. Therefore my experiences may not align with yours. Make sure to let me know your opinion at @__brennerm . Hint: The latest Ansible release as of this writing is 2.3.2.0. 1. The client requirements Unlike other provisioning…
If you are already familiar with Cap’n Proto and just want to see how to use it with Python click here . Introduction to Cap’n Proto Ever heard of Cap’n Proto? - No it’s not one of the worst named superheroes ever. Lets have a look at what the official webpage is saying: Cap’n Proto is an insanely fast data interchange format and capability-based RPC system. This addresses two points - data…
Ever wondered what happens when you call Python’s built-in str(X), with X being any object you want? The return value of this function depends on the two magic methods __str__ being the first choice and __repr__ as a fallback. But what’s the difference between them? When having a look at the docs >>> help ( str ) 'Create a new string object from the given object.' >>> help ( repr ) 'Return the…