This project will deploy a Jupyterhub with scalable compute nodes (for distributed computing) on 3 cloud platforms using AWS EKS, Azure Kubernetes Service (AKS) and Google Kubernetes Engine (GKE). There are several learning objectives for this project:
- Learn how create replicable and reusable templates for deployment of cloud services using Infrastructure-as-Code (IaC), namely Terraform
- Understand how to use Kubernetes for container orchestration and scaling of microservices
- Understand how to deploy scalable Jupyterhubs (i.e. Jupyterhubs as a service, Jupyterhub for Classroom)
- Understand best practices on Jupyterhub deployments including steps on SSO/OAuth, cost optimization, security, networking, and other node scaling mechanisms
AKS TF template for UO's deployment
This sets up the networking, AKS, and Azure AD app for authentication but all the variables that make it work are left out since we keep those in a vault till runtime (there are keys in there and whatnot). There is additional custimization to the containers and helm config we do that is class specific but at the very least this should give an idea what our core deployment looks like.
Chris Blanton; Matthew Brookover; John Cox; Casey Dinsmore; Kraig Eisenman; Jacob Fosso Tande; Sarah Knickerbocker; David Luong; Amanda Tan
This project was created as part of the Internet2 CLASS Advanced program and supported with credits from AWS, GCP, and Azure.