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
  presetRef: ...
  podTemplate: ...
  volumeClaimTemplates:
  - ...

Info

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

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

プリセット

ワークスペースの実体となる Pod の構成を プリセット として事前に定義できます。 プリセットを定義することで、似た構成をもつワークスペースの管理を簡素化できます。

プリセットは、ワークスペースに適用する spec.podTemplate フィールドのデフォルト値を定義します。 Workspace リソースからワークスペースの実体となる Pod が作成される際、Workspace リソースの spec.podTemplate フィールドに記述しなかったフィールドはプリセットから引き継がれます。 spec.podTemplate フィールドに記述したフィールドは、その値で上書きされ Pod が作成されます。

プリセットには、ClusterWorkspacePreset カスタムリソースと WorkspacePreset カスタムリソースの 2 種類があります。

ClusterWorkspacePreset カスタムリソース

ClusterWorkspacePreset カスタムリソースは、PFCP マネージドなクラスタ全体で共有されるプリセットです。 すべての組織のワークスペースで利用できます。

利用可能な ClusterWorkspacePreset リソースは、kubectl get clusterworkspacepreset コマンド(または kubectl get cwspreset)で確認できます。 Workspace リソースの spec.presetRef フィールドを以下のように設定することで、適用したい ClusterWorkspacePreset を選択できます。

apiVersion: preferred.jp/v1alpha1
kind: Workspace
spec:
  presetRef:
    apiVersion: preferred.jp/v1alpha1
    kind: ClusterWorkspacePreset
    name: NAME

spec.presetRef フィールドを省略した場合、default ClusterWorkspacePreset が適用されます。 default ClusterWorkspacePreset の一部の値を抜粋すると、以下のようになっています。

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 以外のコンテナの追加も可能です。

WorkspacePreset カスタムリソース

WorkspacePreset カスタムリソースは、ネームスペース単位で共有されるプリセットです。 ネームスペースに対する org-edit Role をもつユーザが作成・更新・削除できます。

ネームスペースに存在する WorkspacePreset リソースは、kubectl get workspacepreset コマンド(または kubectl get wspreset)で確認できます。 Workspace リソースの spec.presetRef フィールドを以下のように設定することで、適用したい WorkspacePreset を選択できます。

apiVersion: preferred.jp/v1alpha1
kind: Workspace
spec:
  presetRef:
    apiVersion: preferred.jp/v1alpha1
    kind: WorkspacePreset
    name: NAME

Info

Workspace が WorkspacePreset を参照するには、Workspace と WorkspacePreset が同じネームスペースに存在する必要があります。