Niklas Metje Software engineering enthusiast from Cologne, Germany. Writing about DevOps, Cloud, Deno, Software Engineering, books and everything else that interests me. https://niklasmtj.de/ Use the GitHub API Octokit client with Deno 2024-03-20T00:00:00Z https://niklasmtj.de/blog/use-github-api-with-deno/ <p>Using the GitHub API in Deno is as simple as importing the Octokit client shown in the GitHub documentation. Since Deno supports npm packages, you can easily use the Octokit client in Deno. In this short article I will show you how to use the Octokit client to get the workflow runs for a repository.</p> Deno and GitHub Actions workflows 2024-03-09T00:00:00Z https://niklasmtj.de/blog/deno-and-github-actions/ <p>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.</p> <p>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 <a href="https://github.com/niklasmtj/deno-actions">niklasmtj/deno-actions on GitHub</a>.</p> AWS EKS Cluster without Node Pod Limit with Terraform 2023-12-20T00:00:00Z https://niklasmtj.de/blog/aws-eks-no-node-pod-limits-terraform/ <p><strong>Caution:</strong> 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.</p> <p>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 <a href="https://aws.amazon.com/de/blogs/containers/amazon-vpc-cni-increases-pods-per-node-limits/">this blog post from AWS</a>. I will show the Terraform Launch Template resource needed to start the <code>kubelet</code> without the pod limit defined by AWS.</p> Development to Production with GitHub Actions 2023-09-09T00:00:00Z https://niklasmtj.de/blog/development-to-production-with-github-actions/ <p>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 <strong>the one</strong> 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.</p> Perform a conditional step in GitHub Actions job 2023-02-20T00:00:00Z https://niklasmtj.de/blog/conditional-steps-in-github-action/ <p>The <a href="https://niklasmtj.de/blog/conditional-github-actions-job/">previous post</a> was about conditional jobs [^1]. GitHub also offers the possibility of providing individual steps with a condition. The usage is almost identical to the conditional jobs. How you can implement them is described below.</p> Conditional GitHub Actions job 2023-02-13T00:00:00Z https://niklasmtj.de/blog/conditional-github-actions-job/ <p>With GitHub Actions it is possible to trigger jobs under certain conditions. GitHub provides the <code>if</code> for this purpose, which can be called at job level. In the following you will see how this can be achieved.</p> Use GitHub Container Registry (GHCR) to host your Helm Charts 2022-05-08T00:00:00Z https://niklasmtj.de/blog/use-ghcr-to-host-helm-charts/ <p><strong>TLDR:</strong> Full commands can be found at the end of the post.</p> <p><strong>Update - 14 February 2023:</strong> Added command to pull the hosted Helm chart. <a href="#pull-from-ghcr">Pull from GHCR</a></p> <p>I recently started to check out <a href="https://helm.sh/">Helm</a> and thought about the combination of hosting the charts on <a href="https://ghcr.io/">GitHub Container Registry (GHCR)</a> 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.</p> Use Docker buildx in AWS CodeBuild to build multi-architecture Container Images 2022-04-25T00:00:00Z https://niklasmtj.de/blog/using-buildx-with-aws-codebuild/ <p><strong>TLDR:</strong> The <code>buildspec.yaml</code> can be found at the end of the post.</p> <p>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.</p> <p>Since I worked with <code>buildx</code> 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 <code>buildx</code> in one’s workflows.</p> How to install Weave's Ignite for Firecracker VMs with simple script 2022-02-20T00:00:00Z https://niklasmtj.de/blog/simple-bash-script-install-weave-ignite/ <p>Since I want to get more into <a href="https://firecracker-microvm.github.io/">Firecracker MicroVMs</a> I started playing around with <a href="https://ignite.readthedocs.io/en/stable/">Weave’s Ignite</a> which gives a familiar interface to <code>docker</code> to interact with the VMs. I do this with <a href="https://m.do.co/c/c0cb5eb6c95e">DigitalOcean’s</a> 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 &quot;automate&quot; the installation with a quick bash script. The steps are taken from the installation page from the <a href="https://ignite.readthedocs.io/en/stable/installation/">Ignite docs</a>).</p> An alternative Docker installation with Multipass on macOS without using Docker for Mac 2022-01-29T00:00:00Z https://niklasmtj.de/blog/alternative-docker-installation-macos/ <p>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.</p>