Photon Controller is an open-source system for managing hardware, containers, and clusters at scale.
Photon Controller is designed to support:
- High Scale: Manage tens of thousands of compute nodes in one deployment.
- High Churn: Handle thousands of concurrent API requests.
- Multiple Tenants: Allocate and manage resources for many users and groups in a single deployment.
- Container Frameworks: Easily spin up instances of Kubernetes, Mesos, and Docker Swarm in seconds.
If you'd like to become a part of the Photon Controller community, here are some ways to connect:
- Visit us on GitHub
- Join the Photon Controller group on Google Groups
- Ask questions using the "photon-controller" tag on Stack Overflow
If you're looking to play with the code, keep reading.
The product is arranged in a single repository, with subdirectories arranged by language. See the individual READMEs for instructions on building the code.
- Devbox: Devbox uses Vagrant to create a small standalone deployment of Photon Controller for test purposes.
- Java: Most of the Photon Controller management plane is written in Java, with many individual services implemented on top of the Xenon framework -- coming soon.
- Python: The ESX agent and its test and analysis collateral are implemented in Python.
- Ruby: The Photon Controller CLI is implemented in Ruby, as are the integration tests for the product.
- Note: The Ruby CLI will soon be replaced with a Golang version.
- Thrift: Photon Controller uses Apache Thrift for RPC communication between the management plane and the agent.
If you'd like to make changes to Photon Controller, you can submit pull requests on GitHub.
Contributors to Photon Controller must have signed and submitted a copy of the Contributor License Agreement to [email protected].
All pull requests satisfy the following criteria:
- Pass unit tests according to the instructions in the appropriate language-specific README file.
- Pass integration tests according to the instructions for Devbox.
We will run any changes through our own validation process which ensures that both conditions are met, but it's in everyone's interest if you take care of this on your own first.
Thanks, and enjoy!