Supporting the Nulecule Spec for Composite Container Applications


#1

The Atomic Project has been working on defining a spec for multi-container, multi-pod applications and has recently added the specification to its repos:

The specification is meant to be platform and tooling-neutral, so the Atomic App architecture is an implementation of the spec that utilizes Kubernetes and Docker, but other projects could also implement the spec with other software in the stack.

The features of the spec include a directed graph, multi-layer inheritance, platform-agnostic implementations, and dependency management, wrapping the app definition and context into a single container. The idea is to be able to do something as simple as “vagrant up” and pulling from existing container images or composing them on the fly to build out the complete application.

Building composite application in this way has thus far been a very manual, DIY process, and the Nulecule spec hopes to change that.

To the extent that you’re already adding support for Kubernetes and other container technologies, I wanted to put this on your radar. The idea is to make container-based applications manageable, and it would be pretty cool to have higher-level management with a platform like ManageIQ.

If interested, I’ll add some of the engineers to this thread to chime in.


#2

To me, Nulecule looks like TOSCA limited to containers.

In another post[ [1], we started a discussion about a designer and other graphical tooling that would accelerate the automate extension. I think that we should abstract the underlying resources, such as VM, container, network… with an application designer. The real topology of the application should be customizable through the portal : some library of components that you can combine to build your application and a set of rules that cover the generic cases.

So maybe we could implement a tool that is able to output configuration in TOSCA, Nulecule, whatsoever… specification language.


#3

I’ll leave it to the experts how you wish to implement/support Nulecule. The Atomic App [1] implementation might be the best starting point - that way, it’s about the tooling as opposed to the spec, per se.

[1] http://github.com/projectatomic/atomicapp/