Calico provides an IP-Per-Container Networking for your Mesos Cluster.
This repository contains code and examples for running Apache Mesos with Project Calico.
Instead of the Executor sharing its Slave's networking namespace, it is instead given its own to launch applications in. Frameworks (which are responsible for creating the Executor instances) can opt-in for calico-networking by providing NetworkInfo in their ContainerInfo spec. Frameworks which do not provide NetworkInfo will simply be launched with traditional networking. Communication between applications is allowed between applications with the same "netgroup".
Calico-mesos works in conjunction with net-modules, which provides a simple JSON abstraction layer between Calico and Mesos.
For more information on how Calico works, see: projectcalico.org/learn
In order to utilize Calico Networking, each slave in the Mesos cluster must install the following dependencies:
- Each slave must run an instance of calico-node, a packaged container of calico core services
- Each slave must have
calicoctl
, a command line tool for easily launching the calico-node service. - Each slave must have net-modules libraries installed
- Each slave must have the
calico-mesos
binary installed - Each slave must have a filled in
modules.json
, which points mesos to the location ofnet-modules
libraries, and pointsnet-modules
to thecalico-mesos
binary. - Each slave must start the core mesos-slave process with
--modules=file:///path/to/modules.json
We recommend that your first experiments with Mesos & Project Calico are downloading and running the net-modules demo, which uses Docker Compose to start a small Mesos cluster with Calico enabled on your desktop or laptop.
Additionally, for a quick proof of concept, we've Dockerized the core Mesos and Calico components. Follow the Dockerized Mesos Guide to see how it works.
When you are ready to deploy on actual data center hardware, follow the instructions in the calico-docker repository.