Example deployment on AWS EKS

I wanted to share an example deployment of JupyterHub on AWS EKS.

It is structured as a CDK app in Python, and includes:

  • An example of a custom Docker image
  • A “shared” directory to which all users have access
  • Two user profiles with different resource limits/guarantees
  • A cluster that automatically scales from 1-10 nodes

It uses EFS with the efs-csi-driver addon for persistent storage. It uses the latest helm chart version as of this writing – v3.0.3.

After installing the dependencies, launching a working JupyterHub environment (and deploying subsequent configuration changes) is as simple as running:

cdk deploy

I hope this repo serves as a nice starting point for anyone looking to deploy JupyterHub on AWS. If you see any opportunities to improve it, please let me know!


Love what you put together here. I am running into issues getting Jhub load balancer to be internet facing. For some reason it is defaulting to a network load balancer internal only on every deploy. Any ideas about why this might be happening?

@mindcycle in my experiments the LB was always internet facing.

Are you deploying to a pre-existing VPC? If so, it’s possible your subnet configuration is preventing a public load balancer from being created.

The relevant portion of the JH helm chart config would be the proxy settings. Configuration Reference — Zero to JupyterHub with Kubernetes documentation

Let me know if you do find an issue in my example and I’ll be sure to update it for others.

1 Like