インタラクティブな作業環境を作成する
インタラクティブな作業環境をクラスタ上に作成するにはワークスペース機能を使用します。 ワークスペースは、ブラウザからアクセスできるインタラクティブな作業環境です。 JupyterLab などのインターフェイスを通して PFCP の計算リソースを利用できます。
ワークスペースの隔離
ワークスペースの各インスタンスを隔離する単位は、個人ユーザ と ネームスペース の 2 通りがあります。 ワークスペースを作成する際に、どちらかの隔離タイプを選んで作成できます。
個人ユーザ
個人ユーザ単位で隔離するワークスペースは、ワークスペースを作成したユーザのみが利用できます。 そのため、SSH 秘密鍵など個人の認証情報を安全に保存できます。
組織管理者を含め、他のユーザは利用できません。 ただし、組織管理者はワークスペースを休止・削除できます。
利用可能な操作を以下に一覧します。
操作 | ワークスペースを作成したユーザ | 組織管理者 | その他のユーザ |
---|---|---|---|
ブラウザからワークスペースへのアクセス | o | ||
ワークスペースの更新 | o | ||
稼働中のワークスペースの休止 | o | o | |
休止中のワークスペースの再開 | o | ||
ワークスペースの削除 | o | o |
ネームスペース
ネームスペース単位で隔離するワークスペースは、ワークスペースが作成されたネームスペースに対し org-edit
Role をもつユーザが利用できます。
そのため、ネームスペースに対する権限をもつユーザ間でワークスペースを共有できます。
ネームスペースに対し org-edit
Role をもたないユーザは利用できません。
ワークスペースを作成する
個人ユーザ単位で隔離するワークスペースは、ルートネームスペースにのみ作成可能です。
そのため、作成にはルートネームスペースに対する org-edit
または org-workspace-edit
ClusterRole の付与が必要です。
ClusterRole を付与する方法は、RoleBinding の作成 をご参照ください。
- ポータルの ワークスペースページ にアクセスし、新規作成 ボタンをクリックします。
- フォームを入力し、作成 ボタンをクリックします。
ワークスペースにアクセスする
- ポータルの ワークスペースページ にアクセスします。
- アクセスしたいワークスペースの URL 列にあるリンクをクリックします。
ワークスペースを休止・再開する
利用していないワークスペースを休止することで、計算リソースを節約できます。
- ポータルの ワークスペースページ にアクセスします。
- 休止したいワークスペースを選択し、休止 ボタンをクリックします。
休止したワークスペースは、同様の手順で再開できます。
- ポータルの ワークスペースページ にアクセスします。
- 再開したいワークスペースを選択し、再開 ボタンをクリックします。
ワークスペースを削除する
- ポータルの ワークスペースページ にアクセスします。
- 削除したいワークスペースを選択し、削除 ボタンをクリックします。
Kubernetes マニフェストでワークスペースを管理する
ワークスペースはポータルでの操作のほかに、Kubernetes マニフェストを使った管理も可能です。 マニフェストを使うことで、ワークスペースの管理を自動化でき、ワークスペース設定の再現性を高めることができます。
Workspace カスタムリソース
ワークスペースの各インスタンスは、Workspace カスタムリソースで表現されます。
Workspace リソースから、ワークスペースの実体となる Pod が作成されます。 Workspace リソースを作成・更新・削除することで、ワークスペースを管理できます。
Workspace リソースは以下の形式で定義されます。
apiVersion: preferred.jp/v1alpha1
kind: Workspace
metadata:
name: ...
namespace: ...
spec:
owner:
type: Individual
presetRef: ...
podTemplate: ...
volumeClaimTemplates:
- ...
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