Kubernetes. The swiss army knife with a built in steroids dispenser, a hammer, starbucks and a full size tennis court.
You never really get to appreciate the problem kubernetes solves till you have experienced the headache of managing things like service discovery, individual containers, metrics server, reverse proxy, certificate management and the slew of other things to run your applications. The sheer amount of things to juggle to keep everything green and running increases exponentially with large environments – and yet kubernetes can help in both small and large environments.
With a small application infrastructure it’s easy to whip up a simple deployment pipeline with a few repos and run them on some app servers with an nginx proxy that forwards requests to the application. The issue starts when other concerns come in, like:
- Zero downtime deployments
- Certificate management
- Separate environments e.g. staging and development
- Secrets management
How do you monitor the application to ensure that all is running as expected, what type of logging solution will be used to ingest all the application logs? what metrics system will you use to collect metrics from the application and the underlying infrastructure? does the application need secrets? how do you manage secrets such that a disgruntled employee that left last July does not still have creds to destroy your whole infrastructure?
These set of concerns tend to mount and stack on each other (AKA Tech Debt) as you set off on your journey to build a reliable, scalable and resilient infrastrucure. Kubernetes (I’ll call it k8s from here on) really aims to serve as the operating system for your infrastructure in the sense that k8s takes a LOT of the burden of handling most of the tasks involved in the application lifecycle. This is huge! it is also extensible such that you can add functionality you feel you need – but even what you get out of the box is an amazing body of engineering.
Yes it is opinionated, some you may like and agree with, some you may not – but you’ll get over it, if you don’t like something, propose a change with a PR or just use something else – life’s too short to squabble over petpeeves.
That said, there will be more posts about some of the migrations I make in my lab environment in my exploration.
The more you know, the more you know there’s more to know.