Skip to content


This is a reference design and implementation of an environment template to provision self service developer environments running JupyterHub. This reference design is based on Rafay's Kubernetes Manager and Environment Manager.

Source Code for Template

The Terraform source code and related assets are available in a public Git repo as shown below

Git Repo

Design & Architecture

This design will create a self service JupyterHub instance that will be assigned to the developer.


Initial Setup

The platform team is expected to provision a Kubernetes cluster in a Rafay project that will be used by this reference design to install JupyterHub onto.

    participant plat as Platform Team 
    participant rafay as Environment Manager 
    participant idp as Identity Provider 

    plat->>rafay: Setup Environment Template
    rafay->>idp: Integrate Env Manager <br> with Corporate IdP  
    rafay-->>plat: Setup Complete 

Request for Environment

When a developer makes a request for JupyterHub via self service, a series of automated workflows need to be performed to fulfil this request. The sequence diagram below describes the high level steps.


Although the recommended workflow assumes and recommends using an Integration with an Identity Provider (IdP) to provide a Single Sign On (SSO) experience, organizations can also use locally managed users.

    participant dev as Developer
    participant rafay as Rafay
    participant csp as Host <br> Cluster
    participant idp as Identity Provider 

    dev->>rafay: Request new JupyterHub <br> Instance
    rafay->>csp: Create new JupyterHub Instance
    rafay->>dev: Environment Ready
    dev-->>rafay: Access/Use JupyterHub 


  • You have an existing managed kubernetes cluster with a load balancer in Rafay Kubernetes Manager
  • You have access to a Mac or Linux machine
  • You have a Git client on your machine that is setup for push/pull
  • You have Docker installed on your machine