notebooks/components/notebook-controller
Mathew Wicks e9bbe43418 Add thesuperzapper to notebook OWNERS (kubeflow/kubeflow#5363) 2020-10-27 08:24:00 -07:00
..
api Add Notebook Controller v1 spec (kubeflow/kubeflow#4649) 2020-01-13 19:43:08 -08:00
config Add Notebook Controller v1 spec (kubeflow/kubeflow#4649) 2020-01-13 19:43:08 -08:00
controllers notebook_controller.go: make clusterDomain an option (kubeflow/kubeflow#4468) 2020-07-03 19:42:48 -07:00
hack Migrate notebook CR to kubebuilder V2 (kubeflow/kubeflow#4013) 2019-09-04 17:06:22 -07:00
loadtest add loadtest for notebook controller (kubeflow/kubeflow#4779) 2020-02-18 21:00:25 -08:00
pkg initial checkin of tensorboard controller (kubeflow/kubeflow#4312) 2019-10-29 09:12:44 -07:00
third_party Add licensing info for Notebook Controller (kubeflow/kubeflow#4623) 2020-01-06 23:20:17 -08:00
.gitignore Culling of Idle Jupyter Notebooks (kubeflow/kubeflow#3856) 2019-08-26 04:40:21 -07:00
Dockerfile Fix docker builds of notebook and tensorboard controller (kubeflow/kubeflow#4664) 2020-01-21 17:54:34 -08:00
Makefile Fix docker builds of notebook and tensorboard controller (kubeflow/kubeflow#4664) 2020-01-21 17:54:34 -08:00
OWNERS Add thesuperzapper to notebook OWNERS (kubeflow/kubeflow#5363) 2020-10-27 08:24:00 -07:00
PROJECT Add Notebook Controller v1 spec (kubeflow/kubeflow#4649) 2020-01-13 19:43:08 -08:00
README.md Adding env var to suppress automatic additon of fsGroup in notebook pod (kubeflow/kubeflow#4713) (kubeflow/kubeflow#4782) 2020-02-19 09:08:25 -08:00
developer_guide.md Fix docker builds of notebook and tensorboard controller (kubeflow/kubeflow#4664) 2020-01-21 17:54:34 -08:00
go.mod Fix notebook controller and tensorboard controller docker image build. (kubeflow/kubeflow#4631) 2020-01-07 16:25:41 -08:00
go.sum Fix notebook controller and tensorboard controller docker image build. (kubeflow/kubeflow#4631) 2020-01-07 16:25:41 -08:00
main.go Add Notebook Controller v1 spec (kubeflow/kubeflow#4649) 2020-01-13 19:43:08 -08:00
skaffold.yaml Fix docker builds of notebook and tensorboard controller (kubeflow/kubeflow#4664) 2020-01-21 17:54:34 -08:00

README.md

Notebook Controller

The controller allows users to create a custom resource "Notebook" (jupyter notebook). We originally wrote the controller using jsonnet and metacontroller, but are migrating to golang and Kubebuilder here. See discussion.

Spec

The user needs to specify the PodSpec for the jupyter notebook. For example:

apiVersion: kubeflow.org/v1alpha1
kind: Notebook
metadata:
  name: my-notebook
  namespace: test
spec:
  template:
    spec:  # Your PodSpec here
      containers:
      - image: gcr.io/kubeflow-images-public/tensorflow-1.10.1-notebook-cpu:v0.3.0
        args: ["start.sh", "lab", "--LabApp.token=''", "--LabApp.allow_remote_access='True'",
               "--LabApp.allow_root='True'", "--LabApp.ip='*'",
               "--LabApp.base_url=/test/my-notebook/",
               "--port=8888", "--no-browser"]
        name: notebook
      ...

The required fields are containers[0].image and (containers[0].command and/or containers[0].args). That is, the user should specify what and how to run.

All other fields will be filled in with default value if not specified.

Environment parameters

ADD_FSGROUP: If the value is true or unset, fsGroup: 100 will be included in the pod's security context. If this value is present and set to false, it will suppress the automatic addition of fsGroup: 100 to the security context of the pod.

Implementation detail

This part is WIP as we are still developing.

Under the hood, the controller creates a StatefulSet to run the notebook instance, and a Service for it.

TODO

  • e2e test (we have one testing the jsonnet-metacontroller one, we should make it run on this one)
  • status field should reflect the error if there is any. See #2269.
  • Istio integration (controller will generate istio resources to secure each user's notebook)
  • CRD validation
  • ttlSecondsAfterFinished: This is in the original jsonnet controller spec, but not being used yet. I think we want to cleanup the notebook after idle?