Skip to content

Commit

Permalink
Add tutorial on how to deploy JupyterHub (#453)
Browse files Browse the repository at this point in the history
* add ce to the team, add tutorial for jupyterhub

* fix post reviews

---------

Charles-Edouard
  • Loading branch information
baalooos authored Jul 19, 2024
1 parent 8c85ac2 commit baf37c6
Show file tree
Hide file tree
Showing 6 changed files with 297 additions and 1 deletion.
12 changes: 11 additions & 1 deletion .meta/team.toml
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,14 @@ keybase = "https://keybase.io/acarranoqovery"
name = "Alessandro Carrano"
bio = """\
Alessandro is a Lead Product Manager at <a href=\"https://www.qovery.com\">Qovery</a>.\
"""
"""

[[team]]
id = "cegagnaire"
avatar = "https://github.com/baalooos.png"
github = "https://github.com/baalooos"
keybase = "https://keybase.io/baalooos"
name = "Charles-Edouard Gagnaire"
bio = """\
Charles-Edouard is Technical Account Manager at <a href=\"https://www.qovery.com\">Qovery</a>.\
"""
141 changes: 141 additions & 0 deletions website/guides/tutorial/deploy-jupyterhub-qovery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
---
last_modified_on: "2024-07-19"
$schema: "/.meta/.schemas/guides.json"
title: Deploy JupyterHub using Helm
description: How to deploy JupyterHub on Qovery using the official Helm chart.
author_github: https://github.com/baalooos
tags: ["type: tutorial", "technology: qovery"]
hide_pagination: true
---

import Steps from '@site/src/components/Steps';
import Assumptions from '@site/src/components/Assumptions';

JupyterHub is an easy way to interact with a computing environment through a webpage. It provides a standardized way to serve Jupyter Notebooks for multiple users. Pairing it with Kubernetes and Qovery makes it easier to manage and scale.

<Assumptions name="guide">

- You have a Qovery cluster ready
- You have a dedicated Qovery project and environment to deploy JupyterHub (example: Project=JupyterHub, Environment=Production)

</Assumptions>

<!--
THIS FILE IS AUTOGENERATED!
To make changes please edit the template located at:
website/guides/tutorial/deploy-jupyterhub-qovery.md.erb
-->

## Installation

The easiest way to deploy JupyterHub is using the official [Helm Chart](https://github.com/jupyterhub/helm-chart). It will create all the resources you need to run JupyterHub.

For more information, the official documentation is available [here](https://z2jh.jupyter.org/en/stable/jupyterhub/installation.html).

<Steps headingDepth={3}>

<ol>

<li>

#### Add the JupyterHub helm repository

Add the JupyterHub helm repository in your Qovery settings by following [this documentation][docs.using-qovery.configuration.organization.helm-repository]

* Repository name: `JupyterHub`
* Kind: `HTTPS`
* Repository URL: `https://hub.jupyter.org/helm-chart/`

</li>

<li>

#### Create the JupyterHub service within Qovery

Create the JupyterHub service in the Qovery environment of your choice (preferably within a dedicated JupyterHub project) by following [this documentation][docs.using-qovery.configuration.helm] and these values:

* General:
* Application name: `JupyterHub`
* Source:
* Helm source: `Helm repository`
* Repository: `JupyterHub` (the name given during the JupyterHub helm repository added in the previous step)
* Chart name: `jupyterhub`
* Version: `3.3.7` (this is the version we used for this setup, update it based on the chosen version)
* Allow cluster-wide resources :heavy_check_mark:
* Values
* Values override as file:
* File source: `Raw YAML`
* Raw YAML:

```yaml
fullnameOverride: "jupyterhub"
proxy:
service:
type: ClusterIP
```
There are many other values you can set to modify the JupyterHub behavior. For advanced usage, check: [JupyterHub Customization](https://z2jh.jupyter.org/en/stable/jupyterhub/customization.html)
Now get to the last step and `Create` the service on Qovery.

</li>

<li>

#### Add Network configuration

In the previous step, we created the JupyterHub service. In this step, we will update its configuration to make it available on the public network (through Qovery Nginx Ingress).

* Open the JupyterHub service details
* Enter the `Settings` section
* Click on `Networking`
* Add a new Port with:
* Service name: jupyterhub-proxy-public
* Service port: 80
* Select protocol: HTTP
* External port: 443
* Port name: jupyterhub-proxy-public-p80

If you need more information on how to manage your ports, have a look at [this](https://hub.qovery.com/docs/using-qovery/configuration/application/#ports)

</li>

<li>

#### Deploy your chart

Open the `Play` button and trigger the deployment of your chart.

<p align="center">
<img src="/img/deploy-jupyterhub-qovery/deploy.png" alt="JupyterHub - Deploy" />
</p>

</li>

<li>

#### Access JupyterHub

You can click the `Link` button to access JupyterHub on your cluster.

<p align="center">
<img src="/img/deploy-jupyterhub-qovery/link.png" alt="JupyterHub - Link" />
</p>

Now you can login to the webUI and start playing with Jupyter Notebooks.

</li>

</ol>

</Steps>

## Conclusion

JupyterHub is running on your Qovery cluster. This is a simple installation and you should try to [customize](https://z2jh.jupyter.org/en/stable/jupyterhub/customization.html) it according to your needs. You can also check the[Adminstrator Guide](https://z2jh.jupyter.org/en/stable/administrator/index.html)to better understand how it works.


[docs.using-qovery.configuration.helm]: /docs/using-qovery/configuration/helm/
[docs.using-qovery.configuration.organization.helm-repository]: /docs/using-qovery/configuration/organization/helm-repository/
128 changes: 128 additions & 0 deletions website/guides/tutorial/deploy-jupyterhub-qovery.md.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
---
$schema: "/.meta/.schemas/guides.json"
title: Deploy JupyterHub using Helm
description: How to deploy JupyterHub on Qovery using the official Helm chart.
author_github: https://github.com/baalooos
tags: ["type: tutorial", "technology: qovery"]
hide_pagination: true
---

import Steps from '@site/src/components/Steps';
import Assumptions from '@site/src/components/Assumptions';

JupyterHub is an easy way to interact with a computing environment through a webpage. It provides a standardized way to serve Jupyter Notebooks for multiple users. Pairing it with Kubernetes and Qovery makes it easier to manage and scale.

<Assumptions name="guide">

- You have a Qovery cluster ready
- You have a dedicated Qovery project and environment to deploy JupyterHub (example: Project=JupyterHub, Environment=Production)

</Assumptions>

## Installation

The easiest way to deploy JupyterHub is using the official [Helm Chart](https://github.com/jupyterhub/helm-chart). It will create all the resources you need to run JupyterHub.

For more information, the official documentation is available [here](https://z2jh.jupyter.org/en/stable/jupyterhub/installation.html).

<Steps headingDepth={3}>

<ol>

<li>

#### Add the JupyterHub helm repository

Add the JupyterHub helm repository in your Qovery settings by following [this documentation][docs.using-qovery.configuration.organization.helm-repository]

* Repository name: `JupyterHub`
* Kind: `HTTPS`
* Repository URL: `https://hub.jupyter.org/helm-chart/`

</li>

<li>

#### Create the JupyterHub service within Qovery

Create the JupyterHub service in the Qovery environment of your choice (preferably within a dedicated JupyterHub project) by following [this documentation][docs.using-qovery.configuration.helm] and these values:

* General:
* Application name: `JupyterHub`
* Source:
* Helm source: `Helm repository`
* Repository: `JupyterHub` (the name given during the JupyterHub helm repository added in the previous step)
* Chart name: `jupyterhub`
* Version: `3.3.7` (this is the version we used for this setup, update it based on the chosen version)
* Allow cluster-wide resources :heavy_check_mark:
* Values
* Values override as file:
* File source: `Raw YAML`
* Raw YAML:

```yaml
fullnameOverride: "jupyterhub"
proxy:
service:
type: ClusterIP
```

There are many other values you can set to modify the JupyterHub behavior. For advanced usage, check: [JupyterHub Customization](https://z2jh.jupyter.org/en/stable/jupyterhub/customization.html)

Now get to the last step and `Create` the service on Qovery.

</li>

<li>

#### Add Network configuration

In the previous step, we created the JupyterHub service. In this step, we will update its configuration to make it available on the public network (through Qovery Nginx Ingress).

* Open the JupyterHub service details
* Enter the `Settings` section
* Click on `Networking`
* Add a new Port with:
* Service name: jupyterhub-proxy-public
* Service port: 80
* Select protocol: HTTP
* External port: 443
* Port name: jupyterhub-proxy-public-p80

If you need more information on how to manage your ports, have a look at [this](https://hub.qovery.com/docs/using-qovery/configuration/application/#ports)

</li>

<li>

#### Deploy your chart

Open the `Play` button and trigger the deployment of your chart.

<p align="center">
<img src="/img/deploy-jupyterhub-qovery/deploy.png" alt="JupyterHub - Deploy" />
</p>

</li>

<li>

#### Access JupyterHub

You can click the `Link` button to access JupyterHub on your cluster.

<p align="center">
<img src="/img/deploy-jupyterhub-qovery/link.png" alt="JupyterHub - Link" />
</p>

Now you can login to the webUI and start playing with Jupyter Notebooks.

</li>

</ol>

</Steps>

## Conclusion

JupyterHub is running on your Qovery cluster. This is a simple installation and you should try to [customize](https://z2jh.jupyter.org/en/stable/jupyterhub/customization.html) it according to your needs. You can also check the[Adminstrator Guide](https://z2jh.jupyter.org/en/stable/administrator/index.html)to better understand how it works.
17 changes: 17 additions & 0 deletions website/metadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,15 @@ module.exports = {
"series_position": null,
"title": "Customizing Preview URL with Qovery CLI"
},
{
"author_github": "https://github.com/baalooos",
"description": null,
"id": "/tutorial/deploy-jupyterhub-qovery",
"last_modified_on": null,
"path": "website/guides/tutorial/deploy-jupyterhub-qovery.md",
"series_position": null,
"title": "Deploy JupyterHub using Helm"
},
{
"author_github": "https://github.com/l0ck3",
"description": null,
Expand Down Expand Up @@ -952,6 +961,14 @@ module.exports = {
"id": "acarranoqovery",
"keybase": "https://keybase.io/acarranoqovery",
"name": "Alessandro Carrano"
},
{
"avatar": "https://github.com/baalooos.png",
"bio": "Charles-Edouard is Technical Account Manager at <a href=\"https://www.qovery.com\">Qovery</a>.",
"github": "https://github.com/baalooos",
"id": "cegagnaire",
"keybase": "https://keybase.io/baalooos",
"name": "Charles-Edouard Gagnaire"
}
],
"technologies": [
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit baf37c6

Please sign in to comment.