Workspaces¶
A Workspace is the primary custom resource in Jupyter K8s. It represents a single compute environment — a pod with dedicated storage and possibly a unique URL.
A workspace maps 1:1 to a Kubernetes deployment with a single replica. When you create a Workspace resource, the controller provisions:
A Deployment running your application image
A PersistentVolumeClaim for durable storage
A Service exposing the application port
Optionally, Routing resources (e.g. IngressRoutes) connecting the workspace to the cluster’s reverse proxy
Minimal example¶
apiVersion: workspace.jupyter.org/v1alpha1
kind: Workspace
metadata:
name: alice-workspace
namespace: team-alice
spec:
displayName: Alice Notebook
image: <your-repo>/<your-image>:<your-tag>
If a workspace.spec references a WorkspaceTemplate, the controller fills in defaults (storage size, mount path, access strategy) that the workspace.spec omitted.
Key fields¶
Field |
Purpose |
|---|---|
|
Application image to run |
|
CPU/memory requests and limits |
|
Persistent volume size and mount path in the application container |
|
Reference to a WorkspaceAccessStrategy for routing configuration |
|
Reference to a WorkspaceTemplate for defaults and bounds |
|
|
|
|
|
|
Lifecycle states¶
The workspace reports its state via standard Kubernetes conditions:
Available — pod is running and access probe has passed
Progressing — resources are being created or updated
Degraded — the workspace failed to reach its desired state
Stopped — no pod running, storage persisted