第3章 devfile およびプラグインレジストリーのカスタマイズ


CodeReady Workspaces 2.4 では、プラグインレジストリーと devfile レジストリーという 2 つのレジストリーが導入されました。これらは、CodeReady Workspaces プラグインおよび CodeReady Workspaces devfile のメタデータが公開される静的 Web サイトです。

プラグインレジストリーを使用すると、CodeReady Workspaces の同じインスタンスのすべてのユーザーにプラグイン定義を共有できます。レジストリーに公開されるプラグインのみが devfile で使用できます。

devfile レジストリーは、CodeReady Workspaces スタックの定義を保持します。これらは、Create Workspace を選択すると CodeReady Workspaces ユーザーダッシュボードで利用できます。これには、サンプルプロジェクトを含む CodeReady Workspaces の技術的なスタックのサンプルの一覧が含まれます。

devfile およびプラグインレジストリーは 2 つの異なる Pod で実行され、CodeReady Workspaces サーバーがデプロイされる際にデプロイされます(CodeReady Workspaces Operator のデフォルト動作)。プラグインおよび devfile のメタデータは GitHub でバージョン化され、CodeReady Workspaces サーバーのライフサイクルに従います。

本書では、CodeReady Workspaces でデプロイされるデフォルトレジストリーをカスタマイズする方法(プラグインまたは devfile メタデータを変更するための)2 つの方法が記述されています。

3.1. カスタムレジストリーイメージのビルドおよび実行

このセクションでは、レジストリーのビルドと、実行中の CodeReady Workspaces サーバーを更新してレジストリーを参照する方法を説明します。

3.1.1. カスタム devfile レジストリーのビルド

本セクションでは、カスタム devfile レジストリーを構築する方法を説明します。以下の操作について説明します。

  • devfile レジストリーのビルドに必要なソースコードのコピーを取得します。
  • 新規 devfile の追加。
  • devfile レジストリーをビルドします。

手順

  1. devfile レジストリーリポジトリーのクローンを作成します。

    $ git clone git@github.com:redhat-developer/codeready-workspaces.git
    $ cd codeready-workspaces/dependencies/che-devfile-registry
    Copy to Clipboard Toggle word wrap
  2. ./che-devfile-registry/devfiles/ ディレクトリーに、<devfile-name>/ サブディレクトリーを作成し、devfile.yaml および meta.yaml ファイルを追加します。

    devfile のファイル編成

    ./che-devfile-registry/devfiles/
    └── <devfile-name>
        ├── devfile.yaml
        └── meta.yaml
    Copy to Clipboard Toggle word wrap

  3. devfile.yaml ファイルに有効なコンテンツを追加します。devfile 形式の詳細については、https://access.redhat.com/documentation/en-us/red_hat_codeready_workspaces/2.4/html-single/end-user_guide/index#making-a-workspace-portable-using-a-devfile_crw を参照して ください
  4. meta.yaml ファイルが以下の構造に準拠することを確認します。

    Expand
    表3.1 devfile meta.yaml のパラメーター
    属性説明

    description

    ユーザーダッシュボードに表示される説明。

    displayName

    ユーザーダッシュボードに表示される名前。

    globalMemoryLimit

    devfile が起動するすべてのコンポーネントによって消費されることが予想されるメモリーの合計。この数字はユーザーダッシュボードに表示されます。これは情報を示唆するように提供されますが、CodeReady Workspaces サーバーでは考慮されません。

    icon

    ユーザーダッシュボードに表示される .svg ファイルへのリンク

    tags

    タグの一覧。タグには通常、スタックに含まれるツールが含まれます。

    devfile の例 meta.yaml

    displayName: Rust
    description: Rust Stack with Rust 1.39
    tags: ["Rust"]
    icon: https://www.eclipse.org/che/images/logo-eclipseche.svg
    globalMemoryLimit: 1686Mi
    Copy to Clipboard Toggle word wrap

  5. カスタム devfile レジストリーのコンテナーをビルドします。

    $ docker build -t my-devfile-registry .
    Copy to Clipboard Toggle word wrap

3.1.2. カスタムプラグインレジストリーのビルド

本セクションでは、カスタムプラグインレジストリーを構築する方法を説明します。以下の操作について説明します。

  • カスタムプラグインレジストリーのビルドに必要なソースコードのコピーを取得します。
  • 新しいプラグインの追加。
  • カスタムプラグインレジストリーをビルドします。

手順

  1. プラグインレジストリーリポジトリーのクローンを作成します。

    $ git clone git@github.com:redhat-developer/codeready-workspaces.git
    $ cd codeready-workspaces/dependencies/che-plugin-registry
    Copy to Clipboard Toggle word wrap
  2. ./che-plugin-registry/v3/plugins/ ディレクトリーで、最後のディレクトリーに新しいディレクトリー <publisher>/<plugin-name>/<plugin-version>/ および meta.yaml ファイルを作成します。

    プラグインのファイル編成

    ./che-plugin-registry/v3/plugins/
    ├── <publisher>
    │   └── <plugin-name>
    │       ├── <plugin-version>
    │       │   └── meta.yaml
    │       └── latest.txt
    Copy to Clipboard Toggle word wrap

  3. 有効な内容を meta.yaml ファイルに追加します。meta.yaml ファイル形式の詳細については、「Using a Visual Studio Code extension in CodeReady Workspaces」セクションまたは eclipse/che-plugin-registry リポジトリーの README.md ファイルを参照してください。
  4. 最新の <plugin-version> ディレクトリーの名前が含まれる latest.txt という名前のファイルを作成します。

    $ tree che-plugin-registry/v3/plugins/redhat/java/
    che-plugin-registry/v3/plugins/redhat/java/
    ├── 0.38.0
    │   └── meta.yaml
    ├── 0.43.0
    │   └── meta.yaml
    ├── 0.45.0
    │   └── meta.yaml
    ├── 0.46.0
    │   └── meta.yaml
    ├── 0.50.0
    │   └── meta.yaml
    └── latest.txt
    $ cat che-plugin-registry/v3/plugins/redhat/java/latest.txt
    0.50.0
    Copy to Clipboard Toggle word wrap
  5. カスタムプラグインレジストリーのコンテナーをビルドします。

    ./build.sh
    Copy to Clipboard Toggle word wrap

3.1.3. レジストリーのデプロイ

前提条件

本セクションで使用される my-plug-in-registry および my-devfile-registry イメージは、docker コマンドを使用してビルドされます。このセクションでは、これらのイメージが CodeReady Workspaces がデプロイされている OpenShift クラスターで利用できることを想定しています。

これは、例: Minikube で、docker build コマンドを実行する前にユーザーが eval $\{minikube docker-env} コマンドを実行します(Minishift の eval $\{minishift docker-env} コマンド)。

そうでない場合は、これらのイメージをコンテナーレジストリーにプッシュできます(例: quay.io、DockerHub、またはプライベートレジストリー)。

3.1.3.1. OpenShift でのレジストリーのデプロイ

手順

プラグインレジストリーをデプロイする OpenShift テンプレートは、GitHub リポジトリーの openshift/ ディレクトリーで利用できます。

  1. OpenShift テンプレートを使用してプラグインレジストリーをデプロイするには、以下のコマンドを実行します。

    NAMESPACE=<namespace-name>  
    1
    
    IMAGE_NAME="my-plug-in-registry"
    IMAGE_TAG="latest"
    oc new-app -f openshift/che-plugin-registry.yml \
     -n "$\{NAMESPACE}" \
     -p IMAGE="$\{IMAGE_NAME}" \
     -p IMAGE_TAG="$\{IMAGE_TAG}" \
     -p PULL_POLICY="IfNotPresent"
    Copy to Clipboard Toggle word wrap
    1
    crwctl を使用してインストールされている場合、デフォルトの CodeReady Workspaces プロジェクトは openshift-workspaces になります。この OperatorHub のインストール方法では、CodeReady Workspaces を現在のプロジェクトユーザーにデプロイします。
  2. devfile レジストリーには、GitHub リポジトリーの deploy/openshift/ ディレクトリーに OpenShift テンプレートがあります。これをデプロイするには、以下のコマンドを実行します。

    NAMESPACE=<namespace-name>  
    1
    
    IMAGE_NAME="my-devfile-registry"
    IMAGE_TAG="latest"
    oc new-app -f openshift/che-devfile-registry.yml \
     -n "$\{NAMESPACE}" \
     -p IMAGE="$\{IMAGE_NAME}" \
     -p IMAGE_TAG="$\{IMAGE_TAG}" \
     -p PULL_POLICY="IfNotPresent"
    Copy to Clipboard Toggle word wrap
    1
    crwctl を使用してインストールされている場合、デフォルトの CodeReady Workspaces プロジェクトは openshift-workspaces になります。この OperatorHub のインストール方法では、CodeReady Workspaces を現在のプロジェクトユーザーにデプロイします。
  3. レジストリーが OpenShift に正常にデプロイされているかどうかを確認します。

    1. 新規プラグインがプラグインレジストリーに適切に公開されることを確認するには、レジストリーパス /v3/plugins/index.json (または devfile レジストリーの /devfiles/index.json )への要求を行います。

      $ URL=$(oc get -o 'custom-columns=URL:.spec.rules[0].host' \
        -l app=che-plugin-registry route --no-headers)
      $ INDEX_JSON=$(curl -sSL http://${URL}/v3/plugins/index.json)
      $ echo ${INDEX_JSON} | grep -A 4 -B 5 "\"name\":\"my-plug-in\""
      ,\{
       "id": "my-org/my-plug-in/1.0.0",
       "displayName":"This is my first plug-in for CodeReady Workspaces",
       "version":"1.0.0",
       "type":"VS Code extension",
       "name":"my-plug-in",
       "description":"This plugin shows that we are able to add plugins to the registry",
       "publisher":"my-org",
       "links": \{"self":"/v3/plugins/my-org/my-plug-in/1.0.0" }
      }
      --
      --
      ,\{
       "id": "my-org/my-plug-in/latest",
       "displayName":"This is my first plug-in for CodeReady Workspaces",
       "version":"latest",
       "type":"VS Code extension",
       "name":"my-plug-in",
       "description":"This plugin shows that we are able to add plugins to the registry",
       "publisher":"my-org",
       "links": \{"self":"/v3/plugins/my-org/my-plug-in/latest" }
      }
      Copy to Clipboard Toggle word wrap
    2. CodeReady Workspaces サーバーがレジストリーの URL を参照していることを確認します。これには、che ConfigMap の CHE_WORKSPACE_PLUGIN__REGISTRY__URL パラメーターの値(または devfile レジストリーの CHE_WORKSPACE_DEVFILE__REGISTRY__URL )を比較します。

      $ oc get \
        -o "custom-columns=URL:.data['CHE_WORKSPACE_PLUGINREGISTRYURL']" \
        --no-headers cm/che
      URL
      http://che-plugin-registry-che.192.168.99.100.nip.io/v3
      Copy to Clipboard Toggle word wrap

      ルートの URL に置き換えます。

      $ oc get -o 'custom-columns=URL:.spec.rules[0].host' \
        -l app=che-plugin-registry route --no-headers
      che-plugin-registry-che.192.168.99.100.nip.io
      Copy to Clipboard Toggle word wrap
    3. 一致しない場合は、ConfigMap を更新し、CodeReady Workspaces サーバーを再起動します。

      $ oc edit cm/che
      (...)
      $ oc scale --replicas=0 deployment/che
      $ oc scale --replicas=1 deployment/che
      Copy to Clipboard Toggle word wrap

新規レジストリーがデプロイされ、CodeReady Workspaces サーバーがそれらを使用するように設定されている場合、新規プラグインはワークスペースの Plugin ビューで利用でき、新規スタックがユーザーダッシュボードの New Workspace タブに表示されます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat