2.2. ワークスペースの要件

本セクションでは、ワークスペースに必要なリソースを計算する方法を説明します。これは、このワークスペースの各コンポーネントに必要なリソースの合計です。

以下の例は、適切な計算の必要性について示しています。

  • アクティブな 10 のプラグインがあるワークスペースには、これより少ないプラグインを持つ同じワークスペースよりも多くのリソースが必要になります。
  • 標準の Java ワークスペースでは、ビルド、テスト、およびアプリケーションのデバッグにより多くのリソースが必要になるため、標準の Node.js ワークスペースよりも多くのリソースが必要になります。

手順

  1. https://access.redhat.com/documentation/en-us/red_hat_codeready_workspaces/2.5/html-single/end-user_guide/index#making-a-workspace-portable-using-a-devfile_crwcomponents セクションに明示的に指定されるワークスペースコンポーネントを特定します。
  2. 暗黙的なワークスペースコンポーネントを特定します。

    1. CodeReady Workspaces はデフォルトの cheEditor: che-theia と、コマンドの実行を許可する chePlugin (che-machine-exec-plugin)を暗黙的に読み込みます。CodeReady Workspaces がマルチユーザーモードで実行されている場合は、cheEditor コンポーネントを読み込みます。
    2. CodeReady Workspaces がマルチユーザーモードで実行されている場合は、JWT Proxy コンポーネントを読み込みます。JWT プロキシーは、ワークスペースコンポーネントの外部通信の認証および認可を行います。
  3. 各コンポーネントの要件を計算します。

    1. デフォルト値:

      以下の表は、すべてのワークスペースコンポーネントのデフォルト要件を示しています。また、デフォルトのクラスター全体を変更できるように対応する CodeReady Workspaces サーバープのロパティーも表示します。

      表2.2 タイプ別のワークスペースコンポーネントのデフォルト要件

      コンポーネントのタイプCodeReady Workspaces サーバープロパティーデフォルトのメモリー制限デフォルトのメモリー要求

      chePlugin

      che.workspace.sidecar.default_memory_limit_mb

      128 MiB

      128 MiB

      cheEditor

      che.workspace.sidecar.default_memory_limit_mb

      128 MiB

      128 MiB

      kubernetesopenshiftdockerimage

      che.workspace.default_memory_limit_mb, che.workspace.default_memory_request_mb

      1 Gi

      512 MiB

      JWT プロキシー

      che.server.secure_exposer.jwtproxy.memory_limit

      128 MiB

      128 MiB

    2. chePlugins および cheEditors コンポーネントのカスタム要件:

      1. カスタムメモリー制限および要求:

        存在する場合、meta.yaml ファイルの containers セクションの memoryLimit および memoryRequest 属性は、chePlugins または cheEditors コンポーネントのメモリー制限を定義します。CodeReady Workspaces は、明示的に指定されていない場合に、メモリー制限に一致するようにメモリー要求を自動的に設定します。

        例2.1 chePlugin che-incubator/typescript/latest

        meta.yaml 仕様セクション:

        spec:
         containers:
           - image: docker.io/eclipse/che-remote-plugin-node:next
             name: vscode-typescript
             memoryLimit: 512Mi
             memoryRequest: 256Mi

        これにより、コンテナーには以下のメモリー制限および要求が設定されます。

        メモリー制限

        512 MiB

        メモリー要求

        256 MiB

        注記

        chePluginmeta.yaml ファイルの検索方法

        コミュニティープラグインは、v3/plugins/${organization}/${name}/${version}/ フォルダーの che-plugin-registry GitHub リポジトリーで利用できます。

        コミュニティー以外またはカスタマイズされたプラグインの場合、meta.yaml ファイルは ${pluginRegistryEndpoint}/v3/plugins/${organization}/${name}/${version}/meta.yaml のローカルの OpenShift クラスターで利用できます。

      2. カスタム CPU の制限および要求:

        CodeReady Workspaces は、デフォルトで CPU の制限および要求を設定しません。ただし、meta.yaml ファイルまたは devfile で chePlugin および cheEditor タイプの CPU 制限を、メモリー制限と同じ様に設定できます。

        例2.2 chePlugin che-incubator/typescript/latest

        meta.yaml 仕様セクション:

        spec:
         containers:
           - image: docker.io/eclipse/che-remote-plugin-node:next
             name: vscode-typescript
             cpuLimit: 2000m
             cpuRequest: 500m

        これにより、コンテナーに以下の CPU 制限および要求が設定されます。

        CPU 制限

        2 コア

        CPU 要求

        0.5 コア

CPU 制限および要求をグローバルに設定するには、以下の専用の環境変数を使用します。

CPU Limit

CHE_WORKSPACE_SIDECAR_DEFAULT__CPU__LIMIT__CORES

CPU Request

CHE_WORKSPACE_SIDECAR_DEFAULT__CPU__REQUEST__CORES

https://access.redhat.com/documentation/en-us/red_hat_codeready_workspaces/2.5/html-single/installation_guide/index#advanced-configuration-options-for-the-codeready-workspaces-server-component_crw も参照してください。

OpenShift プロジェクトの LimitRange オブジェクトは、クラスター管理者によって設定される CPU 制限および要求のデフォルト値を指定できることに注意してください。リソースのオーバーランによる開始エラーを防ぐために、アプリケーションやワークスペースレベルでの制限がこれらの設定に準拠している必要があります。

  1. dockerimage コンポーネントのカスタム要件:

    存在する場合、devfileのmemoryLimit属性とmemoryRequest属性は、dockerimageコンテナのメモリ制限を定義します。CodeReady Workspaces は、明示的に指定されていない場合に、メモリー制限に一致するようにメモリー要求を自動的に設定します。

      - alias: maven
        type: dockerimage
        image: eclipse/maven-jdk8:latest
        memoryLimit: 1536M
  2. kubernetes または openshift コンポーネントのカスタム要件:

    参照されるマニフェストは、メモリー要件および制限を定義できます。

    1. 以前に計算された要件をすべて追加します。