But not everything that is surrounded by buzzwords is bad or a hype, it might just be that it's the future for a lot of things we as developers will build in the future. This night the technology part of the developers.nl technight was Kubernetes. With a talk named “Kubernetes: from 0 to production in 3 months” our own colleague David Weterings gave us a look into Kubernetes and how he implemented this in at Gall & Gall. He showed us what Kubernetes is, a basic overview of what you need to know and what is important to keep an eye out for.
First things first, what is Kubernetes? David explained it as the following: “Kubernetes (commonly referred to as "K8s") is an open-source system for automating deployment, scaling and management of containerized applications”. The term “containerized applications” might be something you have heard of before if you are familiar with docker. Kubernetes helps us supercharge these containerized applications by giving us some amazing features:
- Horizontal scalability
- Cloud agnostic
- Technology agnostic / containers
- Open source
- $$$ savings
- Defacto standard for Container management
David explained Gall & Gall was in the traditional virtual machine landscape most people know. A set of VM’s that have different application on them that need to be developed and maintained. All these servers where maintained by a third party and access was limited, so no root access. It’s a somewhat inflexible situation, reacting to situations like big traffic spikes was hard if they were sudden or bigger than expected. Kubernetes was a chance to change this.
David then shows us the inner workings of K8s. He went into the terms we all need to know when where talking about K8s: Kubernetes objects, Pods, Containers, Deployments, Services and ingresses. All critical parts of working with K8s that are written in yaml files. He explained to us how all these concepts worked and how we can use them to get an application working in a K8s cluster. The biggest thing is here that K8s is not running on a single server but multiple, up to five thousand nodes in the latest version. K8S manages this cluster of nodes and makes sure your application is always running. You no longer have to manage servers for a specific application with their own configuration. You give K8s your dockerize application with K8s configuration files and it will handle the rest.
To get an application ready for K8s David told us to do the following things:
- Dockerize everything
- 12 factor app
- Configuration from environment
- Scale out via processes
- Write Kubernetes yaml files
To help a hand with this David also explained a bit about the tool HELM. Helm is a package manager for Kubernetes that has a lot of examples how application can be run in K8s. Helm helps you to create your K8s yaml files and make it easier. It even has a lot of existing application like WordPress you can just start using without a lot of effort.
This talk had a lot of information, and it depended on a lot of already existing knowledge about tools like docker. And even then, we were not able to get into details of things like logging in a ELK stack, monitoring and Alerting, Storage for persistent application like databases, Continuous deployment and more. So what was David’s advice on using K8s? Well it really depends. If you are a large company with lots of different software teams, or you need something that scales and is also cloud agnostic Kubernetes makes perfect sense. If not, you can probably just spin up a VM and be just fine, don’t make things harder than they need to be.