forked from fediversity/meta
		
	
		
			
				
	
	
		
			66 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
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)
 |