2.3. Red Hat Developer Hub にサードパーティーのプラグインをインストールする


RHDH アプリケーションを再構築せずに、Red Hat Developer Hub にサードパーティーのプラグインをインストールできます。

dynamic-plugin-config.yaml ファイルの場所は、デプロイメント方法により異なります。詳細は、Red Hat Developer Hub Operator を使用した動的プラグインのインストール および Helm チャートを使用した動的プラグインのインストール を参照してください。

プラグインは、dynamic-plugin-config.yaml ファイル内の plugins 配列で定義されます。各プラグインは、次のプロパティーを持つオブジェクトとして表されます。

  • package: プラグインのパッケージ定義。OCI イメージ、TGZ ファイル、JavaScript パッケージ、またはディレクトリーパスになります。
  • disabled: プラグインが有効か無効かを示すブール値。
  • integrity: パッケージの整合性ハッシュ。TGZ ファイルと JavaScript パッケージに必要です。
  • pluginConfig: プラグインの設定。バックエンドプラグインの場合、これはオプションですが、フロントエンドプラグインの場合は必須です。pluginConfigapp-config.yaml ファイルのフラグメントであり、追加されたプロパティーは RHDH app-config.yaml ファイルとマージされます。
注記

別のディレクトリーから動的プラグインをロードすることもできますが、これは開発またはテスト目的であり、RHDH コンテナーイメージに含まれるプラグインを除き、実稼働環境では推奨されません。詳細は、3章RHDH コンテナーイメージに追加されたプラグインの有効化 を参照してください。

2.3.1. OCI イメージとしてパッケージ化されたプラグインをロードする

前提条件

手順

  1. dynamic-plugins.yaml ファイルで、次の形式で oci:// 接頭辞を持つプラグインを定義します。

    oci://<image-name>:<tag>!<plugin-name>

    dynamic-plugins.yaml ファイルの設定例

    plugins:
      - disabled: false
        package: oci://quay.io/example/image:v0.0.1!backstage-plugin-myplugin

  2. REGISTRY_AUTH_FILE 環境変数をレジストリー設定ファイルのパスに設定して、プライベートレジストリーの認証を設定します。たとえば、~/.config/containers/auth.json または ~/.docker/config.json です。
  3. 整合性チェックを実行するには、次のように dynamic-plugins.yaml ファイル内のタグの代わりにイメージダイジェストを使用します。

    dynamic-plugins.yaml ファイルの設定例

    plugins:
      - disabled: false
        package: oci://quay.io/example/image@sha256:28036abec4dffc714394e4ee433f16a59493db8017795049c831be41c02eb5dc!backstage-plugin-myplugin

  4. 変更を適用するには、RHDH アプリケーションを再起動します。

2.3.2. TGZ ファイルとしてパッケージ化されたプラグインをロードする

前提条件

手順

  1. 次の例を使用して、dynamic-plugins.yaml ファイルにアーカイブ URL とその整合性ハッシュを指定します。

    dynamic-plugins.yaml ファイルの設定例

    plugins:
      - disabled: false
        package: https://example.com/backstage-plugin-myplugin-1.0.0.tgz
        integrity: sha512-9WlbgEdadJNeQxdn1973r5E4kNFvnT9GjLD627GWgrhCaxjCmxqdNW08cj+Bf47mwAtZMt1Ttyo+ZhDRDj9PoA==

  2. 変更を適用するには、RHDH アプリケーションを再起動します。

2.3.3. JavaScript パッケージとしてパッケージ化されたプラグインを読み込む

前提条件

手順

  1. 次のコマンドを実行して、NPM レジストリーから整合性ハッシュを取得します。

    npm view --registry <registry-url> <npm package>@<version> dist.integrity
  2. 次のように、dynamic-plugins.yaml ファイルでパッケージ名、バージョン、およびその整合性ハッシュを指定します。

    dynamic-plugins.yaml ファイルの設定例

    plugins:
      - disabled: false
        package: @example/backstage-plugin-myplugin@1.0.0
        integrity: sha512-9WlbgEdadJNeQxdn1973r5E4kNFvnT9GjLD627GWgrhCaxjCmxqdNW08cj+Bf47mwAtZMt1Ttyo+ZhDRDj9PoA==

  3. カスタム NPM レジストリーを使用している場合は、レジストリー URL と認証の詳細を含む .npmrc ファイルを作成します。

    .npmrc ファイルの例コード

    registry=<registry-url>
    //<registry-url>:_authToken=<auth-token>

  4. OpenShift Container Platform または Kubernetes を使用する場合は以下のようになります。

    • Helm チャートを使用してシークレットを作成して .npmrc ファイルを追加します。以下に例を示します。

      シークレット設定の例

      apiVersion: v1
      kind: Secret
      metadata:
        name: <release_name>-dynamic-plugins-npmrc 
      1
      
      type: Opaque
      stringData:
        .npmrc: |
          registry=<registry-url>
          //<registry-url>:_authToken=<auth-token>

      1
      <release_name> は Helm リリース名に置き換えます。この名前は、Kubernetes クラスター内の各チャートインストールの一意の識別子です。
    • RHDH Helm チャートの場合は、自動マウントのために次の形式を使用してシークレットに名前を付けます。

      <release_name>-dynamic-plugins-npmrc

  5. 変更を適用するには、RHDH アプリケーションを再起動します。

2.3.4. Red Hat Developer Hub にサードパーティーのプラグインをインストールする例

このセクションでは、Todo プラグイン を Developer Hub に統合するプロセスを説明します。

  1. サードパーティーのプラグインのソースコードを取得する: プラグインのリポジトリーのクローンを複製し、Todo プラグイン ディレクトリーに移動します。

    サードパーティーのプラグインのソースコードを入手する

    $ git clone https://github.com/backstage/community-plugins
    $ cd community-plugins/workspaces/todo
    $ yarn install

  2. バックエンドおよびフロントエンドプラグインをエクスポートする: 次のコマンドを実行して、バックエンドプラグインをビルドし、動的読み込み用のパッケージ依存関係を調整し、自己完結型の設定スキーマを生成します。

    バックエンドプラグインをエクスポートする

    $ cd todo-backend
    $ npx @janus-idp/cli@latest package export-dynamic-plugin

    バックエンドプラグインコマンドのエクスポートの出力

    Building main package
      executing     yarn build ✔
    Packing main package to dist-dynamic/package.json
    Customizing main package in dist-dynamic/package.json for dynamic loading
      moving @backstage/backend-common to peerDependencies
      moving @backstage/backend-openapi-utils to peerDependencies
      moving @backstage/backend-plugin-api to peerDependencies
      moving @backstage/catalog-client to peerDependencies
      moving @backstage/catalog-model to peerDependencies
      moving @backstage/config to peerDependencies
      moving @backstage/errors to peerDependencies
      moving @backstage/integration to peerDependencies
      moving @backstage/plugin-catalog-node to peerDependencies
    Installing private dependencies of the main package
       executing     yarn install --no-immutable ✔
    Validating private dependencies
    Validating plugin entry points
    Saving self-contained config schema in /Users/user/Code/community-plugins/workspaces/todo/plugins/todo-backend/dist-dynamic/dist/configSchema.json

    次のコマンドを実行して、デフォルトの動的 UI 設定を設定し、フロントエンドプラグインアセットを作成し、フロントエンドプラグインの設定スキーマを生成できます。

    フロントエンドプラグインをエクスポートする

    $ cd ../todo
    $ npx @janus-idp/cli@latest package export-dynamic-plugin

    フロントエンドプラグインコマンドのエクスポートの出力

    No scalprum config. Using default dynamic UI configuration:
    {
      "name": "backstage-community.plugin-todo",
      "exposedModules": {
        "PluginRoot": "./src/index.ts"
      }
    }
    If you wish to change the defaults, add "scalprum" configuration to plugin "package.json" file, or use the '--scalprum-config' option to specify an external config.
    Packing main package to dist-dynamic/package.json
    Customizing main package in dist-dynamic/package.json for dynamic loading
    Generating dynamic frontend plugin assets in /Users/user/Code/community-plugins/workspaces/todo/plugins/todo/dist-dynamic/dist-scalprum
      263.46 kB  dist-scalprum/static/1417.d5271413.chunk.js
    ...
    ...
    ...
      250 B      dist-scalprum/static/react-syntax-highlighter_languages_highlight_plaintext.0b7d6592.chunk.js
    Saving self-contained config schema in /Users/user/Code/community-plugins/workspaces/todo/plugins/todo/dist-dynamic/dist-scalprum/configSchema.json

  3. サードパーティーのプラグインをパッケージ化して公開する: 次のコマンドを実行してワークスペースディレクトリーに移動し、動的プラグインをパッケージ化して OCI イメージを構築します。

    OCI イメージをビルドする

    $ cd ../..
    $ npx @janus-idp/cli@latest package package-dynamic-plugins --tag quay.io/user/backstage-community-plugin-todo:v0.1.1

    OCI イメージビルドコマンドの出力

      executing     podman --version ✔
    Using existing 'dist-dynamic' directory at plugins/todo
    Using existing 'dist-dynamic' directory at plugins/todo-backend
    Copying 'plugins/todo/dist-dynamic' to '/var/folders/5c/67drc33d0018j6qgtzqpcsbw0000gn/T/package-dynamic-pluginsmcP4mU/backstage-community-plugin-todo
    No plugin configuration found at undefined create this file as needed if this plugin requires configuration
    Copying 'plugins/todo-backend/dist-dynamic' to '/var/folders/5c/67drc33d0018j6qgtzqpcsbw0000gn/T/package-dynamic-pluginsmcP4mU/backstage-community-plugin-todo-backend-dynamic
    No plugin configuration found at undefined create this file as needed if this plugin requires configuration
    Writing plugin registry metadata to '/var/folders/5c/67drc33d0018j6qgtzqpcsbw0000gn/T/package-dynamic-pluginsmcP4mU/index.json'
    Creating image using podman
      executing     echo "from scratch
    COPY . .
    " | podman build --annotation com.redhat.rhdh.plugins='[{"backstage-community-plugin-todo":{"name":"@backstage-community/plugin-todo","version":"0.2.40","description":"A Backstage plugin that lets you browse TODO comments in your source code","backstage":{"role":"frontend-plugin","pluginId":"todo","pluginPackages":["@backstage-community/plugin-todo","@backstage-community/plugin-todo-backend"]},"homepage":"https://backstage.io","repository":{"type":"git","url":"https://github.com/backstage/community-plugins","directory":"workspaces/todo/plugins/todo"},"license":"Apache-2.0"}},{"backstage-community-plugin-todo-backend-dynamic":{"name":"@backstage-community/plugin-todo-backend","version":"0.3.19","description":"A Backstage backend plugin that lets you browse TODO comments in your source code","backstage":{"role":"backend-plugin","pluginId":"todo","pluginPackages":["@backstage-community/plugin-todo","@backstage-community/plugin-todo-backend"]},"homepage":"https://backstage.io","repository":{"type":"git","url":"https://github.com/backstage/community-plugins","directory":"workspaces/todo/plugins/todo-backend"},"license":"Apache-2.0"}}]' -t 'quay.io/user/backstage-community-plugin-todo:v0.1.1' -f - .
        ✔
    Successfully built image quay.io/user/backstage-community-plugin-todo:v0.1.1 with following plugins:
      backstage-community-plugin-todo
      backstage-community-plugin-todo-backend-dynamic
    
    Here is an example dynamic-plugins.yaml for these plugins:
    
    plugins:
      - package: oci://quay.io/user/backstage-community-plugin-todo:v0.1.1!backstage-community-plugin-todo
        disabled: false
      - package: oci://quay.io/user/backstage-community-plugin-todo:v0.1.1!backstage-community-plugin-todo-backend-dynamic
        disabled: false

    OCI イメージをコンテナーレジストリーにプッシュする:

    $ podman push quay.io/user/backstage-community-plugin-todo:v0.1.1

    OCI イメージコマンドのプッシュの出力

    Getting image source signatures
    Copying blob sha256:86a372c456ae6a7a305cd464d194aaf03660932efd53691998ab3403f87cacb5
    Copying config sha256:3b7f074856ecfbba95a77fa87cfad341e8a30c7069447de8144aea0edfcb603e
    Writing manifest to image destination

  4. サードパーティーのプラグインをインストールして設定する: dynamic-plugins.yaml ファイルに次のプラグイン定義を追加します。

    dynamic-plugins.yaml ファイル内のプラグイン定義

    packages:
     - package: oci://quay.io/user/backstage-community-plugin-todo:v0.1.1!backstage-community-plugin-todo
       pluginConfig:
         dynamicPlugins:
           frontend:
             backstage-community.plugin-todo:
               mountPoints:
                 - mountPoint: entity.page.todo/cards
                   importName: EntityTodoContent
               entityTabs:
                 - path: /todo
                   title: Todo
                   mountPoint: entity.page.todo
     - package: oci://quay.io/user/backstage-community-plugin-todo:v0.1.1!backstage-community-plugin-todo-backend-dynamic
       disabled: false

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る