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.

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.

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"]
            }
        }
    }
}
  • projects/cluster.1752506799
  • Last modified: 29 hours ago
  • by samp20