3.3. カスタムレジストリーの実行

前提条件

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

これらのイメージは以下にプッシュできます。

  • quay.io または DockerHub などのパブリックコンテナーレジストリー。
  • プライベートレジストリー

3.3.1. OpenShift でのレジストリーのデプロイ

手順

プラグインレジストリーをデプロイする OpenShift テンプレートは、GitHub リポジトリーの deploy/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="Always"
    1
    crwctl を使用してインストールされている場合、デフォルトの CodeReady Workspaces プロジェクトは openshift-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="Always"
    1
    crwctl を使用してインストールされている場合、デフォルトの CodeReady Workspaces プロジェクトは openshift-workspaces になります。この OperatorHub のインストール方法では、CodeReady Workspaces を現在のプロジェクトユーザーにデプロイします。

検証手順

  1. 新規プラグインがプラグインレジストリーに適切に公開されることを確認するには、レジストリーパス /v3/plugins/index.json (または devfile レジストリーの /devfiles/index.json )への要求を行います。

    $ URL=$(oc  get route -l app=che,component=plugin-registry \
      -o 'custom-columns=URL:.spec.host' --no-headers)
    $ INDEX_JSON=$(curl -sSL http://${URL}/v3/plugins/index.json)
    $ echo ${INDEX_JSON} | jq '.[] | select(.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 plugins 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 plugins shows that we are able to add plugins to the registry...",
     "publisher":"my-org",
     "links": {"self":"/v3/plugins/my-org/my-plug-in/latest" }
    }
  2. CodeReady Workspaces サーバーがレジストリーの URL を参照していることを確認します。これを実行するには、che ConfigMap の CHE_WORKSPACE_PLUGIN__REGISTRY__URL パラメーターの値(または devfile レジストリーの CHE_WORKSPACE_DEVFILE__REGISTRY__URL )を比較します。

    $ oc  get cm/che \
      -o "custom-columns=URL:.data['CHE_WORKSPACE_PLUGIN__REGISTRY__URL']" \
      --no-headers
    URL
    http://che-plugin-registry-che.192.168.99.100.nip.io/v3

    ルートの URL に置き換えます。

    $ oc  get route -l app=che,component=plugin-registry \
      -o 'custom-columns=URL: .spec.host' --no-headers
    che-plugin-registry-che.192.168.99.100.nip.io
    1. 一致しない場合は、ConfigMap を更新し、CodeReady Workspaces サーバーを再起動します。

      $ oc  edit cm/che
      (...)
      $ oc  scale --replicas=0 deployment/che
      $ oc  scale --replicas=1 deployment/che
  3. 新規プラグインレジストリーがデプロイされ、CodeReady Workspaces サーバーがそれらを使用するように設定されている場合、UI は以下の場所に反映される必要があります。

    1. 新規プラグインは、ワークスペースの詳細の Devfile タブの chePlugin コンポーネントの補完で利用できます。
    2. 新規プラグインはワークスペースの Plugin Theia ビューで利用できます。
  4. 新規 devfile レジストリーがデプロイされると、CodeReady Workspaces サーバーがそれらを使用するように設定される場合、新規 devfile はユーザーダッシュボードの Get Started および Create Custom Workspace タブに表示されます。