Asterix - Deploying Webapps on Kubernetes for Dummies
Submitted by Dhruv Goel (@dhruvg-qubole) on Friday, 17 May 2019
Section: Full talk Technical level: Intermediate Session type: Lecture
Is Kubernetes hard to learn? For most people, it’s a yes. For some, it’s a no.
As an application developer, do you need to learn about Kubernetes - Probably no.
We will share a story about how certain “some” people enabled certain “most” people to run their apps on Kubernetes without having to learn about its intricacies.
Why is Kubernetes hard to learn?
It’s hard because Kubernetes is an attempt to standardize disparate set of tools built in different companies under vastly different circumstances and various other constraints like time, money, and talent.
Naturally, Kubernetes has introduced tons of options to do a variety of things which need not be learned by application developers to successfully run web applications using Kubernetes.
For instance, requirements for a typical web application developer are very simple - an endpoint to access the web app and being able to specify the config, memory and CPU requirements of the app. However, typically the following Kubernetes constructs are required to achieve this - deployment, configmap, service and ingress.
Asterix is an attempt to abstract out these Kubernetes specific constructs and build a simplified interface for developers who just want to run their apps without getting into the complexities of infrastructure world.
Asterix not just abstracts out the working details of an application, it also helps in debugging infrastructure problems.
This was done by exploiting common patterns in typical applications and building simple abstractions/framework around those.
For e.g. running a stateless web application requires just a single API call to run in Asterix. Even custom memory and CPU can be provided in the same API call.
Routing, authentication, and scaling of apps is taken care of by the framework without involvement from developers.
The framework also:
- runs the applications in an efficient manner and avoids resource fragmentation by doing bin-packing of containers on Kubernetes worker nodes.
- avoids resource leakage by autoscaling the worker nodes dynamically.
- helps app developers find the live logs and log history easily.
- provides an always available cluster (For some definition of availability) to application developers by keeping some spare capacity in the cluster all the time.
This talk will share the journey in building this framework which hopefully will inspire the community to build simplified interfaces on top of Kubernetes.
Software Developer with the Cluster Management Team at Qubole Inc.