Repository navigation
Releases
Releases · tym83/gachinetes
Gachinetes ♂ v0.2.0
Added
- CI on pull requests and on
main: gofmt,go vetandgo testfor both
modules, and every component image built without pushing. - The tape in S3.
gachi-tapeships the tape (a base, then the journal)
to S3-compatible storage as it is written: one shipper per cluster by
lease, settings from--replicateflags or the Secret
gachinetes/gachi-tape-replica, age encryption (unencrypted only on
request), a new base daily, retention.gachictl tape restore --from s3://… [--at TIME|REVISION] --data-dir DIRbrings the store back with its
history after the cluster is lost. Needs kuberoot-store with
/tape/v1/journalandtape restore(kuberoot-dev/kuberoot#48). - Fantasies as preview environments.
gachictl fantasy preview --pr URL|N --manifests DIR [--ttl 72h]runs a fantasy of a pull request's
manifests as a Job ingachi-fantasies, publishes its report and the
branch's kubeconfig, and keeps it up until the TTL;fantasy merge
applies the manifests unless the cluster moved on,fantasy discardand
fantasy list. New imagegachi-fantasy-preview(Dockerfile.preview),
deploy/fantasy-preview.yaml, and a GitHub Actions example in
examples/github/.gachi-fantasygains--preview,--ttl,--listen
and--san.
Changed
hack/kuberoot.shbuilds kuberoot'smainby default (fetched first);
KUBEROOT_REFpicks another ref, such as a branch not merged yet.- CRI-O v1.37.3 (was v1.37.2); CRIU stays at v4.3, the latest release.
- Kubernetes libraries and the stand's binaries v1.37.2 (were v1.37.1).
- README: a table of component versions and where each is set.
- The release workflow, run by hand, pushes the branch's images as
:edge
for tryingmainbetween releases.
Known issues
- The between-people phase of the design is not implemented.
- The release images are built from this repository only; the kuberoot base
images and a gachi-scheduler image are not part of this release (the
gachi-scheduler binary is in the tarballs).
Gachinetes ♂ v0.1.0
First release. Gachinetes is a research distribution: a working study, not a
product. Phases 1–8 of the design plan are implemented.
Added
- Tape. The kuberoot store (etcd-API compatible) keeps cluster history
past compaction in a journal.gachi-tapeserves it decoded as the
aggregated APItape.gachinetes.dev(front-proxy authentication,
SubjectAccessReview per request), with Secrets decrypted using the API
server's own encryption keys. - gachictl:
get --at,rewind --to,history,graveyard,
undelete,tape,bouts,belts,why,bill,safeword,
dungeon, andvhs, a web UI that plays the tape like a VHS deck
(rewind, live view, graveyard, undelete). - gachi-referee:
Boutresources and events for field managers that keep
taking a field from each other;BeltPolicyfield ownership enforced by a
validating webhook (refuse or warn). - gachi-fantasy: copy-on-write branches of the cluster at any point of
the tape, run with real controllers and scheduler and kwok nodes; a report
of created, changed and removed objects and pod placements;--mergewith
conflict checks. - gachi-scheduler: kube-scheduler with weight classes (a super-heavyweight
holds its node alone), tag teams (all-or-nothing gang scheduling) and
boy next door (placement next to chatty peers). - Three hundred bucks:
PriceListand namespaceBudgetin money, with
admission refusing pods over budget. - Protein:
ProteinShakeplaceholders holding room for heavy pods and
images pre-pulled on nodes. - gachi-mover: live migration of running pods between nodes by CRIU
checkpoint and restore on CRI-O (Migration), and rounds: scheduled
checkpoints that bring a failed pod back from its last round. - Security:
Contract(time-bound cluster role with a spotter's
approval), safeword (revoke every contract at once), spotted deletes of
namespaces, CRDs and volumes, the dungeon (pod quarantine), leather
(keeps pods off the host),Locker(Secret readable by its own service
accounts only). - Coach:
TrainingPlanresizing a Deployment's pods in place. - Sparring, Aniki, away matches: scheduled pod kills with service
rankings, admission-time workload review, bursting unschedulable pods to
another cluster. - Distribution:
hack/kuberoot.shbuilds kuberoot as Gachinetes (edge
profile, gachi-scheduler instead of kube-scheduler, the tape, referee and
mover as node services, CRI-O with CRIU, a kernel with checkpoint/restore). - Test stands:
hack/stand/(control plane in one pod, 131/131
scenarios) andhack/vm/(live migration, rounds and the coach on
kuberoot VMs). - Release workflow: linux amd64/arm64 binaries and multi-arch images
ghcr.io/tym83/gachinetes/<component>.
Known issues
- Conformance (hydrophone, 462 tests) on a three-VM kuberoot cluster:
461/462 in the full run. The one failure, the tcp:8080 liveness probe
test, was a kubelet probe timeout on a loaded VM; it passed 3/3 when run
on its own. - The between-people phase of the design is not implemented.
- The release images are built from this repository only; the kuberoot base
images are not part of this release.