mirror of
https://github.com/CloudNebulaProject/reddwarf.git
synced 2026-04-10 13:20:40 +00:00
Kubernetes but better and for Illumos - mirror
Decouple storage from the ZoneRuntime trait into a dedicated StorageEngine trait with ZfsStorageEngine (illumos) and MockStorageEngine (testing) implementations. Replace the per-zone ZfsConfig with a global StoragePoolConfig that derives dataset hierarchy from a single --storage-pool flag, with optional per-dataset overrides. This enables persistent volumes, auto-created base datasets on startup, and a clean extension point for future storage backends. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| crates | ||
| docs/ai/research | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| DEVELOPMENT.md | ||
| LICENSE | ||
| PHASE4_SUMMARY.md | ||
| README.md | ||
Reddwarf: Rust-Based Single-Binary Kubernetes Control Plane
A pure Rust implementation of a Kubernetes control plane with DAG-based resource versioning.
Project Status
Current Phase: Phase 4 Complete (API Server) ✅
Completed Phases
Phase 1: Foundation & Core Types ✅
- ✅ Workspace structure created
- ✅ Core Kubernetes types and traits (Pod, Node, Service, Namespace)
- ✅ Error handling with miette diagnostics
- ✅ ResourceKey and GroupVersionKind types
- ✅ JSON/YAML serialization helpers
- ✅ 9 tests passing
Phase 2: Storage Layer with redb ✅
- ✅ KVStore trait abstraction
- ✅ redb backend implementation (100% pure Rust)
- ✅ Key encoding for resources
- ✅ Transaction support
- ✅ Prefix scanning and indexing
- ✅ 9 tests passing
Phase 3: Versioning Layer ✅
- ✅ VersionStore for DAG-based versioning
- ✅ Commit operations (create, get, list)
- ✅ Conflict detection between concurrent modifications
- ✅ DAG traversal for history
- ✅ Common ancestor finding
- ✅ 7 tests passing
Phase 4: API Server ✅
- ✅ Axum-based REST API server
- ✅ HTTP verb handlers (GET, POST, PUT, PATCH, DELETE)
- ✅ Pod, Node, Service, Namespace endpoints
- ✅ LIST operations with prefix filtering
- ✅ Resource validation
- ✅ Kubernetes-compatible error responses
- ✅ Health check endpoints (/healthz, /livez, /readyz)
- ✅ 7 tests passing
Total: 32 tests passing ✅
Architecture
reddwarf/
├── crates/
│ ├── reddwarf-core/ # ✅ Core K8s types & traits
│ ├── reddwarf-storage/ # ✅ redb storage backend
│ ├── reddwarf-versioning/ # ✅ DAG-based versioning
│ ├── reddwarf-apiserver/ # ✅ Axum REST API server
│ ├── reddwarf-scheduler/ # 🔄 Pod scheduler (pending)
│ └── reddwarf/ # 🔄 Main binary (pending)
└── tests/ # 🔄 Integration tests (pending)
Building
# Build all crates
cargo build --workspace
# Run all tests
cargo test --workspace
# Run clippy
cargo clippy --workspace -- -D warnings
# Build release binary
cargo build --release
Next Phases
Phase 5: Basic Scheduler (Week 6)
- Pod scheduling to nodes
- Resource-based filtering
- Simple scoring algorithm
Phase 6: Main Binary Integration (Week 7)
- Single binary combining all components
- Configuration and CLI
- TLS support
- Graceful shutdown
- Observability (logging, metrics)
Phase 7: Testing & Documentation (Week 8)
- Integration tests
- End-to-end tests with kubectl
- User documentation
- API documentation
Key Features
- Pure Rust: 100% Rust implementation, no C++ dependencies
- Portable: Supports x86_64, ARM64, illumos
- redb Storage: Fast, ACID-compliant storage with MVCC
- DAG Versioning: Advanced resource versioning with conflict detection
- Type-Safe: Leverages Rust's type system for correctness
- Rich Errors: miette diagnostics for user-friendly error messages
License
MIT OR Apache-2.0