第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 レジストリーをビルドします。
手順
devfile レジストリーリポジトリーのクローンを作成します。
git clone git@github.com:redhat-developer/codeready-workspaces.git cd codeready-workspaces/dependencies/che-devfile-registry
$ git clone git@github.com:redhat-developer/codeready-workspaces.git $ cd codeready-workspaces/dependencies/che-devfile-registry
Copy to Clipboard Copied! Toggle word wrap Toggle overflow .
/che-devfile-registry/devfiles/
ディレクトリーにサブディレクトリー<devfile-name>/
を作成し、devfile.yaml ファイルおよび
ファイルを追加します。meta.yaml
devfile のファイル組織
./che-devfile-registry/devfiles/ └── <devfile-name> ├── devfile.yaml └── meta.yaml
./che-devfile-registry/devfiles/ └── <devfile-name> ├── devfile.yaml └── meta.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
devfile.yaml
ファイルに有効なコンテンツを追加します。devfile 形式の詳細な説明は、「 Devfile を使用したワークスペースポータブルの使用」を 参照してください。 meta.yaml
ファイルが以下の構造に準拠していることを確認します。Expand 表1.1 devfile meta.yamlのパラメーター attribute description 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
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 Copied! Toggle word wrap Toggle overflow カスタム devfile レジストリーのコンテナーをビルドします。
docker build -t my-devfile-registry .
$ docker build -t my-devfile-registry .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.2. カスタムプラグインレジストリーのビルド リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、カスタムプラグインレジストリーを構築する方法を説明します。以下の操作について説明します。
- カスタムプラグインレジストリーのビルドに必要なソースコードのコピーを取得します。
- 新しいプラグインの追加。
- カスタムプラグインレジストリーをビルドします。
手順
プラグインレジストリーリポジトリーのクローンを作成します。
git clone git@github.com:redhat-developer/codeready-workspaces.git cd codeready-workspaces/dependencies/che-plugin-registry
$ git clone git@github.com:redhat-developer/codeready-workspaces.git $ cd codeready-workspaces/dependencies/che-plugin-registry
Copy to Clipboard Copied! Toggle word wrap Toggle overflow .
/che-plugin-registry/v3/plugins/
ディレクトリーに新しいディレクトリー <publisher>/<plugin-name> /<plugin-version>/
およびmeta.yaml
ファイルを最後のディレクトリーに作成します。プラグインのファイル組織
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
meta.yaml
ファイルに有効なコンテンツを追加します。meta.yaml ファイル形式の詳細は、「Using a Visual Studio Code extension in CodeReady Workspaces」セクションまたは
md ファイルを参照してください。eclipse/che-plugin-registry
リポジトリーの README. 最新の
<plugin-version>
ディレクトリーの名前を含むlatest.txt
という名前のファイルを作成します。例Copy to Clipboard Copied! Toggle word wrap Toggle overflow カスタムプラグインレジストリーのコンテナーをビルドします。
./build.sh
./build.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.3. レジストリーのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
前提条件
このセクションで使用される my-plug-in
イメージは、-registry
イメージおよび my-devfile-registrydocker
コマンドを使用してビルドされます。このセクションでは、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/
ディレクトリーにあります。
OpenShift テンプレートを使用してプラグインレジストリーをデプロイするには、以下のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- crwctl を使用してインストールした場合、デフォルトの CodeReady Workspaces プロジェクトは
ワークスペース
になります。OperatorHub のインストール方法では、CodeReady Workspaces をユーザー現在のプロジェクトにデプロイします。
devfile レジストリーには、GitHub リポジトリーの
deploy/openshift/
ディレクトリーに OpenShift テンプレートがあります。デプロイするには、以下のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- crwctl を使用してインストールした場合、デフォルトの CodeReady Workspaces プロジェクトは
ワークスペース
になります。OperatorHub のインストール方法では、CodeReady Workspaces をユーザー現在のプロジェクトにデプロイします。
レジストリーが OpenShift に正常にデプロイされているかどうかを確認します。
新規プラグインがプラグインレジストリーに正しく公開されていることを確認するには、レジストリーパス
/v3/plugins/index.json
に対して要求を行います(または devfile レジストリーの/devfiles/index.json
)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow CodeReady Workspaces サーバーがレジストリーの URL を参照することを確認します。これには、コード対応
ConfigMap
(または devfile レジストリーの CHE_WORKSPACE__REGISTRY__URL)で CHE
パラメーターを比較します。_WORKSPACE_PLUGIN
__REGISTRY__URLoc get \ -o "custom-columns=URL:.data['CHE_WORKSPACE_PLUGINREGISTRYURL']" \ --no-headers cm/che
$ 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 Copied! Toggle word wrap Toggle overflow ルートの URL で以下を行います。
oc get -o 'custom-columns=URL:.spec.rules[0].host' \ -l app=che-plugin-registry route --no-headers
$ 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 Copied! Toggle word wrap Toggle overflow 一致しない場合は、ConfigMap を更新し、CodeReady Workspaces サーバーを再起動します。
oc edit cm/che oc scale --replicas=0 deployment/che oc scale --replicas=1 deployment/che
$ oc edit cm/che (...) $ oc scale --replicas=0 deployment/che $ oc scale --replicas=1 deployment/che
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
新しいレジストリーをデプロイし、CodeReady Workspaces サーバーがそれらのレジストリーを使用するように設定すると、新しいプラグインがワークスペース の プラグインビューで利用でき、新しいスタックはユーザーダッシュボードの New Workspace タブに表示されます。