Wabion’s Michael Ingold shares his view on some tools that simplify working with K8S and make life for software engineers even easier.
Compared to traditional deployment practices, Kubernetes already makes life for software engineers easier by providing a solid approach to the orchestration of containerized systems. Originally developed by Google and refined under the roof of the Cloud Native Computing Foundation (CNCF), the open-source system for container orchestration enables companies to reduce times and money spent on infrastructure provisioning, shorten time to market, and accelerate the implementation of new business models.
As Google Cloud’s flagship Kubernetes solution, Google Kubernetes Engine (GKE) comes along with a Container as a Service (CaaS) model. Containers hold independent microservices which together make up the application. CaaS reduces maintenance efforts and frees up resources to focus on application development.
However, Kubernetes – often referred to as the “Kernel of the Cloud” – still leaves some room for making a software engineer’s life even easier. It’s simply because software engineers are generally not very fond of writing code that interacts directly with OS kernel resources and APIs. Whenever and wherever there is a way to avoid it, we will – and go for user-space tools and libraries to make our life easier. Along my K8S journey I have encountered some tools that have turned out to be helpful and powerful companions:
If you are a software engineer, your first contact with Kubernetes is likely to be the ‘kubectl’ tool. Enabling you to get familiar with all aspects of a cluster, I still use it for automating things. On the other hand, it also may take a lot of time, since inspecting logs and digging through configuration issues may become a matter of typing dozens of commands. That’s where K9s comes into play:
The intuitive user interface of K9s includes various productivity features.
The intuitive user interface comes along with a lot of productivity features. For example, it refreshes automatically when they displayed data changes highlighting the new information and state. In case you are used to VIM as an editor, you’ll feel at home with K9s. If not, there is always ‘?’ to help you out.
Have you ever found a Linux distro without some kind of package manager? Probably not, even though the Linux community is always up for a surprise;)! With Kurbernetes, you may find yourself in the same situation, i.e. you deploy databases typically by writing your own YAML resource definitions. Well, with Helm, you can pass on that and save time.
Helm provides you with a ‘template’ to deploy almost any kind of system. Almost all major database vendors provide Helm charts including best practises on how to release their system of Kubernetes. Even if you don’t use Helm charts, I suggest you check them with your database folks. I bet they consider K8S to be the best place to run your databases.
“Kustomize” might also be something worth having a closer look at, in particular for Helm users. Addressing the same issue, this tool follows quite a different approach. Should Helm ever let you down, you might be glad to have Kustomize in your tool box.
Do you remember the time when we had to certify public keys manually and pay a big deal of money for them? Cert-Manager won’t remind you of it, as it lets you get trusted certificates quickly and efficiently. If set up right, Cert-Manager can get you a trusted TLS certificate for free in less than a second from Let’s-Encrypt.
You may also choose other certificate authorities (CA). But honestly, why should you? Cert-Manager can also be an internal CA in your cluster, signing certificates with self-signed keys for internal use. This can be really useful when using mutual TLS authentication in your system. Last but not least, there is a helm chart to help you deploy Cert-Manager.
Once you have written your YAML files and pushed them to your cluster, everything is running fine. As the next step, you are probably going to check these files into GIT. Wouldn’t it be great to have your cluster take all the resources manually pushed from the GIT repository and apply them when you push them to the mainline branch?
That’s exactly what the Git-Ops solution Flux can do for you. Running in your cluster, Flux compares the state of the cluster with the resource definitions in the specified repository and makes them match if necessary. Flux can also automatically update new image versions as they become available in the image registry. Make sure to semver your images carefully in order to avoid unexpected downtime. Really last but definitely not least: Flux can also compile and deploy Helm charts for you.
Do you want to learn more about Wabion’s Kubernetes expertise, in particular for Multi- and Hybrid Cloud setups? Then, browse our TRANSFORM section and read our latest blog articles. Or do you have specific questions regarding the tools presented in this article, drop me a message on michael.ingold@wabion.ch.