3.3. カスタムレジストリーの実行
前提条件
このセクションで使用される my-plug-in-registry
イメージおよび my-devfile-registry
イメージは、docker
コマンドを使用して構築されます。このセクションでは、これらのイメージが CodeReady Workspaces がデプロイされている OpenShift クラスターで利用できることを想定しています。
これらのイメージは以下にプッシュできます。
-
quay.io
または DockerHub などのパブリックコンテナーレジストリー。 - プライベートレジストリー
3.3.1. OpenShift でのレジストリーのデプロイ
手順
プラグインレジストリーをデプロイする OpenShift テンプレートは、GitHub リポジトリーの openshift/
ディレクトリーで利用できます。
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"
- 1
- crwctl を使用してインストールされている場合、デフォルトの CodeReady Workspaces プロジェクトは
workspaces
になります。この OperatorHub のインストール方法では、CodeReady Workspaces を現在のプロジェクトユーザーにデプロイします。
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"
- 1
- crwctl を使用してインストールされている場合、デフォルトの CodeReady Workspaces プロジェクトは
workspaces
になります。この OperatorHub のインストール方法では、CodeReady Workspaces を現在のプロジェクトユーザーにデプロイします。
レジストリーが OpenShift に正常にデプロイされたかどうかを確認します。
新規プラグインがプラグインレジストリーに正しく公開されることを確認するには、レジストリーパス
/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" } }
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
ルートの 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
一致しない場合は、ConfigMap を更新し、CodeReady Workspaces サーバーを再起動します。
$ oc edit cm/che (...) $ oc scale --replicas=0 deployment/che $ oc scale --replicas=1 deployment/che
新規レジストリーがデプロイされ、CodeReady Workspaces サーバーがそのレジストリーを使用するように設定されている場合、新しいプラグインはワークスペースの Plugin ビューに利用でき、新規スタックはユーザーダッシュボードの New Workspace タブに表示されます。