06. Kubernetes as container orchestrator

Date: 2018-05-22

Status

Accepted

Context

Customers have varied needs for Valamis. That includes where Valamis must be hosted on. Customer may have their preferred cloud provider or in extreme cases even their bare metal servers.

As Valamis moves towards microservices, complexity of deployments, rollbacks, version management, service communication etc is growing. Containers themselves bring in some level of independence, but to generalize application's configuration and container orchestration/scheduling and easen up the deployment to varied environments, more than that is needed. Valamis SaaS endeavour (currently called as Valamis Cloud) also needs an easily scalable solution as it's user base is quickly growing.

Decision

Kubernetes will be used as container orchestrator to generalize deployment and configuration of Valamis microservice application.

Consequences

Kubernetes (or k8s) seems to be the most widely adopted container orchestration and scheduling solution as of 2018-05-22. Kubernetes was originally developed by Google and now is fully open source and backed by Cloud Native Computing Foundation. As a big benefit it has a big and thriving ecosystem with lot of additional open source tooling.

Kubernetes cluster can be created on the top of any current Linux or even Windows machines. The easiest choice for cluster is to use 'native' managed solutions provided by some cloud providers. All major players (AWS, Azure, GCE)are providing managed Kubernetes. Kubernetes is runnable on local machines with Minikube.

Kubernetes bring in additional learning curve in both host and application configuration which needs to handled by Valamis devops team. Kubernetes might first seem to be a rather complex system but in the real production installations manual/immature orchestration quickly becomes a bottleneck.

We believe that in the end we'll reap the benefits of advanced Kubernetes features like dynamic scaling of services, out-of-the-box service discovery with DNS and configuration as Valamis' (particularry it's SaaS version) is evolving.