BinderHub on one server machine using `microk8s`: load balancer setup for one public IP

Hi there

I have a managed server somewhere with one public IP address: let’s call that address x.

I’ve tried to configure BinderHub according to 3. Set up BinderHub — BinderHub 0.1.0 documentation. I’ve enabled metallb (I believe I have to do this, don’t I? It doesn’t say anywhere in the documentation but I’ve found something along the lines on gitter) and configured it to use the IP address “range” (x-x).

After doing that proxy-public is unsurprisingly given the IP address x, however binder is still stuck at pending. I imagine this is because there is only one IP address available and there had been kind of a race for it between the two which proxy-public won?

But how is this setup supposed to work with microk8s? Isn’t it a quite typical use case to have only one IP address within microk8s?

Needless to say, I’m quite new to all of this, so I probably got it very wrong.

Thanks for your help,
Damian

Oh, and I forgot to say when I navigate to x with my browser I see the jupyterhub page throwing some error when in fact I was hoping to be shown binderhub first.

Since JupyterHub/BinderHub are web services you can use a Kubernetes Ingress instead of a LoadBalancer. You’ll need to make sure you’ve got an ingress controller running (see the Microk8s or other Kubernetes docs).
https://binderhub.readthedocs.io/en/latest/https.html#adjust-binderhub-config-to-serve-via-https
Is an example of setting up an ingress with HTTPS, though I don’t know if that’s up to date. I think you’ll need to setup some DNS/hostnames for your cluster to get the ingress to work, and you can ignore the HTTPS bits and just use HTTP,