4.3. ストレージストラテジーの設定

本セクションでは、CodeReady Workspaces ワークスペースのストレージストラテジーを設定する方法を説明します。

4.3.1. codeready-workspaces ワークスペースのストレージストラテジー

ストレージストラテジー
CodeReady Workspaces ワークスペースが永続ボリューム要求(PVC)および永続ボリューム(PV)を使用する方法を定義する設定可能な方法。この方法では、プロジェクト、ワークスペースログ、ユーザーが定義する追加のボリュームなどのワークスペースデータのストレージを定義します。

表4.1 ストレージストラテジーの比較

ストレージストラテジー名commonper-workspaceunique

PV 数

ユーザーごとに 1 つ

ワークスペースごとに 1 つ

ワークスペースごとに複数の PV

Default

はい

いいえ

いいえ

制限事項

PV が ReadWriteOnce アクセスモードの場合、1 ユーザーあたりの最大 1 つの実行中のワークスペース数

PV 数はワークスペースの数によって異なります。

予測不可能な PV 数

永続ボリューム(PV)アクセスモード
PV の性質により、利用可能なアクセスモード( ReadWriteMany または ReadWriteOnce )が決まります。Kubernetes ドキュメント「アクセスモード」を 参照してください。たとえば、Amazon EBSReadWriteOnce アクセスモードのみをサポートします。

4.3.1.1. 一般的な ストレージストラテジー

これはデフォルトのストレージストラテジーです。各ユーザーについて、すべてのワークスペースはデフォルトのデータストレージに同じ PV を使用します。

ユーザーが最初の一時以外のワークスペースを起動すると、ワークスペースエンジンは共通の PV を作成します。

ユーザーが一時的な別のワークスペースを起動すると、ワークスペースエンジンは同じ共通 PV を使用します。ワークスペースは、同時に OpenShift クラスターの 1 つのノードにのみバインドします。ワークスペースエンジンは、ユーザー定義のボリュームを無視します。ワークスペースエンジンは、ユーザー定義のボリュームに関連するボリュームを、共通ボリュームの subPath に置き換えます。サブパスには <workspace-ID> または <original-volume-name> プレフィックスがあります。「永続ボリューム(PV)で subPath を使用する方法」 を参照してください。CodeReady Workspaces ボリューム名は、ユーザー定義の PV の名前と同じです。そのため、ワークスペースコンテナーがユーザー定義の PV と同じ名前を持つ CodeReady Workspaces ボリュームを使用する場合、それらは共通の PV 内の同じ共有フォルダーを使用します。

ユーザーがワークスペースを削除すると、ワークスペースエンジンは PV ディレクトリーの対応するサブディレクトリー(${ws-id})を削除します。

ユーザーが最後のワークスペースを削除すると、ワークスペースエンジンは共通 PV を削除します。

ReadWriteOnce アクセスモードの 一般的な ストレージストラテジーの制限
ReadWriteOnce アクセスモードは、各ユーザーが 1 つの同時ワークスペースのみを実行するように制限します。「ユーザーが実行できるワークスペース数の設定」を参照してください。
スケーラビリティー
一般的な ストレージストラテジーは、ユーザーごとに同時に実行されているワークスペースの数が 1 を超える場合、PV に「ReadWriteOnce」アクセスモードを持つマルチノードクラスターには適していません。
永続ボリューム(PV)のプロビジョニング
1 つのプロジェクトが他のプロジェクトのリソースを使い切られる状況を防ぐために、すべてのプロジェクトに対応するのに十分な PV を作成します。

4.3.1.2. ワークス ペースごとの ストレージストラテジー

各ワークスペースは 1 つの専用 PV を使用します。単一ワークスペース内で定義されたすべての CodeReady Workspaces ボリュームは同じ PV を使用します。

永続ボリューム(PV)のプロビジョニング
ユーザーは複数のワークスペースを同時に実行できます。このアクションにより、より多くの PV が発生します。

4.3.1.3. 一意 のストレージストラテジー

ワークスペースで定義された各 CodeReady Workspaces ボリュームには独自の PV があります。

ユーザーがワークスペースを起動すると、ワークスペースエンジンはワークスペース PV を作成します。

ワークスペースエンジンは、同じプロジェクト内の他の PV と名前が競合しないように、各 PV に一意の名前を生成します。

異なるストレージストラテジーが同じ PV データ構造を使用するようにするには、ユーザー定義の PV を参照するマウント済み PV の subPath に <workspace-ID> または <persistent-volume-name> というプレフィックスが付けられます。「永続ボリューム(PV)で subPath を使用する方法」 を参照してください。

ユーザーがワークスペースを削除すると、ワークスペースエンジンはすべてのワークスペース PV を削除します。

PV のプロビジョニング
これは、最大ボリューム数を作成するストラテジーです。

4.3.1.4. 永続ボリューム(PV)で subPath を使用する方法

サブパスは PV のフォルダー階層を示しています。

/<pv0001>
  /<workspaceID1>
  /<workspaceID2>
  /<workspaceIDn>
    /che-logs
    /projects
    /<volume1>
    /<volume2>
    /<user-defined-volume-name-1>
    /<user-defined-volume-name-2>
    /<user-defined-volume-name-3|volume3>
    ...

ユーザーが devfile でコンポーネントのボリュームを定義すると、同じ名前のボリュームを定義するすべてのコンポーネントは、PV 内の <persistent-volume-name>、<workspace-ID>、または <original-volume-name&gt; と同じディレクトリーでサポートされます。各コンポーネントでは、コンテナー内の異なるパスにこの場所をマウントすることができます。