4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Kubernetes上にhelmでJupyterHubをデプロイする

Last updated at Posted at 2020-04-14

マルチユーザなJupyter環境を実現するJupyterHubをデプロイしてみます。
helm3を使用します。
https://zero-to-jupyterhub.readthedocs.io/en/latest/

※kindで構築したクラスタで検証した内容になります。
ワイルドカードDNSを用いてアクセスできるようにするためこちらの記事を参考に事前設定をしています。
必要に応じて作業をしてください。
https://qiita.com/tar_xzvf/items/666ee87d8b84d2937e43

0. 事前準備

※こちらの記事で紹介しているクラスタを作成することで事前準備をすることができます。
https://qiita.com/tar_xzvf/items/666ee87d8b84d2937e43

  • worker nodeが1つ以上あるKubernetesクラスタを作成
  • ingressが使える状態

1. config.yamlファイルを作成する

必要最低限の設定をします。

※ secretToken には openssl rand -hex 32 を実行して得られた値を入れます。

config.yaml
proxy:
  secretToken: "<secretTokenを入力>"
singleuser:
  storage:
    capacity: 2Gi
ingress:
  enabled: true
  hosts:
    - hub.<IPアドレス>.nip.io

2. デプロイする

helm repo add jupyterhub https://jupyterhub.github.io/helm-chart/
helm repo update
kubectl create ns jhub
helm upgrade --install jhub jupyterhub/jupyterhub --namespace jhub --version=0.8.2 --values ./config.yaml

3. JupyterHubにログインし、Jupyter notebookを起動する

http:/hub.IPアドレス.nip.io にアクセスすることでJupyterHubのログインページが表示されることを確認します。

jupyterhub.png

適当なUsername/Passwordを入力します。
今回はhubをそれぞれに入力しSing Inをクリックします。
jupyterhub2.png

ログイン後、Jupyter notebookが起動しはじめます。
jupyterhub5.png

起動しました。
jupyterhub4.png

その他

Zero to JupyterHubでは様々な設定をすることができます。
個人的に設定を推奨する項目について以下で紹介します。

認証について

様々な認証方法を利用することができます。
中にはOAuthに対応したIdpを利用することができ、Githubの認証情報でログインすることができるようになります。
ケースに応じて適切な認証方法を設定されることをお勧めします。
https://jupyterhub.readthedocs.io/en/stable/reference/authenticators.html
https://zero-to-jupyterhub.readthedocs.io/en/latest/administrator/authentication.html#github

私の場合はKeycloakを利用しています。
JupyterHubとKeycloakの連携については後日別の記事で紹介する予定です。

デフォルトの挙動について、認証を何も設定していない場合は適当なUsername/Passwordを入力するだけで利用できてしまいます。
※この挙動が正しいのか分かりません...
余談ですが、JupyterHubをk8sではなく普通のサーバの上で直に動かした場合は、PAM認証になるためUnixユーザの認証情報でログインできます。

DBの設定について

デフォルトでは、SQLiteが使用されます。
本番運用する際にはPostgreSQLをお勧めします。
https://jupyterhub.readthedocs.io/en/stable/reference/database.html

helmでの設定はこちらになります。
https://zero-to-jupyterhub.readthedocs.io/en/latest/reference/reference.html#hub-db

hub:
  db:
    type: postgres
    url: postgresql://<db-username>:<db-password>@<db-hostname>:<db-port>/<db-name>

JupyterLabが起動時に表示されるようにする

デフォルトでは、Jupyter notebookが起動します。
JupyterLabを起動したい場合は以下の設定をします。

hub:
  extraConfig:
    myConfig: |
      c.KubeSpawner.default_url = '/lab'

今回の設定を全部入れた場合の設定ファイル

config.yaml
proxy:
  secretToken: "<secretTokenを入力>"
singleuser:
  storage:
    capacity: 2Gi
hub:
  db:
    type: postgres
    url: postgresql://<db-username>:<db-password>@<db-hostname>:<db-port>/<db-name>
  extraConfig:
    myConfig: |
      c.KubeSpawner.default_url = '/lab'
ingress:
  enabled: true
  hosts:
    - hub.<IPアドレス>.nip.io

JupyterHubには様々な設定項目があるため、また別の機会に便利な設定や機能を紹介したいと思います。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?