First steps in microk8s

It hides the magic, and I hate not seeing the magic

I’ve been making my first foray into deploying some things into K8S. I’ve never really used it in anger to deploy something that I have a personal relationship with. My trusted peers tell me that kind is probably one of the better ways to start with K8S; I’ve also got a use case where I’m intending to build a cluster at home (via a bunch of RPIs) and since microk8s touts itself has being zero-ops and it has a KEDA add on I thought I’d give it a spin.

This is 2 days worth of fun, mostly wrestling with my search engine of choice for the right terms to narrow down to my specific problem (with microk8s). In many respects nothing that I’m doing is new or special and should have been painless; but once you get past the most trivial of examples you’re in a world of search pain or stack overflow noise if you aren’t already an Kubernetes expert. So, this is a blog post that tries to save you pain with a non-trivial trivial example of deploying something into kubernetes via MicroK8S

I’m going to bootstrap a single kubernetes node with an ingress controller running ActiveMQ, Elasticsearch and Kibana. This is easy to do if you were using docker compose, and that’s what I would usually do, but I wanted to play with KEDA since I have more than a passing interest in understanding how to autoscale workers that are attached to JMS, and what gotcha’s I need to think about.

Dynamic Environment Variables

I use direnv; I can’t make up my mind about my preferred shell/platform combination

I’ve been using direnv to control my environment variables on a per-directory basis for a while. It all really started because I needed to use my personal AWS credentials for some projects and my corporate AWS credentials for others. While it was certainly possible, the hoops I had to jump through to try and provision KMS against my corporate credentials just made me lose the will to live. Sometimes it’s just more expedient to use my personal AWS credentials depending on what technology I want to play around with.

I’m back on Windows after a couple of years with a Mac. I might eventually go back to a Mac but at the moment the lack of arm64 docker images for the things that I commonly use makes me a little wary. Windows means I that use scoop.sh to install software, but I will use a combination of Windows git-bash, WSL v1 and WSL v2 depending on my mood. WSL v2 is faster to startup, but has crap performance when attaching to your windows filesystem. WSL v1 has better performance against the windows filesystem but takes more time to startup because of corporate AV scanning. This just means more hoops for me to make my direnv configuration consistent across all 3 bash instances.

First and last impressions matter

It’s a truism; but is it that self-evident to people?

I’ve recently been in the position of having time off over the summer by virtue of handing in resignation and deciding to take a break; it ended up being about 6 weeks. I recently got accepted for a new position and my experience of the exit and subequently onboarding process led to some introspection around how much first and last impressions matter for a company.

Diversity of Perspective

If you’re the smartest person in the room; you need to find a different room

One common pattern I see in not-quite-yet-senior developers is that they don’t necessarily recognize the moments when there is more than one option. This happens all the time in programming; you are constantly making decisions and committing to particular solutions. If you are not aware of the choices you are making - you are picking the first idea that comes to mind (or the first stackoverflow answer) then there’s a good chance you are choosing poorly.

Change is just change

Plus ça change, plus c’est la même chose

In the midst of the COVID-19 pandemic, we should all be getting a lot of time for introspection and examination. This was going to be a post about the changes I needed to make to git-flow so that we can support the changes that github decided on around default branch naming in git. It veered off on a tangent pretty quickly because I didn’t need to do anything with git-flow. The original script writer decided that master, production, and main were all valid trunk branch names for the default behaviour, so now we have git-flow enabled with main+develop and older repositories with master+develop. I suspect this isn’t by coincidence.

Pagination


© all-the-years. All rights reserved.

Powered by Hydejack v9.1.6