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

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

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

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

手順

  1. Authoring devfiles version 2components セクションで明示的に指定されるワークスペースコンポーネントを特定します。
  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

      64 MiB

      cheEditor

      che.workspace.sidecar.default_memory_limit_mb

      128 MiB

      64 MiB

      kubernetesopenshiftdockerimage

      che.workspace.default_memory_limit_mb, che.workspace.default_memory_request_mb

      1 Gi

      200 MiB

      JWT プロキシー

      che.server.secure_exposer.jwtproxy.memory_limitche.server.secure_exposer.jwtproxy.memory_request

      128 MiB

      15 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

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

        Memory limit

        512 MiB

        メモリー要求

        256 MiB

        注記

        IBM Power Systems (ppc64le) の場合は、一部のプラグインのメモリー制限が最大 1.5G まで増え、Pod が十分な RAM を実行できるようになりました。たとえば、IBM Power Systems (ppc64le) では、Theia エディター Pod には 2G が必要で、OpenShift コネクター Pod には 2.5G が必要です。AMD64 および Intel 64(x86_64)、 および IBM Z(s390x)の場合、メモリー要件は 512M と 1500M とそれぞれ低くなっています。ただし、一部の devfile は、AMD64 および Intel 64 (x86_64)、ならびに IBM Z (s390x) に有効である低い制限を設定するように設定されます。これを回避するため、デフォルトの memoryLimit を 1 - 1.5 GB 以上を増やすために、devfile を編集します。

        注記

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

        コミュニティープラグインは、v3/plugins/${organization}/${name}/${version}/ フォルダーの CodeReady Workspaces plug-ins registry repository で利用できます。

        コミュニティー以外またはカスタマイズされたプラグインの場合、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

CodeReady Workspaces サーバーコンポーネントの詳細な設定オプションを参照してください。

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. 以前に計算された要件をすべて追加します。