Writing controllers in rust
summary
Compares Go tooling (controller-runtime, kubebuilder) with a Rust stack centered on Qass and async runtimes, showing concrete tradeoffs: uses Qass + tokio + tracing for async controllers, derives CRDs from upstream OpenAPI, and wires traits/macros for type-safe CRs; observed about 10× less memory for equivalent controllers; client behavior differs (direct non-cached API calls vs cached watches), so caching semantics need attention; ships a working CLI/operator (cast-gather plus a GitOps controller) that records/replays cluster state and runs successfully in CI.
AI-written summary · about
chapters (20)
- 0:00Writing controllers in Rust
- 1:04Qass library and Rust ecosystem
- 2:56Rust vs controller runtime example
- 5:49Client config and API types in Rust
- 7:57Error handling: Rust vs Go
- 10:49Performance vs Go
- 12:53Caching impact on controllers
- 15:20Controller setup and reconciliation
- 18:51Custom resources in Rust
- 21:21CRD challenges in Go
- 22:27Structured config maps in Rust
- 24:16Generating Rust types from CRDs
- 25:40Lessons and limitations in Rust
- 26:51Validation and schema in controllers
- 28:36Rust CLI for cluster diagnostics
- 31:49Debugging Rust controllers with kubetest
- 33:17Demo: Rust controller for Cluster API
- 34:43Generating CRDs in Rust
- 35:05Testing frameworks in Rust
- 35:47Conclusion and Q&A
related talks
31mIt's all about reconciliation - anatomy of a kubernetes controller
24mWriting kube controllers for everyone
27mDemystifying Why the World Is Built on Kubernetes: Learning To Leverage Bespoke CRDs and Controllers
42mCreating Operators with Rust
32mDon't Write Controllers Like Charlie Don't Does: Avoiding Common Kubernetes Controller Mistakes
54mRust, Kubernetes, and the Cloud
05mIgnite: Is rust good for Kubernetes?
46mOperators Live in the Past: Designing Reliable Kubernetes Controllers
