MIKELANGELO uses OSv as its guest operating system. OSv, developed and supported by ScyllaDB, a partner in MIKELANGELO project, has been designed specifically for the cloud – it is a lightweight POSIX-compliant operating system suitable for running existing Linux applications, with direct support for some of the commonly used runtime environments such as JVM an node.js. OSv is one of the most feature-complete unikernels.
OSv comes with the virtual machine building tool, called Capstan. Capstan builds virtual machine images from several of the pre-built base images of fixed size and consisting of various components (for example, the command line interface, cloud-init, java, etc). This means Capstan’s approach, its level of granularity and flexibility, can be improved with an aim to provide flexible composition of virtual appliances, in other words, a better application delivery system.
With this aim, we introduced and developed the MIKELANGELO Package Manager (MPM). MIKELANGELO seeks to support flexible composition of virtual appliances (self-contained virtual machines with all required apps) by enabling a concept of an application package: arbitrary directory structure with a simple package manifest description. The execution of these appliances is very similar to starting a process or Docker container but with a notable difference: applications are running in a secure virtual machine.
MPM furthermore plans to support OpenStack as one of its runtime environments. Deployment of applications, provisioning of VMs, allocation of external volumes and configuration of network will be transparent for the user.
MPM has been designed with flexibility and application manageability and delivery in mind:
- support for composable application packages
- dynamic composition of virtual machine images from packages, including support for differential updates of VMs (adding only modified files to the VM)
- local execution of OSv-based applications using QEMU
- integration with OpenStack: deploy images to OpenStack Glance and run them directly using OpenStack Nova
- remote registry of commonly used application packages
MIKELANGELO has greatly improved the original Capstan tool, developed by Cloudius Systems. To give you a glimpse of its capabilities the following video shows a step-by-step guide to using the Capstan tool to compose minimalistic unikernels for a simple Node.js microservice application. It demonstrates the transition from running the application in our local environment into the fully virtualised environment.
Out of the box, these unikernels are also suitable for orchestration engines such as OpenStack Heat or even Kubertnetes (via Virtlet). The next video shows how the same microservices can be deployed and easily managed through the familiar Kubernetes CLI and UI.
Achievements and Results
Besides features described above, MPM has already been used in two of the MIKELANGELO use cases:
- OpenFOAM Cloud: project showing use of MPM (capstan) for on-the-fly composition of virtual machine images based on users’ requirements. It uses pre-built application packages for OpenFOAM for the Aerodynamics use case.
- Hadoop HDFS: one of the core experiments for the big data use case. MPM provides the base HDFS package and is used to compose customised VMs (for example, configuration of the central namenode).
- D4.7 First version of the application packages – published January 2016.
- D6.1 First report on the Architecture and Implementation Evaluation – published July 2016. Section 2.5 includes an evaluation of the application package management in MIKELANGELO from architectural, performance and implementation points of view. Section 4.3.1 also include an evaluation from application developer/integrator perspective.
- D4.5 OSv – Guest Operating System – intermediate version – published December 2016. Section 5 provides an overview of the capabilities of the unikernel application package management. This includes details on the runtime support, faster virtual machine image builds and integration with the cloud.
- MIKELANGELO Capstan – complete source code
- Package registry – S3-hosted registry of available application packages. This can be used to pull packages needed for composition of target virtual machines
- GitHub Documentation – up-to-date Capstan documentation. Interested readers should start with the introductory section on the application management
- User’s manual – an introduction to the capabilities of the MIKELANGELO Package Manager, built on top of Capstan
- MPM in Action – a YouTube video demonstrating dynamic composition of virtual machines using MPM
- Running Node.js Microservices with OSv and Capstan – a video showing step-by-step use of Capstan to compose and manage OSv-based microservice application
- Deploying OSv unikernel on Kubernetes using Virtlet – using Kubernetes and Virtlet for orchestration of OSv-based microservice application