Lightweight single-node Kubernetes for edge, built on Fedora-packaged components.
A from-scratch reimplementation of MicroShift. Instead of embedding K8s components as Go libraries in a monolithic binary, this project is a thin Go daemon that orchestrates separate systemd services using binaries from Fedora's kubernetes1.35 packages.
MicroShift is a daemon (microshift.service) that:
- Generates TLS certificates and kubeconfig files
- Writes configuration for each K8s component
- Manages component lifecycle via systemd D-Bus
- Bootstraps the cluster (applies kindnet, CoreDNS manifests)
- Monitors health
Components run as separate systemd services:
microshift-etcd.servicemicroshift-apiserver.servicemicroshift-controller-manager.servicemicroshift-scheduler.servicemicroshift-kubelet.servicemicroshift-kube-proxy.service
All have PartOf=microshift.service — stopping MicroShift stops everything.
make build # builds bin/microshift
make test # runs unit tests
make lint # runs golangci-lint
make install # installs binary, systemd units, assetscmd/microshift/— CLI entry pointpkg/config/— configuration loading and defaultspkg/certs/— TLS certificate generationpkg/kubeconfig/— kubeconfig file generationpkg/services/— systemd service management and component config generationpkg/bootstrap/— cluster bootstrap (manifest application)pkg/healthcheck/— component health monitoringpkg/daemon/— main daemon orchestration loopassets/— embedded K8s manifests (kindnet, coredns, kubeproxy, rbac, storage)packaging/— RPM spec, systemd units, default configimages/— bootc Containerfile, Fedora spin kickstart
- Go module:
github.com/ausil/microshift-2.0 - Config file:
/etc/microshift/config.yaml - Data directory:
/var/lib/microshift/(certs, kubeconfigs, component configs, etcd data) - Targets Fedora IoT with kubernetes1.35, etcd, cri-o1.35, containernetworking-plugins
- Kindnet and CoreDNS run as pods (not host packages)
- Apache-2.0 license
Host packages (from Fedora repos):
kubernetes1.35— kube-apiserver, kube-controller-manager, kube-scheduler, kubeletetcd— cluster state storecri-o1.35— container runtimecontainernetworking-plugins— CNI plugins (bridge, host-local)
Go dependencies:
github.com/coreos/go-systemd/v22— systemd D-Bus integrationgopkg.in/yaml.v3— config file parsing