Configuring Noteburst’s JupyterLab workers#

Noteburst works by operating a cluster of workers that each manages their own JupyterLab pods. This page describes how these workers are configured.

Background: Kubernetes architecture#

In Kubernetes, the workers are deployed as a Kubernetes Deployment. A Deployment enables multiple Noteburst worker instances to run at the same time. These workers share the same configuration (typically through a Kubernetes ConfigMap). This means that individual workers can’t be assigned specific RSP/JupyterLab user accounts. Noteburst works around this by configuring the deployment of Noteburst workers with a pool of identities. When a worker starts up, it picks an available identity from the pool and uses that identity to run the JupyterLab pod. See the next section for details.

Worker identities#

Each Noteburst worker pod runs a JupyterLab server under a specific, and unique, identity. These identities are bot accounts. In some RSP environments, such as the USDF, these identities need to be associated with actual user accounts.

When a Noteburst worker pod starts up, it picks an available identity from a pool of available identities. These identifies are configured in a file, that path of which is specified with NOTEBURST_WORKER_IDENTITIES_PATH. This file is a YAML-formatted file that looks like this:

identities.yaml#
- username: "bot-noteburst00"
- username: "bot-noteburst01"
- username: "bot-noteburst02"
- username: "bot-noteburst03"
- username: "bot-noteburst04"
- username: "bot-noteburst05"

The YAML file consists of a list of identities. At a minimum, an identity requires a username field.

In some environments where Gafaelfawr cannot provide a uid for a user, a uid must be specified:

identities.yaml#
- username: "bot-noteburst00"
  uid: 90000
- username: "bot-noteburst01"
  uid: 90001
- username: "bot-noteburst02"
  uid: 90002
- username: "bot-noteburst03"
  uid: 90003
- username: "bot-noteburst04"
  uid: 90004
- username: "bot-noteburst05"
  uid: 90005