A plugin to integrate Marathon as an orchestrator for Alien4cloud. It features deployment of complex Docker containers topologies on a Mesos/Marathon cluster using MarathonLB and MesosDNS for service discovery.
Disclaimer: This project is at an alpha stage and still undergoing development. It is not yet fit for production. Any feedback would be highly appreciated !
This readme assumes that you are already familiar with Alien4Cloud. If you aren't yet, please check out our website.
The first thing you'll want to do is setting up a Marathon+Mesos cluster on the Cloud provider of your choosing. Luckily, Alien4Cloud can do all the heavy-lifting for you.
- First, upload the following CSARs into Alien:
- docker-engine
- mesos-types
- docker-types
- Then, create your own custom Mesos TOSCA composition or use a convenient template we made for you. Note that if your IaaS doesn't automatically assigns public ips you'll have to add a public network to your template.
- Finally, setup the Cloudify orchestrator on the Cloud provider and hit deploy.
If you're more of a Youtube person, you can also follow our demonstrxation video.
- Download the plugin from our Maven repository here, or clone this repository and build it yourself using
mvn clean install
. - Upload the orchestrator archive alien4cloud-marathon-plugin-${VERSION}.zip into alien using the plugin view.
- Set up the orchestrator by simply giving Marathon's URL. Create an empty location - you don't need to create any resources for now.
You can now define and deploy your own custom TOSCA docker node types using the docker-types or try our Nodecellar demo app.
- Upload Nodecellar nodes-types, which consists of a Docker container with MongoDB and a another Docker container with Node.js and the Nodecellar app, into Alien.
- Create your own application topology or start from our template.
- Hit deploy and enjoy the fun !
We also made a Youtube video for this. It's here.
We added experimental support of the external storage feature from Marathon. We currently use RexRay as a Docker Volume Driver. Please note that while RexRay is able to dynamically provision volumes on your provider, those will NOT be cleaned up upon undeployment.
This plugin is still work-in-progress. We decided to release it to the world early in hope to get traction and feedback from the community. Please make use of the Issues section !
- Currently, we only support running Docker containers in Marathon.
- The plugin will not operate if you omit to deploy MesosDNS and MarathonLB (with the haproxy_group internal) on your cluster. If you're new to Mesos+Marathon, consider using our template.
- Persistent volumes are still WIP in Marathon. We plan to implement them in the near future.
- It is not yet possible to scale a Docker container in Alien. This should be addressed soon.
- We did not exactly follow the TOSCA model for Docker containers as it is still incubating. More on this here.
- It not possible to stop the deployment of an application. Wait for it to be deployed then hit un-deploy.
- The connexion to Marathon is NOT secured.
- Health checks events are not parsed. However, the health of each instance is polled when refreshing the runtime view.