第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 レジストリーをビルドします。
手順
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-registryCopy 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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
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 を参照して ください。 meta.yamlファイルが以下の構造に準拠することを確認します。Expand 表3.1 devfile meta.yaml のパラメーター 属性 説明 descriptionユーザーダッシュボードに表示される説明。
displayNameユーザーダッシュボードに表示される名前。
globalMemoryLimitdevfile が起動するすべてのコンポーネントによって消費されることが予想されるメモリーの合計。この数字はユーザーダッシュボードに表示されます。これは情報を示唆するように提供されますが、CodeReady Workspaces サーバーでは考慮されません。
iconユーザーダッシュボードに表示される
.svgファイルへのリンクtagsタグの一覧。タグには通常、スタックに含まれるツールが含まれます。
devfile の例
meta.yamldisplayName: 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: 1686MiCopy 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
3.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-registryCopy 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」セクションまたはeclipse/che-plugin-registryリポジトリーの README.md ファイルを参照してください。 最新の
<plugin-version>ディレクトリーの名前が含まれるlatest.txtという名前のファイルを作成します。例Copy to Clipboard Copied! Toggle word wrap Toggle overflow カスタムプラグインレジストリーのコンテナーをビルドします。
./build.sh
./build.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow
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/ ディレクトリーで利用できます。
OpenShift テンプレートを使用してプラグインレジストリーをデプロイするには、以下のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- crwctl を使用してインストールされている場合、デフォルトの CodeReady Workspaces プロジェクトは
openshift-workspacesになります。この OperatorHub のインストール方法では、CodeReady Workspaces を現在のプロジェクトユーザーにデプロイします。
devfile レジストリーには、GitHub リポジトリーの
deploy/openshift/ディレクトリーに OpenShift テンプレートがあります。これをデプロイするには、以下のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- crwctl を使用してインストールされている場合、デフォルトの CodeReady Workspaces プロジェクトは
openshift-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 を参照していることを確認します。これには、
cheConfigMap の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
$ 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/v3Copy 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 che-plugin-registry-che.192.168.99.100.nip.io
$ 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.ioCopy 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/cheCopy to Clipboard Copied! Toggle word wrap Toggle overflow
新規レジストリーがデプロイされ、CodeReady Workspaces サーバーがそれらを使用するように設定されている場合、新規プラグインはワークスペースの Plugin ビューで利用でき、新規スタックがユーザーダッシュボードの New Workspace タブに表示されます。