4.9. ストレージの設定


警告

OpenShift Dev Spaces は Network File System (NFS) プロトコルをサポートしていません。

4.9.1. ストレージクラスの設定

設定されたインフラストラクチャーストレージを使用するように OpenShift Dev Spaces を設定するには、ストレージクラスを使用して OpenShift Dev Spaces をインストールします。これは、デフォルト以外のプロビジョナーによって提供される永続ボリュームをバインドする場合に特に便利です。

OpenShift Dev Spaces には、データを保存するために永続ボリュームを必要とするコンポーネントが 1 つあります。

  • OpenShift Dev Spaces ワークスペース。OpenShift Dev Spaces ワークスペースは、/projects ボリュームなどのボリュームを使用してソースコードを保存します。
注記

OpenShift Dev Spaces ワークスペースソースコードは、ワークスペースが一時的ではない場合にのみ永続ボリュームに保存されます。

永続ボリューム要求のファクト:

  • OpenShift Dev Spaces は、インフラストラクチャーに永続ボリュームを作成しません。
  • OpenShift Dev Spaces は、永続ボリュームクレーム (PVC) を使用して永続ボリュームをマウントします。
  • 「Dev ワークスペースの演算子」 は、永続ボリューム要求を作成します。

    OpenShift Dev Spaces PVC のストレージクラス機能を使用するには、OpenShift Dev Spaces 設定でストレージクラス名を定義します。

手順

CheCluster カスタムリソース定義を使用してストレージクラスを定義します。

  1. ストレージクラス名を定義します。CheCluster カスタムリソースを設定し、OpenShift Dev Spaces をインストールします。「dsc を使用したインストール時に CheCluster カスタムリソースの設定」 を参照してください。

    spec:
      devEnvironments:
        storage:
          perUserStrategyPvcConfig:
            claimSize: <claim_size> 1
            storageClass: <storage_class_name> 2
          perWorkspaceStrategyPvcConfig:
            claimSize: <claim_size> 3
            storageClass: <storage_class_name> 4
          pvcStrategy: <pvc_strategy> 5
    1 3
    Persistent Volume Claim のサイズ。
    2 4
    Persistent Volume Claim のストレージクラス。省略されるか、空のままの場合は、デフォルトのストレージクラスが使用されます。
    5
    永続ボリューム要求ストラテジー。サポートされているストラテジーは、per-user (1 つのボリュームにすべてのワークスペースの永続ボリューム要求)、per-workspace (各ワークスペースに個別の永続ボリューム要求が与えられる)、ephemeral (ワークスペースが停止すると、ローカルの変更が失われる非永続ストレージ) です。

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

OpenShift Dev Spaces は、ストレージストラテジーを選択することで、ワークスペースに永続ストレージまたは非永続ストレージを提供するように設定できます。選択したストレージストラテジーは、デフォルトで新しく作成されたすべてのワークスペースに適用されます。ユーザーは、devfile または URL パラメーター を通じて、ワークスペースのデフォルト以外のストレージストラテジーを選択できます。

利用可能なストレージストラテジー:

  • per-user: ユーザーによって作成されたすべてのワークスペースに単一の PVC を使用します。
  • per-workspace: 各ワークスペースには独自の PVC が付与されます。
  • ephemeral: 非永続ストレージ。ワークスペースが停止すると、ローカルの変更は失われます。

OpenShift Dev Spaces で使用されるデフォルトのストレージストラテジーは per-user です。

手順

  1. Che Cluster カスタムリソースの pvcStrategy フィールドを、per-userper-workspace または ephemeral に設定します。
注記
spec:
  devEnvironments:
    storage:
      pvc:
        pvcStrategy: 'per-user' 1
1
利用可能なストレージストラテジーは、per-userper-workspace および ephemeral です。

4.9.3. ストレージサイズの設定

永続ボリューム要求 (PVC) サイズは、per-user または per-workspace のストレージストラテジーを使用して設定できます。CheCluster カスタムリソースの PVC サイズを Kubernetes リソース数量 の形式で指定する必要があります。利用可能なストレージストラテジーの詳細は、こちらのページ を参照してください。

デフォルトの永続ボリューム要求サイズ:

  • per-user: 10Gi
  • per-workspace: 5Gi

手順

  1. Che Cluster カスタムリソースで、必要なストレージストラテジーの適切な claimSize フィールドを設定します。
注記
spec:
  devEnvironments:
    storage:
      pvc:
        pvcStrategy: '<strategy_name>'  1
        perUserStrategyPvcConfig: 2
          claimSize: <resource_quantity> 3
        perWorkspaceStrategyPvcConfig:  4
          claimSize: <resource_quantity> 5
1
ストレージストラテジー (per-userper-workspace または ephemeral) を選択します。注記: ephemeral ストレージストラテジーは永続ストレージを使用しないため、そのストレージサイズまたは他の PVC 関連の属性を設定できません。
2 4
次の行で要求サイズを指定するか、次の行を省略して、デフォルトの要求サイズ値を設定します。指定された要求サイズは、このストレージストラテジーを選択する場合にのみ使用されます。
3 5
要求サイズは、Kubernetes リソース数量 として指定する必要があります。利用可能な数量の単位には、EiPiTiGiMi、および Ki が含まれます。

4.9.4. 永続ホームディレクトリー

Red Hat OpenShift Dev Spaces は、非一時ワークスペースごとにワークスペースの再起動後も /home/user ディレクトリーを維持できるようにする永続ホームディレクトリー機能を提供します。spec.devEnvironments.persistUserHome.enabledtrue に設定して、CheCluster でこの機能を有効にできます。

新しく起動されたワークスペースでは、この機能により、tools コンテナーの /home/user パスにマウントされる PVC が作成されます。このドキュメントでは、"tools コンテナー" を使用して devfile の最初のコンテナーを参照します。このコンテナーは、デフォルトでプロジェクトソースコードを含むコンテナーです。

PVC の初回マウント時に、永続ボリュームのコンテンツは空になるため、/home/user ディレクトリーのコンテンツを設定する必要があります。

デフォルトでは、persistUserHome 機能は、init-persistent-home という名前の新規ワークスペース Pod ごとに init コンテナーを作成します。この init コンテナーはツールコンテナーイメージと共に作成され、stow コマンドを実行して永続ボリュームにシンボリックリンクを作成し、/home/user ディレクトリーを設定します。

注記

.viminfo および .bashrc ファイルなど、/home/user ディレクトリーにシンボリックリンクができないファイルの場合は、stow の代わりに cp が使用されます。

stow コマンドの主な機能は、以下を実行することです。

stow -t /home/user/ -d /home/tooling/ --no-folding

上記のコマンドは、/home/tooling にあるファイルおよびディレクトリーの /home/user にシンボリックリンクを作成します。これにより、永続ボリュームに /home/tooling のコンテンツへのシンボリックリンクが追加されます。その結果、persistentUserHome 機能は、ツールイメージに /home/user/ コンテンツが /home/tooling 内にあることを想定します。

たとえば、ツールコンテナーイメージに .config および .config-folder/another-file などの home/tooling ディレクトリーのファイルが含まれている場合は、stow は次の方法で永続ボリュームにシンボリックリンクを作成します。

図4.11 persistUserHome が有効になっているツールコンテナー

永続ユーザーホームディレクトリーのシナリオ例

init コンテナーは、stow コマンドの出力を /home/user/.stow.log に書き込みます。永続ボリュームをワークスペースに初めてマウントしたときにのみ stow を実行します。

stow コマンドを使用して、永続ボリュームに /home/user コンテンツを設定することには、主に 2 つの利点があります。

  1. シンボリックリンクを作成する方が、/home/user ディレクトリーの内容を永続ボリュームにコピーするよりも高速で、ストレージの消費も少なくなります。言い換えれば、この場合の永続ボリュームには、実際のファイルではなくシンボリックリンクが含まれています。
  2. ツールイメージが、既存のバイナリー、設定、およびファイルの新しいバージョンで更新されている場合、既存のシンボリックリンクは /home/tooling の新しいバージョンにすでにリンクされるため、init コンテナーは新しいバージョンを stow する必要はありません。
注記

ツールイメージが追加のバイナリーまたはファイルで更新されている場合、stow コマンドは再度実行されないため、/home/user ディレクトリーにシンボリックリンクされません。この場合は、/home/user/.stow_completed ファイルを削除し、ワークスペースを再起動して stow を再実行する必要があります。

persistUserHome ツールのイメージ要件

persistUserHome は、ワークスペースに使用されるツールイメージによって異なります。デフォルトでは、OpenShift Dev Spaces は、追加設定なしで persistUserHome をサポートするサンプルワークスペースに Universal Developer Image (UDI) を使用します。

カスタムイメージを使用している場合は、persistUserHome 機能をサポートするために満たさなければならない 3 つの要件があります。

  1. ツールイメージには stow バージョン >= 2.4.0 が含まれている必要がある。
  2. $HOME 環境変数が /home/user に設定されている。
  3. tools イメージでは、/home/user コンテンツを含む予定のディレクトリーは /home/tooling である。

要件 3 により、デフォルトの UDI イメージは、たとえば /home/user コンテンツを /home/tooling に追加し、以下を実行します。

RUN stow -t /home/user/ -d /home/tooling/ --no-folding

これは、/home/tooling のファイルが persistUserHome 機能を使用していなくても /home/user からアクセスできるように Dockerfile で実行されます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.