Automa(tic|g)ally registering ECS task in your AWS Application Load Balancer

2 min read

437 words

Hey there, 👋! I needed to set up automatic registration of ECS tasks of a service in our load balancer. The previous setups were done by colleagues, but now I had the chance to do it myself. Since we're setting up everything via Terraform as Infrastructure as Code, the example below will be written in hcl, the format that Terraform uses to set up resources.

Continue reading →

Discover Hidden Space: Understanding Docker Storage Usage with `docker system df`

2 min read

362 words

Hey there, 🐳

Remember when you first started using Docker and thought you had it all figured out? Well, I've been in the Docker game for quite a while now, and I'm still stumbling upon new tricks. Today, I want to share a nifty little command that blew my mind - docker system df.

Ever wondered how much space Docker is taking up on your machine? This command might be your new best friend. Let me show you what I mean:

Continue reading →

Giving Users Some Privacy Back with E-Mail Aliases: A Personal Take

2 min read

451 words

I've been thinking a lot about email privacy lately. It seems like every website wants our email addresses these days, especially for newsletters. Don't get me wrong, I love a good newsletter, but with all the data breaches and spam out there, I can't help but feel a bit uneasy every time I type in my email address.

That's when I stumbled upon the idea of email aliases. It's not a new concept, but it's one that I think deserves more attention.

Continue reading →

Deno and GitHub Actions workflows

4 min read

927 words

Today I want to talk about Deno and GitHub Actions. For the last year or so, I have only built new projects with Deno. I really like the runtime, it's typescript out of the box config, formatting, linting etc. It is just a lot of fun to work with.

Since I still wanted to make sure that everything works when pushed to our Github repositories, I had to build some GitHub actions. Today I want to share a repository where I collect useful actions. At the time of writing, the repository contains 3 different workflows. You can find the repository at niklasmtj/deno-actions on GitHub.

Continue reading →

AWS EKS Cluster without Node Pod Limit with Terraform

2 min read

441 words

Caution: If you are using an AWS managed node group, before switching to the launch template below, AWS will delete the current node group and then create the new node group based on the template. Your pod and cluster configuration should not be deleted, but the pods will not be provisioned for the duration of the node change.

Since I didn't find the appropriate Terraform resource to start AWS EKS nodes without the AWS-defined pod limits per node, here it is. Why AWS defines limits and how to configure your Amazon VPC CNI plugin can be found in this blog post from AWS. I will show the Terraform Launch Template resource needed to start the kubelet without the pod limit defined by AWS.

Continue reading →

Development to Production with GitHub Actions

3 min read

649 words

This blog post will outline a way to get changes from development into production. There are many different ways to do this. This is one way, and there is not the one way from dev to production. In the following, I will talk about a way that I have experience with and like the way of the process. The process described in this post will follow the typical Software Development Lifecycle. The definition of it will also not be part of the post. However I will briefly describe what happens in the 3 phases of development, staging and production.

Continue reading →

Use GitHub Container Registry (GHCR) to host your Helm Charts

3 min read

737 words

TLDR: Full commands can be found at the end of the post.

Update - 14 February 2023: Added command to pull the hosted Helm chart. Pull from GHCR

I recently started to check out Helm and thought about the combination of hosting the charts on GitHub Container Registry (GHCR) since the charts follow the regular OCI (Open Container Image) standard which is also used by Docker container images. Because of that, I tried to understand the steps necessary to host my charts on GHCR since public charts / containers are free of charge. The following post will describe the necessary steps that are required. So let’s dive right in.

Continue reading →

Use Docker buildx in AWS CodeBuild to build multi-architecture Container Images

4 min read

841 words

TLDR: The buildspec.yaml can be found at the end of the post.

I’ve spent the last few days building multi-architecture containers in AWS Codebuild. There was no quick and easy guide, so I want to document my journey with this post.

Since I worked with buildx before I wanted to use it so I can build both images on the same host machine. I knew that GitHub actions for example already have actions to easily integrate buildx in one’s workflows.

Continue reading →

How to install Weave's Ignite for Firecracker VMs with simple script

2 min read

521 words

Since I want to get more into Firecracker MicroVMs I started playing around with Weave’s Ignite which gives a familiar interface to docker to interact with the VMs. I do this with DigitalOcean’s droplets (Affiliate link, get $100 in credits for 60 days for free) since they have KVM enabled and are pretty inexpensive. This script will also work on the $5/month Droplets. Since I set up a new droplet every time to save costs when testing Ignite out I wanted to keep it simple and "automate" the installation with a quick bash script. The steps are taken from the installation page from the Ignite docs).

Continue reading →

An alternative Docker installation with Multipass on macOS without using Docker for Mac

5 min read

1276 words

Last week I received an email from the Docker Team which said that Docker for Mac (the software which also comes with a GUI) will be forbidden for commercial use when the company has more than 250 employees AND makes more than $10 million per year. To use it commercially the company has to get licenses for every developer using it, starting at $5/month. This made me think what an alternative could be for devs that don’t want to use Docker for Mac anymore, since I read a lot of posts that many devs don’t even need it. Most of them interact via CLI anyway.

Continue reading →

What to do when macOS keyboard writes wrong special characters

2 min read

327 words

At the moment I always have an external Keyboard connected to my MacBooks over a USB-C Dongle when I am working. From time to time the keyboard layout switches after waking the laptop up again after a couple of minutes. For example, it starts to write ^ where normally the < is. This is my current solution to fix this issue.

Continue reading →

GitHub Actions workflows in combination with GitHub Container Registry Package Visibility

4 min read

965 words

Last week my task was to set up a container image that we wanted to use to test the GitHub Container Registry (GHCR). We wanted to see if we could lower our building times for one of our CI jobs when using GitHub’s registry to pull from. The following is a description of an error we encountered and how we got rid of it. Additionally, I will talk about the different visibility types of container images or packages how they are called at GitHub which were a hurdle we had to take with the registry.

Continue reading →

How to set environment variables in zsh and bash (macOS and Linux)

2 min read

365 words

It is often advisable to save certain variables, e.g. to be able to call terminal commands more easily. One use case for me was using the AWS CLI. If you create different profiles you have to enter --profile <PROFILE_NAME> for each command if the variable AWS_PROFILE is not set. So for example: aws s3 ls --profile <PROFILE_NAME>. The following article explains how to create these environment variables temporarily (for the current terminal session) but also persistently.

Continue reading →