This blog post isn’t about what Kubernetes is. There are many great articles which describes K8S and its architecture.
The business case for Kubernetes is quite simple; if you are using containers in a hybrid cloud environment then K8S is for you. What do I mean by that?
Well let’s start from the beginning.
Developers have adopted containerisation as a a packaging output. We used to deploy our code as packaged JAR binaries. If another developer wanted to work on out code, she/he would checkout the code, build it and then run it. Unless you had dependencies and environment issues. Containers allowed code to be ran in a predictive way.
So why am I saying that developers should not worry or bother with Kubernetes?
1. Kubernetes is infrastructure
Kubernetes is an infrastructure management tool. We do refer to it as a container orchestration platform. This is something for the ops team to worry about.
2. Developers never worried about Ansible and Puppet
Developers create applications and provide packages with instructions to run them. With containerisation, we can say there’s now a standard way to deploy code in to various environments. Developers should not worry about the underlying machines, cluster or even memory ( to an extent).
3. DevOps might be a culture but it’s more Ops than Dev
DevOps is about a continuously working with the development team from an operation perspective. Ops starts when the code is checks into the source code repository. Who manages the SCM, is a different question. The DevOps team is tasked with deployment the code into the required environments. I would go as far as saying that the DevOps should provide a template Kubernetes deployment resource file to the dev team.
4. Developer should not worry about running their application in K8S
Installing kubernetes is time-consuming. I do not doubt that you can run your code on Minikube and the likes. But developers time should not be spent there. A quick test in your preferred container would give you an indication of the readiness of your code.
5. You should get a knowledge of your environment
It sounds like I’m backtracking but no. Developer should be aware of the end environment in order to minimise issues. I’m not saying to become an administrator of the platform but simple stuff like resources and DNS would help troubleshoot issues like why you can’t access the REST API.
In all, if a developer needs to gear up on Kubernetes, I would recommend that they use a managed version. Developers should spend time trying to create a cluster, networking and persistence. Just focus on your code.