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. <plug-in> プラグインはプラグインレジストリーで利用できます。

    例3.5 プラグインレジストリー API を要求する <plug-in> を検索します。

    $ 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 == "<plug-in>")'
  2. <devfile> devfile は devfile レジストリーで利用できます。

    例3.6 devfile レジストリー API を要求する <devfile> を検索します。

    $ URL=$(oc  get route -l app=che,component=devfile-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 == "<devfile>")'
  3. CodeReady Workspaces サーバーはプラグインレジストリーの URL を参照します。

    例3.7 che ConfigMap の CHE_WORKSPACE_PLUGIN__REGISTRY__URL パラメーターの値をプラグインレジストリールートの URL と比較します。

    che ConfigMap の CHE_WORKSPACE_PLUGIN__REGISTRY__URL パラメーターの値を取得します。

    $ oc  get cm/che \
      -o "custom-columns=URL:.data['CHE_WORKSPACE_PLUGIN__REGISTRY__URL']" \
      --no-headers

    プラグインレジストリールートの URL を取得します。

    $ oc  get route -l app=che,component=plugin-registry \
      -o 'custom-columns=URL: .spec.host' --no-headers

  4. CodeReady Workspaces サーバーは devfile レジストリーの URL を参照します。

    例3.8 che ConfigMap の CHE_WORKSPACE_DEVFILE__REGISTRY__URL パラメーターの値を devfile レジストリールートの URL と比較します。

    che ConfigMap の CHE_WORKSPACE_DEVFILE__REGISTRY__URL パラメーターの値を取得します。

    $ oc  get cm/che \
      -o "custom-columns=URL:.data['CHE_WORKSPACE_DEVFILE__REGISTRY__URL']" \
      --no-headers

    devfile レジストリールートの URL を取得します。

    $ oc  get route -l app=che,component=devfile-registry \
      -o 'custom-columns=URL: .spec.host' --no-headers

  5. 値が一致しない場合は、ConfigMap を更新し、CodeReady Workspaces サーバーを再起動します。

    $ oc  edit cm/codeready
    (...)
    $ oc  scale --replicas=0 deployment/codeready
    $ oc  scale --replicas=1 deployment/codeready

  • プラグインは以下で使用できます。

    • ワークスペースの詳細の Devfile タブの chePlugin コンポーネントの補完
    • ワークスペースの Plugin Che-Theia ビュー

  • devfile は、ユーザーダッシュボードの Get Started および Create Custom Workspace タブで利用できます。