December has seen many holidays and deadlines of other projects. Apart from that, we have been focusing most of our OpenAppStack work on “the storage problem”. Furthermore we have improved our setup script by rewriting it to Ansible.

The storage problem

We have spoken to some other organisations that are trying to adopt Kubernetes. They all run into the same problem. How do you store the application files in such a way that applications can be restarted on or moved to different servers? Enterprise solutions involve using custom made Amazon or Google storage services, but we want to be able to keep the data in our own servers.

The simpler solution we have been using so far is “local storage”, but that is not ready for production use, does not provision volumes automatically, and only works for a single node cluster.

Our solution

We have started working on a solution based on flexVolume. This is a Kubernetes plugin interface that lets you create scripts for, among other things, creating persistent storage volumes and mounting and unmounting them on nodes. This enables us to develop two things:

  1. Local storage provisioning. One of the problems of using local storage is that it does not provision volumes automatically. By creating scripts that add this functionality, local storage could be used in single node Kubernetes clusters, which should be enough for hosting OpenAppStack for a few users.
  2. Greenhost/Eclips.is specific provisioning. It is possible to make a flexVolume driver and provisioner that calls the Greenhost or Eclips.is cloud API to make disk images and mount them to nodes. Greenhost will develop these API calls so they can be used by bigger OAS clusters in the future.

In December we have mostly been working on making these plans. The actual implementation should follow in the next few months, if all goes well. Again, if you have any experience with this, please contact us!

Bootstrapping

Bootstrapping the Kubernetes cluster for OpenAppStack now happens with Ansible instead of the shell scripts we have made earlier. This is mostly an improvement in terms of documentation and stability and does not add extra features to OpenAppStack. The playbook can be found here.