Skip to content

Releases

Gachinetes ♂ v0.2.0

Choose a tag to compare

@github-actions github-actions released this 09 Nov 00:07
ac44e13

Added

  • CI on pull requests and on main: gofmt, go vet and go test for both
    modules, and every component image built without pushing.
  • The tape in S3. gachi-tape ships the tape (a base, then the journal)
    to S3-compatible storage as it is written: one shipper per cluster by
    lease, settings from --replicate flags 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 DIR brings the store back with its
    history after the cluster is lost. Needs kuberoot-store with
    /tape/v1/journal and tape 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 in gachi-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 discard and
    fantasy list. New image gachi-fantasy-preview (Dockerfile.preview),
    deploy/fantasy-preview.yaml, and a GitHub Actions example in
    examples/github/. gachi-fantasy gains --preview, --ttl, --listen
    and --san.

Changed

  • hack/kuberoot.sh builds kuberoot's main by default (fetched first);
    KUBEROOT_REF picks 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 trying main between 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

Choose a tag to compare

@github-actions github-actions released this 08 Nov 07:21
d71752a

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-tape serves it decoded as the
    aggregated API tape.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, and vhs, a web UI that plays the tape like a VHS deck
    (rewind, live view, graveyard, undelete).
  • gachi-referee: Bout resources and events for field managers that keep
    taking a field from each other; BeltPolicy field 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; --merge with
    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: PriceList and namespace Budget in money, with
    admission refusing pods over budget.
  • Protein: ProteinShake placeholders 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: TrainingPlan resizing 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.sh builds 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) and hack/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.