In my career I've been spoiled with terrific devops coworkers who have generally handled everything from code to deploy. As a result, I feel I lack in expertise about devops that I should know as an engineer. Sideprojects of mine end up going on PaaS services like Heroku or Zeit and I don't really learn what it means to set up a server.
For instance, I could tell you that you likely have a load balancer (like nginx) which you can use to point routes to different services, and I know that services are going to be things like node instances running my code; but everything I know is fairly superficial and lacking in depth. What is the best way to share secrets? Is there a standard way of having your load balancer know what services to feed to? How does a load balancer that defines routes work with a rails or express instance that also defines routes? Should all my services be built on vagrant, or has docker made that less useful?
I've been having trouble filling in these gaps in deep understanding because it seems like every setup is different, so cribbing from convention is not really possible -- and then I read a litany of stories of setups that are wrong in some way and that feeds in to this paralysis of not wanting to do things wrong.
I tried setting up a Kubernetes cluster along with Deis, but there are so many layers of different/new services that I don't know how to conceptually tie those back to a broader understanding. For instance, K8s has a load balancer 'Ingress' -- does this negate the need for nginx? But then Deis installed its own load balancer so now I have two low balancers for zero services. It's just confusing because the big picture is obscured by the novelty of everyones setup.
Thank you in advance for your help.
I would recommend you start with minikube to run a cluster easily on your laptop. If you REALLY want to get nitty gritty you can try installing it from scratch, but I think that's overkill with all the tools available for setup.
read read read. try things. break things. k8s has a mountain of concepts and terminology to learn, so start with their docs.
To answer your questions:
Ingress is not a load balancer. It is basically a reverse-proxy into your cluster you can manage with manifests. It is paired with an ingress-controller which can be whatever you want, nginx.. traefik etc. The default k8s ingress is nginx under the covers.
Services are your load balancers. You can also use a service mesh like Linkerd for even more functionality.
Good luck!