4.12. ストレージクラスを使用した CodeReady Workspaces のインストール

設定済みのインフラストラクチャーストレージを使用するように CodeReady Workspaces を設定するには、ストレージクラスを使用して CodeReady Workspaces をインストールします。これは、ユーザーがデフォルト以外のプロビジョナーによって提供される永続ボリュームをバインドする必要がある場合にとくに役立ちます。これを実行するには、ユーザーは CodeReady Workspaces のデータを節約するためにこのストレージをバインドし、そのストレージのパラメーターを設定します。これらのパラメーターは、以下を決定します。

  • 特殊なホストパス
  • ストレージ容量
  • ボリューム mod
  • マウントオプション
  • ファイルシステム
  • アクセスモード
  • ストレージタイプ
  • その他多数

CodeReady Workspaces には、データの格納に永続ボリュームが必要な 2 つのコンポーネントがあります。

  • PostgreSQL データベース。
  • CodeReady Workspaces ワークスペース。CodeReady Workspaces ワークスペースは、ボリューム (例: /projects ボリューム) を使用してソースコードを保存します。
注記

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

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

  • CodeReady Workspaces はインフラストラクチャーに永続ボリュームを作成しません。
  • CodeReady Workspaces は永続ボリューム要求 (PVC)を使用して永続ボリュームをマウントします。
  • CodeReady Workspaces サーバーは永続ボリューム要求を作成します。

    ユーザーは、CodeReady Workspaces PVC でストレージクラス機能を使用するために、CodeReady Workspaces 設定でストレージクラス名を定義します。ストレージクラスを使用すると、ユーザーは追加のストレージパラメーターを使用してインフラストラクチャーストレージを柔軟に設定します。クラス名を使用して、静的にプロビジョニングされた永続ボリュームを CodeReady Workspaces PVC にバインドすることもできます。

手順

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

  1. ストレージクラス名を定義します。

    これを行うには、以下のいずれかの方法を使用します。

    • server:deploy コマンドの引数の使用

      1. PostgreSQL PVC のストレージクラス名を指定します。

        --postgres-pvc-storage-class-name フラグを指定して crwctl server:deploy コマンドを使用します。

        $ crwctl server:deploy -m -p minikube -a operator --postgres-pvc-storage-class-name=postgress-storage
      2. CodeReady Workspaces ワークスペースのストレージクラス名を指定します。

        --workspace-pvc-storage-class-name フラグを指定して server:deploy コマンドを使用します。

        $ crwctl server:deploy -m -p minikube -a operator --workspace-pvc-storage-class-name=workspace-storage

        CodeReady Workspaces ワークスペースでは、ワークスペースの PVC ストラテジーに応じてストレージクラスの名前の動作が異なります。

        注記

        Postgres-pvc-storage-class-name=postgress-storage および workspace-pvc-storage-class-name は、Operator インストーラーおよび Helm インストーラーで機能します。

    • カスタムリソース YAML ファイルを使用してストレージクラス名を定義します。

      1. CodeReady Workspaces インストールに定義されたカスタムリソースで YAML ファイルを作成します。
      2. フィールド spec#storage#postgresPVCStorageClassName および spec#storage#workspacePVCStorageClassName を定義します。

        apiVersion: org.eclipse.che/v1
        kind: CheCluster
        metadata:
          name: codeready-workspaces
        spec:
          # ...
          storage:
            # ...
            # keep blank unless you need to use a non default storage class for PostgreSQL PVC
            postgresPVCStorageClassName: 'postgres-storage'
            # ...
            # keep blank unless you need to use a non default storage class for workspace PVC(s)
            workspacePVCStorageClassName: 'workspace-storage'
            # ...
      3. カスタムリソースで codeready-workspaces サーバーを起動します。

        $ crwctl server:deploy -m -p minikube -a operator --che-operator-cr-yaml=/path/to/custom/che/resource/org_v1_che_cr.yaml
  2. CodeReady Workspaces を、ワークスペースを 1 つ目の永続ボリュームに、PostreSQL データベースを 2 つ目の永続ボリュームに保存するように設定します。

    1. カスタムリソース YAML ファイルを変更します。

      • pvcStrategycommon に設定します。
      • 単一のプロジェクトでワークスペースを開始するように CodeReady Workspaces を設定します。
      • postgresPVCStorageClassName および workspacePVCStorageClassName のストレージクラス名を定義します。
      • YAML ファイルの例:

        apiVersion: org.eclipse.che/v1
        kind: CheCluster
        metadata:
          name: codeready-workspaces
        spec:
          server:
            # ...
            workspaceNamespaceDefault: 'che'
            # ...
          storage:
            # ...
            # Defaults to common
            pvcStrategy: 'common'
            # ...
            # keep blank unless you need to use a non default storage class for PostgreSQL PVC
            postgresPVCStorageClassName: 'postgres-storage'
            # ...
            # keep blank unless you need to use a non default storage class for workspace PVC(s)
            workspacePVCStorageClassName: 'workspace-storage'
            # ...
    2. カスタムリソースで codeready-workspaces サーバーを起動します。

      $ crwctl server:deploy -m -p minikube -a operator --che-operator-cr-yaml=/path/to/custom/che/resource/org_v1_che_cr.yaml
  3. クラス名を使用して静的にプロビジョニングされたボリュームをバインドします。

    1. PostgreSQL データベースの永続ボリュームを定義します。

      # che-postgres-pv.yaml
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: postgres-pv-volume
        labels:
          type: local
      spec:
        storageClassName: postgres-storage
        capacity:
          storage: 1Gi
        accessModes:
          - ReadWriteOnce
        hostPath:
          path: "/data/che/postgres"
    2. CodeReady Workspaces ワークスペースの永続ボリュームを定義します。

      # che-workspace-pv.yaml
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: workspace-pv-volume
        labels:
          type: local
      spec:
        storageClassName: workspace-storage
        capacity:
          storage: 10Gi
        accessModes:
          - ReadWriteOnce
        hostPath:
          path: "/data/che/workspace"
    3. 2 つの永続ボリュームをバインドします。
$ oc apply -f che-workspace-pv.yaml -f che-postgres-pv.yaml
注記

ボリュームの有効なファイルパーミッションを指定する必要があります。これは、ストレージクラスの設定を使用して実行することも、手動で実行することもできます。パーミッションを手動で定義するには、storageClass#mountOptions uidgid を定義します。PostgreSQL ボリュームには uid=26gid=26 が必要です。