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


CodeReady Workspaces 2.3 には、プラグインレジストリーと devfile レジストリーの 2 つのレジストリーが導入されています。CodeReady Workspaces プラグインおよび CodeReady Workspaces devfiles のメタデータが公開される静的な 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 つの方法を説明します。

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

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

1.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 形式の詳細な説明は、「 Devfile を使用したワークスペースポータブルの使用」を 参照してください。
  4. meta.yaml ファイルが以下の構造に準拠していることを確認します。

    Expand
    表1.1 devfile meta.yamlのパラメーター
    attributedescription

    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

1.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

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

前提条件

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

たとえば、docker ビルドコマンド を実行する前には true の場合、ユーザーは eval $\{minikube docker-env} コマンドを実行します(または、Minishift の場合は eval $\{minishift docker-env} コマンド)。

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

1.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 プロジェクトは ワークスペース になります。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 プロジェクトは ワークスペース になります。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 を参照することを確認します。これには、コード対応 ConfigMap (または devfile レジストリーの CHE _WORKSPACE__REGISTRY__URL)で CHE _WORKSPACE_PLUGIN __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.mycluster.mycompany.com/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.mycluster.mycompany.com
      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 サーバーがそれらのレジストリーを使用するように設定すると、新しいプラグインがワークスペース プラグインビューで利用でき、新しいスタックはユーザーダッシュボードの New Workspace タブに表示されます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat