This is an old revision of the document!
Cluster system
This is an idea dreamt up by @samp20 that may one day become a reality. The goals are to:
- Create a cluster management system for small clusters.
- Be simpler to setup and use than Kubernetes.
- Work across networks. For example between a cloud provider and self-hosted.
- Not require a separate management service.
Parts list
Here's the parts that are proposed for this project:
- Python based core.
- JSON for cluster configuration.
- Will eventually be signed (possibly JWT).
- runc (or other OCI compliant runtime) for container management.
- Wireguard for the node mesh network.
- NFTables for firewall configuration.
- Python Flask for config distribution.
General architecture
The core of the system will be a python service that will receive the configuration (probably via UNIX socket), validate it and update the various components through python plugins using importlib.metadata.entry_points.
The configuration will consist of objects representing different parts of the system that need to be configured. An example is below:
{
"hosts": {
"cloud01": {
"wg_network": {
"type": "wireguard_network",
"link_name": "wg_cluster",
"address": "10.69.0.1/16"
},
"peer_local01": {
"type": "wireguard_peer",
"network": "wg_network",
"allowed_ips": ["10.69.1.0/24"]
}
}
}
}