Deployment Overview

Rūsternetes supports three deployment modes: a full compose cluster with etcd, a lighter compose cluster with SQLite (via Rhino), and a single all-in-one binary that embeds every component in one process. Choose the mode that matches your needs.

Deployment Modes at a Glance

Feature Full Cluster (etcd) SQLite Cluster (Rhino) All-in-One Binary
Orchestration podman compose or docker compose podman compose or docker compose Single process
Storage backend etcd (distributed KV) SQLite via Rhino gRPC Embedded SQLite
Node count Multi-node (2+ kubelets) Multi-node (2+ kubelets) Single node
HA support Yes (3-node etcd, leader election) No No
TLS Yes (auto-generated certs) Yes (auto-generated certs) Optional (--tls flag)
Container runtime Yes (Podman or Docker) Yes (Podman or Docker) Only for pods (not the binary)
External dependencies etcd, Podman or Docker Rhino, Podman or Docker Podman or Docker (for pod containers)
State persistence etcd data volume Single SQLite file Single SQLite file
Conformance tested Yes (90% pass rate) Yes Yes
Production ready Yes Suitable for non-HA Edge / dev / CI
Resource footprint ~1 GB RAM ~600 MB RAM ~200 MB RAM

Architecture: Full Cluster (etcd)

The standard deployment runs each Kubernetes component as a separate container, communicating over an internal bridge network. etcd provides distributed, consistent state storage with support for watches and transactions.

        
full cluster architecture
# Compose: Full Cluster with etcd +-----------------------------------------------------+ | rusternetes-net (bridge) | | | | +-----------+ +-----------+ +---------------+ | | | etcd | |api-server | | controller- | | | | :2379 | | :6443 | | manager | | | +-----------+ +-----------+ +---------------+ | | | | | +---------+---------+ | | | | | | +-----------+---+ +----------+----+ | | | scheduler | | kube-proxy | | | +---------------+ | (host net) | | | +--------------+ | | +---------------+ +---------------+ | | | kubelet | | kubelet | | | | (node-1) | | (node-2) | | | +---------------+ +---------------+ | +-----------------------------------------------------+

Architecture: SQLite Cluster (Rhino)

Replaces etcd with Rhino, an etcd-compatible gRPC server backed by SQLite. The API server and all other components connect to Rhino exactly as they would to etcd. The entire cluster state lives in a single SQLite file.

        
sqlite cluster architecture
# Compose: SQLite Cluster with Rhino +-----------------------------------------------------+ | rusternetes-net (bridge) | | | | +-----------+ +-----------+ +---------------+ | | | rhino | |api-server | | controller- | | | | :2379 | | :6443 | | manager | | | | (sqlite) | +-----------+ +---------------+ | | +-----------+ | | | +---------+---------+ | | | | | | +-----------+---+ +----------+----+ | | | scheduler | | kube-proxy | | | +---------------+ | (host net) | | | +--------------+ | | +---------------+ +---------------+ | | | kubelet | | kubelet | | | | (node-1) | | (node-2) | | | +---------------+ +---------------+ | +-----------------------------------------------------+

Architecture: All-in-One Binary

Every component runs as a concurrent tokio task inside a single Rust process. Storage is an embedded SQLite database (no network hop). The binary still requires a container runtime (Podman or Docker) for running pod containers, but the Kubernetes control plane itself is entirely self-contained.

        
all-in-one architecture
# Single Process: All-in-One Binary +---------------------------------------------------+ | rusternetes (single binary) | | | | +-------------+ +-----------+ +--------------+ | | | api-server | | scheduler | | controller- | | | | (axum) | | (task) | | manager | | | +------+------+ +-----------+ | (31 ctrl) | | | | +--------------+ | | +------+------+ +-----------+ | | | kubelet | | kube-proxy| | | | (task) | | (task) | | | +-------------+ +-----------+ | | | | | +------+------+ | | | SQLite | # embedded, no network hop | | | (rhino) | | | +-------------+ | +---------------------------------------------------+ | +------+------+ | Container | # Podman/Docker API for pod containers +-------------+

Decision Guide

Use this flowchart to pick the right deployment mode for your use case.

Choose the Full Cluster (etcd) when:

Choose the SQLite Cluster (Rhino) when:

Choose the All-in-One Binary when:

TIP

All three modes expose the same Kubernetes API. You can use kubectl, client-go, or any Kubernetes client library with any deployment mode. Your workload YAML files work identically across all modes.

Quick Comparison

Concern Recommendation
Fastest to start All-in-One Binarycargo run or download the binary
Most production-like Compose + etcd — separate containers, TLS, multi-node
Easiest to operate Compose + SQLite — no etcd, state is one file
Highest availability HA mode — 3-node etcd, leader election
Lowest resource usage All-in-One Binary — ~200 MB RAM for the full stack
Best for CI/CD All-in-One Binary — no compose setup, instant startup