Skip to content

homescale-dev/homescale

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Homescale

Homescale is an experiment in building PlanetScale at home. It creates writable database instances and point-in-time branches from immutable snapshots without copying the full database. Kubernetes provides the control plane, while Rook operates Ceph and Ceph RBD provides block storage, snapshots, and copy-on-write clones.

Prerequisites

  • At least 20 GiB free host storage
  • mise

How to run

Install the tools, then use the task commands:

mise install
task up
task test
task down
task cleanup
  • up creates or starts the VM, installs K3s, snapshots, Rook, and Ceph, then exits when Ceph reports HEALTH_OK.
  • test verifies point-in-time snapshot restore and copy-on-write isolation.
  • down gracefully stops the VM while preserving its root and OSD disks.
  • cleanup deletes the VM, OSD disk, and all local Homescale data.

Infrastructure

The local infra runs on a single-node K3s cluster in a Lima VM. Rook operates a single-node Ceph cluster whose only OSD consumes a dedicated Lima raw disk. Applications receive RBD-backed PVCs through the homescale-rbd StorageClass and clone them through the matching VolumeSnapshotClass.

Provisioned Ceph has one monitor, one manager, one OSD, and one copy of every object. There is no redundancy or backup.

Stack

Component Version
Lima 2.1.4
K3s / Kubernetes 1.36.2
Rook 1.20.2
Ceph 20.2.2 (Tentacle)
Ceph CSI operator and drivers 1.0.4
CSI snapshot controller 8.5.0

Troubleshooting

mise exec -- limactl shell homescale sudo journalctl -u k3s
KUBECONFIG="$PWD/.state/kubeconfig" mise exec -- kubectl get pods -n rook-ceph
KUBECONFIG="$PWD/.state/kubeconfig" mise exec -- kubectl \
  -n rook-ceph exec deployment/rook-ceph-tools -- ceph status

About

the PlanetScale at home

Resources

Stars

55 stars

Watchers

1 watching

Forks

Releases

No releases published

Contributors

Languages