See also what's done, as well as the TODO for a more "nitty gritty" level view.
-
first baremetal install - easy, now -- or is it, with x2 USB keys for Arch ISO & cloud-init; git clone and launch?
-
Something like
dinstall
from https://github.com/vorburger/LearningLinux/compare/WIP-arch-iso-dinstall to install from USB to persistent bare-metal. But test it in VM first. -
Few
kubeadm join
Vagrant VMs, with different hostnames, on same subnet, form a working Kube cluster -
Cluster API-based machine management, notably CABPK
-
Host & Ephemeral Volumes work out-of-the-box
-
Service, LoadBalancer, Ingress.. how to expose on LAN and external public IP?! VIIP? (HAProxy? seesaw?)
-
trim down installed packages - it shouldn't have (need)
pacman
or most ofbase
(IFF we canpacstrap
without?) -
make an AUR package of
kube-prepare.sh
,kube-init.sh
(but why? ask on IRC releng if any real interest) -
Security: installer partitions disk and puts
/bin
and/usr
etc. into SquashFS read-only filesystem, and mounts other BTRFS partitions withnoexec
flag -
Certify it? ;)
-
Flux https://toolkit.fluxcd.io/get-started/ (with Kustomize?)
-
Metrics: Node Agent, cAdvisor, Prometheus, Grafana
-
Logging?!
-
sshd
shell container with fixed image (pubkey from Cloud Init) sshd as systemd container https://docs.linuxserver.io/images/docker-openssh-server -
New containers can be started from within other containers Post or pre Kube? Pre, ideally. Declarative, not imperative! Use git repo pushed from within container to host, and actuated by systemd.path.
-
ISO can build containers from within containers #dogfood Using kaniko (not buildah)
-
Run container cached and distributed from IPFS cache, using https://github.com/miguelmota/ipdr.
-
Shell image name is read from DID (buildable by SCR)
-
Shell container can replace itself #dogfood #inception
-
kube auth
-
ISO has gVisor
-
Git server container: Initially simple/trivial, sshd with auth from cloud-init, like term, /data storage without IPFS yet, repo list configured in a YAML that is under Git itself, an "Operator" run by a Hook (or systemd.path?) actuates it (LATER ditto as Kube CRD); also see old idea.
-
Source Container Registry (SCR) which can build Images from Source.
-
Learn about Buildpacks, ArgoCD and TektonCD's Pipelines relationship?
-
CMS like buildback for doc container images, starting with a MD to HTML transformation of this file? ;) #dogfood Basically a native HTML "CMS" for static docs.
-
KISS static content shortcut, just a convention to have container images filled only with HTML (no web server
ENTRYPOINT
), plus aCNAME
file. Then adding 1 line toserving.yaml
, in some other Git repo, should suffice something (a "template operator"?) push that into IPFS (if it's not always already, as all container images will be?), and set up an ingress route to IPFS GW. -
Maven repository, implemented simply using above
-
Git web browser, implemented simply as static site generator, as above.
-
Generalize run image? Not just content, but any service, through some KISS shortcut, instead of YAML? (opt. from source, using SCR)
-
Serve our ISO using above #dogfood
-
Container Registry Proxy: Proxies to other registry/-ies, ; stateless. #performance #scalability
-
ISO has
ipfs
(systemd) (and/ipfs
&/ipns
?) -
Container Registry on IPFS, with IPDR?
-
Container proc can add content to nodes' IPFS Just forward daemon port into containers? Doc/demo.
-
Two ISO form an IPFS cluster together
-
Container proc can pin on node and in cluster
-
ipfs mount
FUSE/ipmfs
foripfs files
Mutable File System (MFS) #gap, see ipfs/roadmap#90. (One would expect this, and theipfs files
CLI, to have a way to support several "roots".) More like a JGitFS? -
Kubernetes Container Storage Interface (CSI) implementation on IPFS, idea also raised e.g. on https://discuss.ipfs.io/t/ipfs-as-a-storage-option-on-kubernetes/4506/2.
-
IPFS Cluster supports "standard" Pinning Service API Spec instead of it's own API and the node local only API
-
Federated Pin API dispatcher service allows pinning in cluster and externally e.g. on Piñata et al.
-
Backup WIP files by pinning to IPFS cluster running at some friends
-
Create
ipfs/go-ds-blkdev
IPFS datastore directly backed by a Linux/dev/
block device #performance #scale #efficiency. An alternative to https://github.com/ipfs?q=go-ds, notably the default https://github.com/ipfs/go-ds-flatfs implementation of https://github.com/ipfs/go-datastore. -
IPFS Git Remote Helper, AND a corresponding server gateway (
jgit
, see cookbook), like https://github.com/meyer1994/ipgit for ease of use. Either find a working one among the many attempts, or contribute to creating it on the most promising foundation. Note ipfs/roadmap#43, and e.g. https://github.com/ipfs-shipyard/git-remote-ipld and https://github.com/whyrusleeping/git-ipfs-rehost, or https://github.com/cryptix/git-remote-ipfs, or https://developer.aliyun.com/mirror/npm/package/git-remote-ipfs-mam or https://github.com/dhappy/git-remote-ipfs or https://hackage.haskell.org/package/git-remote-ipfs, but see https://github.com/martindbp/ipvc#why-not-just-use-git for RW as RO like https://docs.ipfs.io/how-to/host-git-style-repo is obviously dumb. Git Browse Web UI is out of scope, here. -
Encrypted IPFS blocks, as a separate overlay concept not baked into core, using DID. Until this is available, this entire project is only suitable for public open code and content that is on the public web. This would, eventually, make a lot of sense for https://identity.foundation/working-groups/secure-data-storage.html...
Self-sovereign identity with Decentralized Identifiers (DIDs).
-
did:ipfs:
Decentralized Identifier (DID) for IPFS Method Specification and Universal Resolver Driver. See https://identity.foundation, specifically https://identity.foundation/working-groups/identifiers-discovery.html and https://www.w3.org/TR/did-core/ -
Machine Identity is an IPFS DID. Either simply re-using IPFS PeerID, or have a separate key, but interlink them.
-
Shell container accepts anyone with a W3C DID, instead of requiring a pubkey from Cloud Init Works with any DID TBD from TBD, e.g. https://w3c-ccg.github.io/did-method-web/ or https://tools.ietf.org/html/draft-mayrhofer-did-dns-01 or https://github.com/decentralized-identity/github-did.
-
How to YubiKey <=> DID?
-
How to WebAuthn <=> DID?
-
Cloud Web Shell, as above, but using WebAuthn instead of YubiKey
-
Research how to do Permissions/Grants/Privileges right? Not just black/white true/false, but with an economic model, for initial use cases: Pinned permanent storage space, and right to spawn new containers.
-
Simple Kube Ingress tooling to serve IPFS content on custom DNS names, using https://docs.ipfs.io/how-to/address-ipfs-on-web or https://docs.ipfs.io/concepts/ipfs-gateway.
-
Classical DNS server which resolves to 🖧 LB IP of Kube Service on federated clusters.
-
ssh term.dev
(TBD) gives anyone having a public key on any DID a shell (with limits) -
abuse prevention for distributed shell, limit number of terms per DID, and rate limit per source IP? #DDOS #security
-
fully distributed decentralized builds
-
Be? #be #build
-
Issues can be managed decentralized through simple files, distributed by Git. Bi-di import/export to GitHub, using e.g. https://github.com/MichaelMure/git-bug/ uel al?
-
Roadmap (this) is auto synchronized with GitHub Issues & Projects #plan #doc Basically a tool to transform this kind of file into the file structure of the previous item, plus GitHub Projects support; add to
MichaelMure/git-bug
? -
Roadmap (this) has a Tag Word Cloud image #doc The
##
project name section headers are just tags as well. -
Automated weekly team status updates, pulled from systems like Git et al, pushed as text to a Git repo. E.g. https://github.com/psss/did or something like that.
- Messaging: Decentralized 📬 "Email" and IM. Perhaps https://identity.foundation/working-groups/did-comm.html?
-
Secure Boot, see https://wiki.archlinux.org/title/Unified_Extensible_Firmware_Interface/Secure_Boot with https://man.archlinux.org/man/systemd-stub.7 ?
-
selinux/apparmor? (cri-o supported)
- do not hard-code
8.8.8.8
for DNS anymore
-
PC Engines APU2, e.g. as (HAProxy? seesaw?) LB/router! See Arch Wiki, this bug and their cheap prices.
-
protoype custom ARM (and RISC V?) mini cluster boards, e.g. with Gumstix
-
figure out sustainable economic model to "give out" boards for free ;)
-
see also ipfs/roadmap#48
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.