#Ciao Project
Ciao is the "Cloud Integrated Advanced Orchestrator". Its goal is to provide an easy to deploy, secure, scalable cloud orchestration system which handles virtual machines, containers, and bare metal apps agnostically as generic workloads. Implemented in the Go language, it separates logic into "controller", "scheduler" and "launcher" components which communicate over the "Simple and Secure Node Transfer Protocol (SSNTP)".
Controller is responsible for policy choices around tenant workloads.
Scheduler implements a "push/pull" scheduling algorithm. In response to a controller approved workload instance arriving at the scheduler, it finds a first fit among cluster compute nodes currently requesting work.
Launcher abstracts the specific launching details for the different workload types (eg: virtual machine, container, bare metal). Launcher reports compute node statistics to the scheduler and controller. It also reports per-instance statistics up to controller.
An additional set of componentry provides ciao network connectivity for workload instances and insures tenant isolation. Workloads (whether container or VM) are automatically placed in a unified L2 network, one such network per tenant.
A cli and webui are available.
All ciao components communicate with each other via SSNTP using a set of payloads.
This GitHub repository contains documentation on the various sub-components of ciao in their respective subdirectories. A comprehensive ciao cluster setup document is also available.
If you would like to contribute to ciao, check our Contributing guide. The wiki page ilustrates how to easily setup a development environment without needing a cluster. We also recommend taking a look at the 'janitorial' bugs in our list of open issues as these bugs can be solved without an extensive knowledge of ciao. We would love to help you start contributing!
The ciao development team can be reached via our mailing list and on IRC in channel #ciao-project on Freenode.