Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

インタラクティブな作業環境を作成する

インタラクティブな作業環境をクラスタ上に作成するにはワークスペース機能を使用します。 ワークスペースは、ブラウザからアクセスできるインタラクティブな作業環境です。 JupyterLab などのインターフェイスを通して PFCP の計算リソースを利用できます。

ワークスペースの隔離

ワークスペースの各インスタンスを隔離する単位は、個人ユーザネームスペース の 2 通りがあります。 ワークスペースを作成する際に、どちらかの隔離タイプを選んで作成できます。

個人ユーザ

個人ユーザ単位で隔離するワークスペースは、ワークスペースを作成したユーザのみが利用できます。 そのため、SSH 秘密鍵など個人の認証情報を安全に保存できます。

組織管理者を含め、他のユーザは利用できません。 ただし、組織管理者はワークスペースを休止・削除できます。

利用可能な操作を以下に一覧します。

操作ワークスペースを作成したユーザ組織管理者その他のユーザ
ブラウザからワークスペースへのアクセスo
ワークスペースの更新o
稼働中のワークスペースの休止oo
休止中のワークスペースの再開o
ワークスペースの削除oo

ネームスペース

ネームスペース単位で隔離するワークスペースは、ワークスペースが作成されたネームスペースに対し org-edit Role をもつユーザが利用できます。 そのため、ネームスペースに対する権限をもつユーザ間でワークスペースを共有できます。

ネームスペースに対し org-edit Role をもたないユーザは利用できません。

ワークスペースを作成する

Note

ワークスペースは、お使いの組織の計算リソースを利用します。 計算リソースが不足している場合、ワークスペースの作成に失敗することがあります。

Note

個人ユーザ単位で隔離するワークスペースは、ルートネームスペースにのみ作成可能です。 そのため、作成にはルートネームスペースに対する org-edit または org-workspace-edit ClusterRole の付与が必要です。 ClusterRole を付与する方法は、RoleBinding の作成 をご参照ください。

  1. ポータルの ワークスペースページ にアクセスし、新規作成 ボタンをクリックします。
  2. フォームを入力し、作成 ボタンをクリックします。

ワークスペースにアクセスする

  1. ポータルの ワークスペースページ にアクセスします。
  2. アクセスしたいワークスペースの URL 列にあるリンクをクリックします。

ワークスペースを休止・再開する

Warning

ワークスペースを休止すると、ワークスペース内のデータが削除されます。 PersistentVolume に保存されているデータは、休止中も保持されます。

利用していないワークスペースを休止することで、計算リソースを節約できます。

  1. ポータルの ワークスペースページ にアクセスします。
  2. 休止したいワークスペースを選択し、休止 ボタンをクリックします。

休止したワークスペースは、同様の手順で再開できます。

  1. ポータルの ワークスペースページ にアクセスします。
  2. 再開したいワークスペースを選択し、再開 ボタンをクリックします。

ワークスペースを削除する

Warning

ワークスペースを削除すると、ワークスペース内のデータ、およびワークスペースから作成した PersistentVolume がすべて削除されます。

  1. ポータルの ワークスペースページ にアクセスします。
  2. 削除したいワークスペースを選択し、削除 ボタンをクリックします。

Kubernetes マニフェストでワークスペースを管理する

ワークスペースはポータルでの操作のほかに、Kubernetes マニフェストを使った管理も可能です。 マニフェストを使うことで、ワークスペースの管理を自動化でき、ワークスペース設定の再現性を高めることができます。

Workspace カスタムリソース

ワークスペースの各インスタンスは、Workspace カスタムリソースで表現されます。

Workspace リソースから、ワークスペースの実体となる Pod が作成されます。 Workspace リソースを作成・更新・削除することで、ワークスペースを管理できます。

Workspace リソースは以下の形式で定義されます。

apiVersion: preferred.jp/v1alpha1
kind: Workspace
metadata:
  name: ...
  namespace: ...
spec:
  owner:
    type: Individual
  podTemplate: ...
  volumeClaimTemplates:
  - ...

Info

kubectl explain workspace コマンドでも各フィールドの説明を確認できます。

  • spec.owner.type フィールド
    • ワークスペースの隔離タイプを指定します。
    • 個人ユーザで隔離する場合は Individual、ネームスペースで隔離する場合は Namespace を指定します。
  • spec.podTemplate フィールド
    • ワークスペースの実体となる Pod に適用する PodTemplateSpec を指定します。
  • spec.volumeClaimTemplates フィールド
    • ワークスペースから作成する PersistentVolumeClaim のリストを指定します。
    • 作成する PersistentVolumeClaim を spec.podTemplate で参照することで、ワークスペースから PersistentVolume を利用できます。

ClusterWorkspacePreset カスタムリソース

ClusterWorkspacePreset カスタムリソースは、ワークスペースの各インスタンスに適用されるデフォルトの設定を表現します。

Workspace リソースからワークスペースの実体となる Pod が作成される際、Workspace リソースの spec.podTemplate フィールドに記述しなかったフィールドは、ClusterWorkspacePreset カスタムリソースから引き継がれます。 spec.podTemplate フィールドに記述したフィールドは、その値で上書きされ Pod が作成されます。

PFCP で定義されている ClusterWorkspacePreset リソースは、kubectl get clusterworkspacepreset コマンド(または kubectl get cwspreset)で確認できます。 一部の値を抜粋すると、以下のようになっています。

apiVersion: preferred.jp/v1alpha1
kind: ClusterWorkspacePreset
metadata:
  name: default
spec:
  podTemplate:
    spec:
      containers:
      - name: workspace
        image: registry.pfcomputing.internal/mncore-sdk/mncore-sdk-full
        command:
        - /app/jupyter/bin/jupyter
        - lab

この値にしたがい、Workspace リソースの spec.podTemplate フィールドを記述しなかった場合、MN-Core SDK のコンテナイメージで JupyterLab を起動する workspace コンテナをもつ Pod が作成されます。 spec.podTemplate フィールドでコンテナイメージやコマンドなどを指定することで、このデフォルト設定を上書きできます。 また、workspace コンテナのリソース要求の設定や、workspace 以外のコンテナの追加も可能です。