第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-registryCopy to Clipboard Copied! Toggle word wrap Toggle overflow .
/che-devfile-registry/devfiles/ディレクトリーにサブディレクトリー<devfile-name>/を作成し、devfile.yaml ファイルおよびファイルを追加します。meta.yamldevfile のファイル組織
./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 形式の詳細な説明は、「 Devfile を使用したワークスペースポータブルの使用」を 参照してください。 meta.yamlファイルが以下の構造に準拠していることを確認します。Expand 表1.1 devfile meta.yamlのパラメーター attribute description descriptionユーザーダッシュボードに表示される説明。
displayNameユーザーダッシュボードに表示される名前。
globalMemoryLimitdevfile によって起動されるすべてのコンポーネントが使用する予想されるメモリーの合計。この数は、ユーザーダッシュボードに表示されます。これは通知され、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: 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
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-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」セクションまたはmd ファイルを参照してください。eclipse/che-plugin-registryリポジトリーの README. 最新の
<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
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 URL http://che-plugin-registry-che.192.168.99.100.mycluster.mycompany.com/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.mycluster.mycompany.com/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.mycluster.mycompany.com
$ 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.comCopy 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 サーバーがそれらのレジストリーを使用するように設定すると、新しいプラグインがワークスペース の プラグインビューで利用でき、新しいスタックはユーザーダッシュボードの New Workspace タブに表示されます。