毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。
0. はじめに
GitLabには、いくつかのJupyterに関連する機能があります。.ipynbのJupyterNotebookを表示(Jupyter Notebook Files)したり、
Kubernetesを連携したらJupyterHubを動かすJupyter Hub as a GitLab Managed Appがあります。
KuberbernetesをGitLabに連携するとJupyter HubのRunbookを実行できる機能もあります
そのJupyterHubではJupyter Git integrationでGitと連携できます。
DevOps runbooksをRubix/Nurtchによるライブラリで利用することができます。
以下の2回の記事でオンプレGitLabにKubernetesであるMicroK8sを接続しましたので、そのKubernetes上でJupyterHubを動かしてみます。
オンプレGitLabにMicroK8s接続してGitLabのAuto DevOpsを体験する(前半) - Qiita
https://qiita.com/ynott/items/f3651e9f3d46b1f088ee
オンプレGitLabにMicroK8s接続してGitLabのAuto DevOpsを体験する(後半) - Qiita
https://qiita.com/ynott/items/46d4b2926afec0d788f2
1. JupyterHubを動かす
GitLabをKubernetes連携してあれば、インストールは簡単です。
Kubernetes連携」から「該当クラスター」をクリックして、アプリケーションをクリックして
JupyterHub
でインストールボタンを押します。以下はインストール途中の画面です。
インストールできると以下のようになります。
インストールには約4分~5分程度かかります。
$ kubectl get all -n gitlab-managed-apps
NAME READY STATUS RESTARTS AGE
pod/ingress-nginx-ingress-default-backend-c9b59c85-vvm9f 1/1 Running 0 17m
pod/ingress-nginx-ingress-controller-75686bdf76-gcqdr 2/2 Running 0 17m
pod/continuous-image-puller-99vtb 1/1 Running 0 5m6s
pod/proxy-949ff9478-rv7qq 1/1 Running 0 5m6s
pod/user-scheduler-d6bd9d4dc-bvgjk 1/1 Running 0 5m6s
pod/user-scheduler-d6bd9d4dc-4tmw9 1/1 Running 0 5m6s
pod/hub-5f64bf79bf-g699m 1/1 Running 0 5m6s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/ingress-nginx-ingress-default-backend ClusterIP 10.152.183.240 <none> 80/TCP 17m
service/ingress-nginx-ingress-controller LoadBalancer 10.152.183.45 192.168.10.30 80:31012/TCP,443:31903/TCP 17m
service/proxy-public ClusterIP 10.152.183.143 <none> 443/TCP,80/TCP 5m7s
service/hub ClusterIP 10.152.183.167 <none> 8081/TCP 5m7s
service/proxy-api ClusterIP 10.152.183.64 <none> 8001/TCP 5m7s
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/continuous-image-puller 1 1 1 1 1 <none> 5m6s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/ingress-nginx-ingress-default-backend 1/1 1 1 17m
deployment.apps/ingress-nginx-ingress-controller 1/1 1 1 17m
deployment.apps/proxy 1/1 1 1 5m6s
deployment.apps/user-scheduler 2/2 2 2 5m6s
deployment.apps/hub 1/1 1 1 5m6s
NAME DESIRED CURRENT READY AGE
replicaset.apps/ingress-nginx-ingress-default-backend-c9b59c85 1 1 1 17m
replicaset.apps/ingress-nginx-ingress-controller-75686bdf76 1 1 1 17m
replicaset.apps/proxy-949ff9478 1 1 1 5m6s
replicaset.apps/user-scheduler-d6bd9d4dc 2 2 2 5m6s
replicaset.apps/hub-5f64bf79bf 1 1 1 5m6s
NAME READY AGE
statefulset.apps/user-placeholder 0/0 5m6s
2. JupyterHubを開いて動作確認
JupyterHubに接続するには、Jupyter のホスト名
の下のJupyter.hogehoge.nip.io
をブラウザーで開きます。
以下のSign in with GitLab
が出てくるのでクリックします。
GitLabへログインしていなければ、ログイン画面が出てくるのでログインします。
(GitLabへログインしている場合は、すぐに以下のページに切り替わります)
最初のみJupyterへの接続確認が行われます。Authorize
をクリックします。
以下のようなログ画面が出て、
JupyterHubが起動します。
3. RunBookを開く
左ペインのDevOps-Runbook-Demo
をクリックしてNurtch-DevOps-Demo.ipynb
をクリックして開きます。
RunBookのデモを体験できます。
実際に動かしているデモ画像がYoutubeにありますので、参考にしてみてください。
4. Gitリポジトリーを開く
ここでデプロイされたJupyterHubは、Git連携できるようになっているのでGitリポジトリーをJupyterHubで開いて
変更があればそれをGitリポジトリーにPushし直すことも出来ます。
こちらもDemoがYoutubeにあります。
GitLab repository integration for JupyterHub - Demo - YouTube
https://www.youtube.com/watch?v=ruhCdixHMQI
GitLab Managed Apps | GitLab
https://docs.gitlab.com/ee/user/clusters/applications.html#jupyter-git-integration
5. まとめ
これから一層Jupyterは利用が進むと思います。これは、AIのような分野のみならずRunBookのようなサーバーメンテナンスをするのに
便利なプラットフォームとして利用されていくでしょう。
RunBookは、CUIターミナルでのサーバー操作と自動化したCI/CDでのサーバー操作の中間のような操作感です。
もっと利用が増えればいいなと思います。