diff --git a/k8s/jupyter/Dockerfile b/k8s/jupyter/Dockerfile
new file mode 100644
index 00000000..c9aba0fd
--- /dev/null
+++ b/k8s/jupyter/Dockerfile
@@ -0,0 +1,9 @@
+ARG BASE_CONTAINER=jupyter/datascience-notebook
+
+FROM $BASE_CONTAINER
+
+ADD requirements.txt /
+
+RUN pip install jupyter-client --upgrade
+
+RUN pip install -r /requirements.txt
diff --git a/k8s/jupyter/config.yaml b/k8s/jupyter/config.yaml
new file mode 100644
index 00000000..aadd17d4
--- /dev/null
+++ b/k8s/jupyter/config.yaml
@@ -0,0 +1,17 @@
+proxy:
+  secretToken: 39f9a0b3f7cb7110e82369a5932a2d875241aaf6bb833b5d96f4d8b3ce22cd05
+
+singleuser:
+  image:
+    # Get the latest image tag at:
+    # https://hub.docker.com/r/jupyter/datascience-notebook/tags/
+    # Inspect the Dockerfile at:
+    # https://github.com/jupyter/docker-stacks/tree/master/datascience-notebook/Dockerfile
+    name: nonsens3/testground-jupyter-base
+    tag: latest
+  memory:
+    limit: 2G
+    guarantee: 2G
+  cpu:
+    limit: 2
+    guarantee: 2
diff --git a/k8s/jupyter/notes b/k8s/jupyter/notes
new file mode 100644
index 00000000..e03a1d1e
--- /dev/null
+++ b/k8s/jupyter/notes
@@ -0,0 +1,7 @@
+RELEASE=jhub
+NAMESPACE=jhub
+
+helm upgrade --install $RELEASE jupyterhub/jupyterhub \
+  --namespace $NAMESPACE  \
+  --version=0.8.2 \
+  --values config.yaml
diff --git a/k8s/jupyter/requirements.txt b/k8s/jupyter/requirements.txt
new file mode 100644
index 00000000..1b1cd30c
--- /dev/null
+++ b/k8s/jupyter/requirements.txt
@@ -0,0 +1,16 @@
+toml
+jinja2
+ndjson
+pandas
+numpy
+matplotlib
+jupyter
+ipywidgets
+bunch
+stringcase
+papermill
+jupyter-ui-poll
+jupyter_contrib_nbextensions
+durations
+seaborn
+ipywidgets