インタラクティブな作業環境を作成する
インタラクティブな作業環境をクラスタ上に作成するにはワークスペース機能を使用します。 ワークスペースは、ブラウザからアクセスできるインタラクティブな作業環境です。 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
podTemplate: ...
volumeClaimTemplates:
- ...
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
以外のコンテナの追加も可能です。