From 27f46c609aba0b5298c742f13a97ab34afc07bed Mon Sep 17 00:00:00 2001 From: Chris Holdgraf Date: Mon, 5 Feb 2018 17:31:13 -0800 Subject: [PATCH] adding diagram for jupyterhub --- doc/source/_static/images/architecture.png | Bin 0 -> 52674 bytes doc/source/architecture.rst | 13 +++++++++++++ doc/source/index.rst | 1 + 3 files changed, 14 insertions(+) create mode 100644 doc/source/_static/images/architecture.png create mode 100644 doc/source/architecture.rst diff --git a/doc/source/_static/images/architecture.png b/doc/source/_static/images/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..dbf415d07639aab4c0aaffdaaae8f8b272daf513 GIT binary patch literal 52674 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 z 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 G#Qy=eSnzoO literal 0 HcmV?d00001 diff --git a/doc/source/architecture.rst b/doc/source/architecture.rst new file mode 100644 index 0000000000..f74ba363ae --- /dev/null +++ b/doc/source/architecture.rst @@ -0,0 +1,13 @@ +The JupyterHub Architecture +=========================== + +The JupyterHub Helm Chart manages resources in the cloud using Kubernetes. +There are several moving pieces that, together, handle authenticating users, +pulling a Docker image specified by the administrator, generating the user +pods in which users will work, and connecting users with those pods. + +The following diagram gives a high-level overview of the many pieces of +JupyterHub, and how they fit together in this process: + +.. image:: _static/images/architecture.png + :align: center diff --git a/doc/source/index.rst b/doc/source/index.rst index bdbc210fbc..c0563a9e5f 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -71,6 +71,7 @@ cloud-based deployments and tips for maintaining your deployment. :maxdepth: 2 :caption: Administrator Guide + architecture debug authentication optimization