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"] } } } }