nulecule - wordpress.comnulecule packaging multi-container applications ratnadeep debnath (@rtnpro)...
TRANSCRIPT
NuleculePackaging multi-container applications
Ratnadeep Debnath (@rtnpro)An Open Source contributor, for fun :)
Topics● Nulecule● Atomic App● Getting Involved
Containers are great, but it is not just one container.
Real life applications are composed of multiple
containers (Micro-services?)
But how to define a multi-container application configuration without distributing instructions and
files to the end-user ?
We have docker compose , kubernetes configuration files, but is it enough?
The application also goes through different stage
Metadata changes for each stage.
Nulecule● A specification to package multi-container
apps ● Container technology agnostic
Understanding Nulecule● Graph
– Directed acyclic graph to define application
dependencies/components.
Understanding Nulecule● Parametrization
– Values/information for deployment
– Default values (Can be overridden by answers.conf)
– Each component has its own parameters
– Supports variable substitution, regular expression etc
Understanding Nulecule● Answers.conf
– Porvides answers to question defined by prarameters
– Override default values of parameters (e.g. for
different environment)
Understanding Nulecule● Artifacts for providers
– e.g. Kubernetes, OpenShift, Docker Compose, Mesos,
Docker
– Metadata for orchestrators/providers
A complete Nulecule Spec
Atomic App● Reference implementation of Nulecule spec● At this moment only supports docker run time● It performs all actions required to run the
application by reading the Nulecule spec.– Downloading all required docker images
– Communicating to providers etc
Using Atomic App● As a docker image● Use atomicapp base image to build nulecule-ized
applications● Running a nulecule-ized applications
– $ atomic run projectatomic/helloapache
● Uses /usr/bin/atomic labels– $ grep Run Dockerfile
RUN="docker run -it --rm \${OPT1} --privileged -v `pwd`:/atomicapp -v
/run:/run -v /:/host --net=host --name \${NAME} -e NAME=\${NAME} -e
IMAGE=\${IMAGE} \${IMAGE} -v \${OPT2} run \${OPT3} \${IMAGE}" \
Nulecule-library
Get involved ● https://github.com/projectatomic/nulecule● https://github.com/projectatomic/nulecule-libr
ary● https://github.com/projectatomic/atomicapp● #nulecule on Freenode● Mailing List: [email protected]
Thank you :-)
Any questions please?
Contact me: @rtnpro on Twitterrtnpro on Freenode