2 KiB
Problem make available lots of open source packages. end-user doesn't have to know about how to do any of these things (install software, resilient storage, etc) scale to 10k-1m users
we've made some choices: NixOS, s3 storage, stateless as much as possible
we need something that starts services, monitors the services, restarts, spins up extra nodes, etc.
constraint: everything is "real" open-source
"consider kubernetes?"
kubernetes
kubernetes fits need some extra tools and glueing for making this available to the users
tooling is 90% there
tool recommendations to come
like docker-compose but in the cloud
reconcilliation loop: you specify a state "i want 2 instances of X at Y domain name" kubernetes takes care of everything
applications slot into the reconcilliation loop to enforce the part of the state they manage
most things already exist (DNS, networking, etc)
master/worker: master is the machine that holds state. this is usually managed by the cloud provider
there might be UIs similar to NixPanel already existing for kubernetes
k3s vs. k8s k8s: kubernetes k3s: kubernetes but slimed down for playing around at home
alternatives nomad, but konstantinos does not have experience with it
complexity it's easy to stay limited to a smaller subset
we don't want to introduce pre-existing components that bring along their own baggage (e.g. "matrix instance, but it's on alpine")
why not? unite things under one tool; can make small changes without breaking everything;
containerization the pre-existing components are all running under docker containers can override with a different container
things that might be easier with nix configuration rolling updates integrate with the outside world manage storage
network configurations internally ipv4? address space between nodes public IPs namespaces
Kubernetes has the advantage of being familiar to people
disadvantage is that it integrates into existing cloud providers (we want to move people away from google/amazon cloud)