Red Hat Developer Hub でのプラグインのインストールと表示
Red Hat Developer Hub でのプラグインのインストール
概要
第1章 Red Hat Developer Hub での動的プラグインのインストール
動的プラグインのサポートは、バックエンドプラグインマネージャーパッケージに基づいています。このパッケージは、設定されたルートディレクトリー (app-config.yaml
ファイルの dynamicPlugins.rootDirectory
) で動的プラグインパッケージをスキャンし、動的にロードするサービスです。
Red Hat Developer Hub に事前にインストールされている動的プラグインを使用することも、パブリック NPM レジストリーから外部動的プラグインをインストールすることもできます。
1.1. Red Hat Developer Hub Operator を使用した動的プラグインのインストール
動的プラグインの設定は、Backstage
カスタムリソース (CR) が参照できる ConfigMap
オブジェクトに保存できます。
pluginConfig
フィールドが環境変数を参照する場合は、<my_product_secrets>
シークレットで変数を定義する必要があります。
手順
- OpenShift Container Platform Web コンソールから、ConfigMaps タブを選択します。
- Create ConfigMap をクリックします。
Create ConfigMap ページで、Configure via の YAML view オプションを選択し、必要に応じてファイルを編集します。
GitHub 動的プラグインを使用した
ConfigMap
オブジェクトの例kind: ConfigMap apiVersion: v1 metadata: name: dynamic-plugins-rhdh data: dynamic-plugins.yaml: | includes: - dynamic-plugins.default.yaml plugins: - package: './dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic' disabled: false pluginConfig: catalog: providers: github: organization: "${GITHUB_ORG}" schedule: frequency: { minutes: 1 } timeout: { minutes: 1 } initialDelay: { seconds: 100 }
kind: ConfigMap apiVersion: v1 metadata: name: dynamic-plugins-rhdh data: dynamic-plugins.yaml: | includes: - dynamic-plugins.default.yaml plugins: - package: './dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic' disabled: false pluginConfig: catalog: providers: github: organization: "${GITHUB_ORG}" schedule: frequency: { minutes: 1 } timeout: { minutes: 1 } initialDelay: { seconds: 100 }
Copy to Clipboard Copied! - Create をクリックします。
- Topology ビューに移動します。
使用する Red Hat Developer Hub インスタンスのオーバーフローメニューをクリックし、Edit Backstage を選択して、Red Hat Developer Hub インスタンスの YAML ビューを読み込みます。
dynamicPluginsConfigMapName
フィールドをBackstage
CR に追加します。以下に例を示します。apiVersion: rhdh.redhat.com/v1alpha3 kind: Backstage metadata: name: my-rhdh spec: application: # ... dynamicPluginsConfigMapName: dynamic-plugins-rhdh # ...
apiVersion: rhdh.redhat.com/v1alpha3 kind: Backstage metadata: name: my-rhdh spec: application: # ... dynamicPluginsConfigMapName: dynamic-plugins-rhdh # ...
Copy to Clipboard Copied! - Save をクリックします。
- Topology ビューに戻り、Red Hat Developer Hub Pod が起動するまで待ちます。
- Open URL アイコンをクリックして、新しい設定変更を適用した Red Hat Developer Hub プラットフォームの使用を開始します。
検証
Red Hat Developer Hub のルート URL に
/api/dynamic-plugins-info/loaded-plugins
を追加し、プラグインのリストをチェックして、動的プラグイン設定がロードされていることを確認します。プラグインの例リスト
[ { "name": "backstage-plugin-catalog-backend-module-github-dynamic", "version": "0.5.2", "platform": "node", "role": "backend-plugin-module" }, { "name": "backstage-plugin-techdocs", "version": "1.10.0", "role": "frontend-plugin", "platform": "web" }, { "name": "backstage-plugin-techdocs-backend-dynamic", "version": "1.9.5", "platform": "node", "role": "backend-plugin" }, ]
[ { "name": "backstage-plugin-catalog-backend-module-github-dynamic", "version": "0.5.2", "platform": "node", "role": "backend-plugin-module" }, { "name": "backstage-plugin-techdocs", "version": "1.10.0", "role": "frontend-plugin", "platform": "web" }, { "name": "backstage-plugin-techdocs-backend-dynamic", "version": "1.9.5", "platform": "node", "role": "backend-plugin" }, ]
Copy to Clipboard Copied!
1.2. Helm チャートを使用した動的プラグインのインストール
柔軟なインストール方法である Helm チャートを使用して、Developer Hub インスタンスをデプロイできます。Helm チャートを使用すると、コードを再コンパイルしたりコンテナーを再ビルドしたりすることなく、動的プラグインを Developer Hub インスタンスにサイドロードできます。
Helm を使用して Developer Hub に動的プラグインをインストールするには、Helm チャートに次の global.dynamic
パラメーターを追加します。
plugins
: インストールを目的とした動的プラグインのリスト。デフォルトでは、リストは空です。プラグインのリストには次のフィールドを入力できます。-
package
: インストールする動的プラグインパッケージのパッケージ仕様。パッケージは、ローカルまたは外部の動的プラグインのインストールに使用できます。ローカルインストールの場合は、動的プラグインを含むローカルフォルダーへのパスを使用します。外部インストールの場合は、パブリック NPM リポジトリーのパッケージ仕様を使用します。 -
integrity
(外部パッケージの場合に必要): パッケージ固有の<alg>-<digest>
形式の整合性チェックサム。サポートされるアルゴリズムは、sha256
、sha384
、sha512
です。 -
pluginConfig
: プラグイン固有のapp-config.yaml
YAML フラグメント (オプション)。詳細は、プラグインの設定を参照してください。 -
disabled
:true
に設定すると、動的プラグインが無効になります。デフォルトはfalse
です。 -
forceDownload
: キャッシュを回避してプラグインの再インストールを強制するには、値をtrue
に設定します。デフォルト値はfalse
です。 pullPolicy
:forceDownload
パラメーターに似ており、他のイメージコンテナープラットフォームと同じです。このキーには次のいずれかの値を使用できます。-
Always
: リモートレジストリー内のイメージダイジェストを比較し、変更されている場合は、プラグインが以前にダウンロードされていたとしても、アーティファクトをダウンロードします。 IfNotPresent
: dynamic-plugins-root フォルダーにアーティファクトがまだ存在しない場合に、イメージダイジェストをチェックせずにダウンロードします。注記pullPolicy
設定は NPM ダウンロード方法にも適用されますが、Always
ではダイジェストチェックなしでリモートのアーティファクトがダウンロードされます。その場合も既存のforceDownload
オプションは機能しますが、pullPolicy
オプションが優先されます。forceDownload
オプションは、今後の Developer Hub リリースで非推奨となる可能性があります。
-
-
-
includes
: 同じ構文を使用する YAML ファイルのリスト。
includes
ファイル内の plugins
リストは、main Helm values の plugins
リストとマージされます。プラグインパッケージが両方の plugins
リストに記載されている場合は、main Helm values の plugins
フィールドが includes
ファイルの plugins
フィールドをオーバーライドします。デフォルト設定には、dynamic-plugins.default.yaml
ファイルが含まれています。このファイルには、デフォルトで有効か無効かに関係なく、Developer Hub に事前にインストールされているすべての動的プラグインが含まれます。
1.2.1. 動的プラグインインストール用の Helm チャート設定の例
次の例は、特定の種類の動的プラグインインストール用に Helm チャートを設定する方法を示しています。
外部プラグインに特定の設定が必要な場合に、ローカルプラグインと外部プラグインを設定する
global: dynamic: plugins: - package: <alocal package-spec used by npm pack> - package: <external package-spec used by npm pack> integrity: sha512-<some hash> pluginConfig: ...
global:
dynamic:
plugins:
- package: <alocal package-spec used by npm pack>
- package: <external package-spec used by npm pack>
integrity: sha512-<some hash>
pluginConfig: ...
含まれるファイルからプラグインを無効にする
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: <some imported plugins listed in dynamic-plugins.default.yaml> disabled: true
global:
dynamic:
includes:
- dynamic-plugins.default.yaml
plugins:
- package: <some imported plugins listed in dynamic-plugins.default.yaml>
disabled: true
含まれるファイルからプラグインを有効にする
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: <some imported plugins listed in dynamic-plugins.custom.yaml> disabled: false
global:
dynamic:
includes:
- dynamic-plugins.default.yaml
plugins:
- package: <some imported plugins listed in dynamic-plugins.custom.yaml>
disabled: false
含まれるファイルで無効になっているプラグインを有効にする
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: <some imported plugins listed in dynamic-plugins.custom.yaml> disabled: false
global:
dynamic:
includes:
- dynamic-plugins.default.yaml
plugins:
- package: <some imported plugins listed in dynamic-plugins.custom.yaml>
disabled: false
1.3. エアギャップ環境での動的プラグインのインストール
カスタム NPM レジストリーをセットアップすることで、エアギャップ環境に外部プラグインをインストールできます。
Helm チャートを使用して、動的プラグインパッケージの NPM レジストリー URL と認証情報を設定できます。npm pack
を使用して取得した動的プラグインパッケージの場合は、.npmrc
ファイルを使用できます。
Helm チャートを使用して、シークレットを作成して .npmrc
ファイルを NPM レジストリーに追加します。以下に例を示します。
apiVersion: v1 kind: Secret metadata: name: <release_name>-dynamic-plugins-npmrc type: Opaque stringData: .npmrc: | registry=<registry-url> //<registry-url>:_authToken=<auth-token> ...
apiVersion: v1
kind: Secret
metadata:
name: <release_name>-dynamic-plugins-npmrc
type: Opaque
stringData:
.npmrc: |
registry=<registry-url>
//<registry-url>:_authToken=<auth-token>
...
- 1
<release_name>
は Helm リリース名に置き換えます。この名前は、Kubernetes クラスター内の各チャートインストールの一意の識別子です。
第2章 Red Hat Developer Hub のサードパーティープラグイン
サードパーティーの動的プラグインを Red Hat Developer Hub に統合すると、ソースコードを変更したり、再構築したりせずに機能を強化できます。これらのプラグインを追加するには、派生パッケージとしてエクスポートします。
プラグインパッケージをエクスポートするときは、Developer Hub 環境との関係に応じて、依存関係が正しくバンドルされているか、共有としてマークされていることを確認する必要があります。
サードパーティープラグインを Developer Hub に統合するには、以下を実行します。
- まず、プラグインのソースコードを取得します。
- プラグインを動的プラグインパッケージとしてエクスポートします。「Red Hat Developer Hub でのサードパーティープラグインのエクスポート」を参照してください。
- 動的プラグインをパッケージ化して公開します。「サードパーティーのプラグインを動的プラグインとしてパッケージ化して公開する」を参照してください。
- Developer Hub 環境にプラグインをインストールします。「Red Hat Developer Hub にサードパーティーのプラグインをインストールする」を参照してください。
2.1. Red Hat Developer Hub でのサードパーティープラグインのエクスポート
Red Hat Developer Hub でプラグインを使用するには、派生動的プラグインパッケージとしてプラグインをエクスポートできます。これらのパッケージにはプラグインコードと依存関係が含まれ、Developer Hub への動的プラグイン統合の準備が整っています。
前提条件
-
@janus-idp/cli
パッケージがインストールされている。最新の機能と修正との互換性は、最新バージョン (@latest
タグ) を使用してください。 - Node.js と NPM がインストールされ、設定されている。
- サードパーティーのプラグインが、Red Hat Developer Hub のバージョンと互換性がある。詳細は、バージョン互換性マトリックス を参照してください。
サードパーティーのプラグインには、必要なすべてのメタデータと依存関係を含む有効な
package.json
ファイルがルートディレクトリーに存在する。- バックエンドプラグイン
動的プラグインのサポートとの互換性を確保し、動的プラグインとして使用できるようにするには、既存のバックエンドプラグインに新しい Backstage バックエンドシステムとの互換性が必要です。さらに、これらのプラグインは専用の CLI コマンドを使用して再構築する必要があります。
新しい Backstage バックエンドシステムエントリーポイント (
createBackendPlugin()
またはcreateBackendModule()
を使用して作成) は、メインパッケージまたはalpha
パッケージ (プラグインインスタンスのサポートがalpha
API を使用して引き続き提供されている場合) のいずれかからデフォルトのエクスポートとしてエクスポートする必要があります。これにより、プラグインインスタンスの標準プラグイン開発ガイドラインに加えて追加の要件が追加されることはありません。動的エクスポートメカニズムはプライベート依存関係を識別し、
package.json
ファイルのbundleDependencies
フィールドを設定します。このエクスポートメカニズムにより、動的プラグインパッケージが自己完結型パッケージとして公開され、そのプライベート依存関係がプライベートnode_modules
フォルダーにバンドルされることが保証されます。特定のプラグイン依存関係では、派生パッケージで特定の処理が必要になります。たとえば、以下のようになります。
共有依存関係 は RHDH アプリケーションにより提供され、動的プラグインパッケージにバンドルされずに、
package.json
ファイルにpeerDependencies
としてリストされます。たとえば、デフォルトでは、すべての@backstage
スコープパッケージが共有されます。--shared-package
フラグを使用して、Red Hat Developer Hub アプリケーションにより提供され、動的プラグインパッケージにバンドルされていないことが予想される共有依存関係を指定できます。@backstage
パッケージをプライベートとして扱うには、否定接頭辞 (!
) を使用します。たとえば、プラグインが Red Hat Developer Hub アプリケーションで提供されていない@backstage
のパッケージに依存している場合などです。埋め込まれた依存関係 は、依存関係が最上位レベルに引き上げられた状態で動的プラグインパッケージにバンドルされます。デフォルトでは、
-node
または-common
接尾辞を持つパッケージが埋め込まれます。--embed-package
フラグを使用して、追加の埋め込みパッケージを指定できます。たとえば、デフォルトの命名規則に従わない同じワークスペースからのパッケージなどです。以下は、共有パッケージと埋め込みパッケージを含む動的プラグインをエクスポートする例です。
共有パッケージと埋め込みパッケージを使用した動的プラグインのエクスポートの例
npx @janus-idp/cli@latest export-dynamic-plugin --shared-package '!/@backstage/plugin-notifications/' --embed-package @backstage/plugin-notifications-backend
npx @janus-idp/cli@latest export-dynamic-plugin --shared-package '!/@backstage/plugin-notifications/' --embed-package @backstage/plugin-notifications-backend
Copy to Clipboard Copied! 上の例では、以下のようになります。
-
@backstage/plugin-notifications
パッケージは、@backstage
スコープ内にあるにもかかわらず、プライベート依存関係として扱われ、動的プラグインパッケージにバンドルされます。 -
@backstage/plugin-notifications-backend
パッケージは埋め込み依存関係としてマークされ、動的プラグインパッケージにバンドルされています。
- フロントエンドプラグイン
フロントエンドプラグインは設定に
scalprum
を使用できます。これは、エクスポートプロセス中に CLI により自動的に生成されます。次のコマンドを実行すると、生成されたデフォルト設定がログに記録されます。デフォルト設定をログに記録するコマンドの例
npx @janus-idp/cli@latest export-dynamic
npx @janus-idp/cli@latest export-dynamic
Copy to Clipboard Copied! 以下はデフォルトの
scalprum
設定の例です。デフォルトの
scalprum
設定"scalprum": { "name": "<package_name>", // The Webpack container name matches the NPM package name, with "@" replaced by "." and "/" removed. "exposedModules": { "PluginRoot": "./src/index.ts" // The default module name is "PluginRoot" and doesn't need explicit specification in the app-config.yaml file. } }
"scalprum": { "name": "<package_name>", // The Webpack container name matches the NPM package name, with "@" replaced by "." and "/" removed. "exposedModules": { "PluginRoot": "./src/index.ts" // The default module name is "PluginRoot" and doesn't need explicit specification in the app-config.yaml file. } }
Copy to Clipboard Copied! package.json
ファイルにscalprum
セクションを追加できます。以下に例を示します。scalprum
カスタマイズの例"scalprum": { "name": "custom-package-name", "exposedModules": { "FooModuleName": "./src/foo.ts", "BarModuleName": "./src/bar.ts" // Define multiple modules here, with each exposed as a separate entry point in the Webpack container. } }
"scalprum": { "name": "custom-package-name", "exposedModules": { "FooModuleName": "./src/foo.ts", "BarModuleName": "./src/bar.ts" // Define multiple modules here, with each exposed as a separate entry point in the Webpack container. } }
Copy to Clipboard Copied! 動的プラグインでは、マウントポイントや動的ルートの静的 JSX など、Developer Hub のニーズに合わせて調整が必要になる場合があります。これらの変更はオプションですが、静的プラグインと互換性がない可能性があります。
静的 JSX を含めるには、追加のエクスポートを定義し、それを動的プラグインの
importName
として使用します。以下に例を示します。静的および動的プラグインのエクスポートの例
// For a static plugin export const EntityTechdocsContent = () => {...} // For a dynamic plugin export const DynamicEntityTechdocsContent = { element: EntityTechdocsContent, staticJSXContent: ( <TechDocsAddons> <ReportIssue /> </TechDocsAddons> ), };
// For a static plugin export const EntityTechdocsContent = () => {...} // For a dynamic plugin export const DynamicEntityTechdocsContent = { element: EntityTechdocsContent, staticJSXContent: ( <TechDocsAddons> <ReportIssue /> </TechDocsAddons> ), };
Copy to Clipboard Copied!
手順
プラグインをエクスポートするには、
@janus-idp/cli
パッケージのpackage export-dynamic-plugin
コマンドを使用します。サードパーティーのプラグインをエクスポートするコマンドの例
npx @janus-idp/cli@latest package export-dynamic-plugin
npx @janus-idp/cli@latest package export-dynamic-plugin
Copy to Clipboard Copied! 前のコマンドは、プラグインの JavaScript パッケージ (
package.json
ファイルを含む) のルートディレクトリーで実行してください。結果として得られる派生パッケージは、
dist-dynamic
サブフォルダーに配置されます。エクスポートされたパッケージ名は、元のプラグイン名の後ろに-dynamic
を追加したものです。警告派生した動的プラグイン JavaScript パッケージは、パブリック NPM レジストリーに公開することはできません。より適切なパッケージオプションは、「サードパーティーのプラグインを動的プラグインとしてパッケージ化して公開する」 を参照してください。NPM レジストリーに公開する必要がある場合は、プライベートレジストリーを使用します。
2.2. サードパーティーのプラグインを動的プラグインとしてパッケージ化して公開する
サードパーティーのプラグインをエクスポート した後、派生パッケージを、次のいずれかのサポートされている形式でパッケージ化できます。
- Open Container Initiative (OCI) イメージ (推奨)
- TGZ ファイル
JavaScript パッケージ
重要エクスポートされた動的プラグインパッケージは、プライベート NPM レジストリーにのみ公開する必要があります。
2.2.1. 動的パッケージを使用した OCI イメージの作成
前提条件
-
podman
またはdocker
をインストールしている。 - サードパーティーの動的プラグインパッケージをエクスポートしている。詳細は、「Red Hat Developer Hub でのサードパーティープラグインのエクスポート」 を参照してください。
手順
-
プラグインのルートディレクトリー (
dist-dynamic
ディレクトリーではありません) に移動します。 プラグインを OCI イメージにパッケージ化するには、次のコマンドを実行します。
エクスポートされたサードパーティープラグインをパッケージ化するコマンドの例
npx @janus-idp/cli@latest package package-dynamic-plugins --tag quay.io/example/image:v0.0.1
npx @janus-idp/cli@latest package package-dynamic-plugins --tag quay.io/example/image:v0.0.1
Copy to Clipboard Copied! 前のコマンドでは、
--tag
引数でイメージ名とタグを指定します。次のいずれかのコマンドを実行して、イメージをレジストリーにプッシュします。
podman を使用してイメージをレジストリーにプッシュするコマンドの例
podman push quay.io/example/image:v0.0.1
podman push quay.io/example/image:v0.0.1
Copy to Clipboard Copied! docker を使用してイメージをレジストリーにプッシュするコマンドの例
docker push quay.io/example/image:v0.0.1
docker push quay.io/example/image:v0.0.1
Copy to Clipboard Copied! package-dynamic-plugins
コマンドの出力には、dynamic-plugin-config.yaml
ファイルで使用するプラグインのパスが提供されます。
2.2.2. 動的パッケージを使用した TGZ ファイルの作成
前提条件
- サードパーティーの動的プラグインパッケージをエクスポートしている。詳細は、「Red Hat Developer Hub でのサードパーティープラグインのエクスポート」 を参照してください。
手順
-
dist-dynamic
ディレクトリーに移動します。 tgz
アーカイブを作成するには、次のコマンドを実行します。tgz
アーカイブを作成するコマンドの例npm pack
npm pack
Copy to Clipboard Copied! 次のように
--json
フラグを使用して、npm pack
コマンドの出力から整合性ハッシュを取得できます。tgz
アーカイブの整合性ハッシュを取得するコマンドの例npm pack --json | head -n 10
npm pack --json | head -n 10
Copy to Clipboard Copied! RHDH インスタンスにアクセスできる Web サーバー上でアーカイブをホストし、次のように
dynamic-plugin-config.yaml
ファイルでその URL を参照します。dynamic-plugin-config.yaml
ファイルの例plugins: - package: https://example.com/backstage-plugin-myplugin-1.0.0.tgz integrity: sha512-<hash>
plugins: - package: https://example.com/backstage-plugin-myplugin-1.0.0.tgz integrity: sha512-<hash>
Copy to Clipboard Copied! プラグインをパッケージ化するには、次のコマンドを実行します。
動的プラグインをパッケージ化するコマンドの例
npm pack --pack-destination ~/test/dynamic-plugins-root/
npm pack --pack-destination ~/test/dynamic-plugins-root/
Copy to Clipboard Copied! ヒントOpenShift Container Platform で HTTP サーバーを使用してプラグインレジストリーを作成するには、次のコマンドを実行します。
OpenShift Container Platform で HTTP サーバーを構築およびデプロイするためのコマンド例
oc project my-rhdh-project oc new-build httpd --name=plugin-registry --binary oc start-build plugin-registry --from-dir=dynamic-plugins-root --wait oc new-app --image-stream=plugin-registry
oc project my-rhdh-project oc new-build httpd --name=plugin-registry --binary oc start-build plugin-registry --from-dir=dynamic-plugins-root --wait oc new-app --image-stream=plugin-registry
Copy to Clipboard Copied! dynamic-plugin-config.yaml
ファイルを編集して、HTTP サーバーからのプラグインを使用するように RHDH を設定します。RHDH でパッケージ化されたプラグインを使用するための設定例
plugins: - package: http://plugin-registry:8080/backstage-plugin-myplugin-1.9.6.tgz
plugins: - package: http://plugin-registry:8080/backstage-plugin-myplugin-1.9.6.tgz
Copy to Clipboard Copied!
2.2.3. 動的パッケージを使用した JavaScript パッケージの作成
派生した動的プラグイン JavaScript パッケージは、パブリック NPM レジストリーに公開することはできません。NPM レジストリーに公開する必要がある場合は、プライベートレジストリーを使用します。
前提条件
- サードパーティーの動的プラグインパッケージをエクスポートしている。詳細は、「Red Hat Developer Hub でのサードパーティープラグインのエクスポート」 を参照してください。
手順
-
dist-dynamic
ディレクトリーに移動します。 次のコマンドを実行して、パッケージをプライベート NPM レジストリーに公開します。
プラグインパッケージを NPM レジストリーに公開するコマンドの例
npm publish --registry <npm_registry_url>
npm publish --registry <npm_registry_url>
Copy to Clipboard Copied! ヒントexport
コマンドを実行する前に、package.json
ファイルに次の内容を追加できます。package.json
ファイルの例{ "publishConfig": { "registry": "<npm_registry_url>" } }
{ "publishConfig": { "registry": "<npm_registry_url>" } }
Copy to Clipboard Copied! 動的プラグインをエクスポートした後に
publishConfig
を変更する場合は、export-dynamic-plugin
コマンドを再実行して、正しい設定が含まれていることを確認します。
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
: プラグインの設定。バックエンドプラグインの場合、これはオプションですが、フロントエンドプラグインの場合は必須です。pluginConfig
はapp-config.yaml
ファイルのフラグメントであり、追加されたプロパティーは RHDHapp-config.yaml
ファイルとマージされます。
別のディレクトリーから動的プラグインをロードすることもできますが、これは開発またはテスト目的であり、RHDH コンテナーイメージに含まれるプラグインを除き、実稼働環境では推奨されません。詳細は、3章RHDH コンテナーイメージに追加されたプラグインの有効化 を参照してください。
2.3.1. OCI イメージとしてパッケージ化されたプラグインをロードする
前提条件
サードパーティーのプラグインが、OCI イメージ内の動的プラグインとしてパッケージ化されている。
サードパーティープラグインのパッケージ化の詳細は、「サードパーティーのプラグインを動的プラグインとしてパッケージ化して公開する」 を参照してください。
手順
認証されたレジストリーからプラグインを取得するには、次の手順を実行します。
コンテナーイメージレジストリーにログインします。
podman login <registry>
podman login <registry>
Copy to Clipboard Copied! ログイン後に作成された
auth.json
ファイルの内容を確認します。cat ${XDG_RUNTIME_DIR:-~/.config}/containers/auth.json
cat ${XDG_RUNTIME_DIR:-~/.config}/containers/auth.json
Copy to Clipboard Copied! 次の例を使用してシークレットファイルを作成します。
oc create secret generic _<secret_name>_ --from-file=auth.json=${XDG_RUNTIME_DIR:-~/.config}/containers/auth.json
oc create secret generic _<secret_name>_ --from-file=auth.json=${XDG_RUNTIME_DIR:-~/.config}/containers/auth.json
1 Copy to Clipboard Copied! -
Operator ベースのデプロイメントの場合は、<secret_name> を
dynamic-plugins-registry-auth
に置き換えます。 -
Helm ベースのデプロイメントの場合は、<secret_name> を
<Helm_release_name>_-dynamic-plugins-registry-auth
に置き換えます。
-
Operator ベースのデプロイメントの場合は、<secret_name> を
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
plugins: - disabled: false package: oci://quay.io/example/image:v0.0.1!backstage-plugin-myplugin
Copy to Clipboard Copied! 整合性チェックを実行するには、次の例に示すように、
dynamic-plugins.yaml
ファイル内のタグの代わりにイメージダイジェストを使用します。dynamic-plugins.yaml
ファイルの設定例plugins: - disabled: false package: oci://quay.io/example/image@sha256:28036abec4dffc714394e4ee433f16a59493db8017795049c831be41c02eb5dc!backstage-plugin-myplugin
plugins: - disabled: false package: oci://quay.io/example/image@sha256:28036abec4dffc714394e4ee433f16a59493db8017795049c831be41c02eb5dc!backstage-plugin-myplugin
Copy to Clipboard Copied! - 変更を適用するには、RHDH アプリケーションを再起動します。
2.3.2. TGZ ファイルとしてパッケージ化されたプラグインをロードする
前提条件
サードパーティーのプラグインは、TGZ ファイル内の動的プラグインとしてパッケージ化されています。
サードパーティープラグインのパッケージ化の詳細は、「サードパーティーのプラグインを動的プラグインとしてパッケージ化して公開する」 を参照してください。
手順
次の例を使用して、
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==
plugins: - disabled: false package: https://example.com/backstage-plugin-myplugin-1.0.0.tgz integrity: sha512-9WlbgEdadJNeQxdn1973r5E4kNFvnT9GjLD627GWgrhCaxjCmxqdNW08cj+Bf47mwAtZMt1Ttyo+ZhDRDj9PoA==
Copy to Clipboard Copied! - 変更を適用するには、RHDH アプリケーションを再起動します。
2.3.3. JavaScript パッケージとしてパッケージ化されたプラグインを読み込む
前提条件
サードパーティーのプラグインは、JavaScript パッケージ内の動的プラグインとしてパッケージ化されます。
サードパーティープラグインのパッケージ化の詳細は、「サードパーティーのプラグインを動的プラグインとしてパッケージ化して公開する」 を参照してください。
手順
次のコマンドを実行して、NPM レジストリーから整合性ハッシュを取得します。
npm view --registry <registry-url> <npm package>@<version> dist.integrity
npm view --registry <registry-url> <npm package>@<version> dist.integrity
Copy to Clipboard Copied! 次のように、
dynamic-plugins.yaml
ファイルでパッケージ名、バージョン、およびその整合性ハッシュを指定します。dynamic-plugins.yaml
ファイルの設定例plugins: - disabled: false package: @example/backstage-plugin-myplugin@1.0.0 integrity: sha512-9WlbgEdadJNeQxdn1973r5E4kNFvnT9GjLD627GWgrhCaxjCmxqdNW08cj+Bf47mwAtZMt1Ttyo+ZhDRDj9PoA==
plugins: - disabled: false package: @example/backstage-plugin-myplugin@1.0.0 integrity: sha512-9WlbgEdadJNeQxdn1973r5E4kNFvnT9GjLD627GWgrhCaxjCmxqdNW08cj+Bf47mwAtZMt1Ttyo+ZhDRDj9PoA==
Copy to Clipboard Copied! カスタム NPM レジストリーを使用している場合は、レジストリー URL と認証の詳細を含む
.npmrc
ファイルを作成します。.npmrc
ファイルの例コードregistry=<registry-url> //<registry-url>:_authToken=<auth-token>
registry=<registry-url> //<registry-url>:_authToken=<auth-token>
Copy to Clipboard Copied! OpenShift Container Platform または Kubernetes を使用する場合は以下のようになります。
Helm チャートを使用してシークレットを作成して
.npmrc
ファイルを追加します。以下に例を示します。シークレット設定の例
apiVersion: v1 kind: Secret metadata: name: <release_name>-dynamic-plugins-npmrc type: Opaque stringData: .npmrc: | registry=<registry-url> //<registry-url>:_authToken=<auth-token>
apiVersion: v1 kind: Secret metadata: name: <release_name>-dynamic-plugins-npmrc
1 type: Opaque stringData: .npmrc: | registry=<registry-url> //<registry-url>:_authToken=<auth-token>
Copy to Clipboard Copied! RHDH Helm チャートの場合は、自動マウントのために次の形式を使用してシークレットに名前を付けます。
<release_name>-dynamic-plugins-npmrc
- 変更を適用するには、RHDH アプリケーションを再起動します。
2.3.4. Red Hat Developer Hub にサードパーティーのプラグインをインストールする例
このセクションでは、Todo プラグイン を Developer Hub に統合するプロセスを説明します。
サードパーティーのプラグインのソースコードを取得する: プラグインのリポジトリーのクローンを複製し、Todo プラグイン ディレクトリーに移動します。
サードパーティーのプラグインのソースコードを入手する
git clone https://github.com/backstage/community-plugins cd community-plugins/workspaces/todo yarn install
$ git clone https://github.com/backstage/community-plugins $ cd community-plugins/workspaces/todo $ yarn install
Copy to Clipboard Copied! バックエンドおよびフロントエンドプラグインをエクスポートする: 次のコマンドを実行して、バックエンドプラグインをビルドし、動的読み込み用のパッケージ依存関係を調整し、自己完結型の設定スキーマを生成します。
バックエンドプラグインをエクスポートする
cd todo-backend npx @janus-idp/cli@latest package export-dynamic-plugin
$ cd todo-backend $ npx @janus-idp/cli@latest package export-dynamic-plugin
Copy to Clipboard Copied! バックエンドプラグインコマンドのエクスポートの出力
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
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
Copy to Clipboard Copied! 次のコマンドを実行して、デフォルトの動的 UI 設定を設定し、フロントエンドプラグインアセットを作成し、フロントエンドプラグインの設定スキーマを生成できます。
フロントエンドプラグインをエクスポートする
cd ../todo npx @janus-idp/cli@latest package export-dynamic-plugin
$ cd ../todo $ npx @janus-idp/cli@latest package export-dynamic-plugin
Copy to Clipboard Copied! フロントエンドプラグインコマンドのエクスポートの出力
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
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
Copy to Clipboard Copied! サードパーティーのプラグインをパッケージ化して公開する: 次のコマンドを実行してワークスペースディレクトリーに移動し、動的プラグインをパッケージ化して OCI イメージを構築します。
OCI イメージをビルドする
cd ../.. npx @janus-idp/cli@latest package package-dynamic-plugins --tag quay.io/user/backstage-community-plugin-todo:v0.1.1
$ cd ../.. $ npx @janus-idp/cli@latest package package-dynamic-plugins --tag quay.io/user/backstage-community-plugin-todo:v0.1.1
Copy to Clipboard Copied! 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
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
Copy to Clipboard Copied! OCI イメージをコンテナーレジストリーにプッシュする:
podman push quay.io/user/backstage-community-plugin-todo:v0.1.1
$ podman push quay.io/user/backstage-community-plugin-todo:v0.1.1
Copy to Clipboard Copied! OCI イメージコマンドのプッシュの出力
Getting image source signatures Copying blob sha256:86a372c456ae6a7a305cd464d194aaf03660932efd53691998ab3403f87cacb5 Copying config sha256:3b7f074856ecfbba95a77fa87cfad341e8a30c7069447de8144aea0edfcb603e Writing manifest to image destination
Getting image source signatures Copying blob sha256:86a372c456ae6a7a305cd464d194aaf03660932efd53691998ab3403f87cacb5 Copying config sha256:3b7f074856ecfbba95a77fa87cfad341e8a30c7069447de8144aea0edfcb603e Writing manifest to image destination
Copy to Clipboard Copied! サードパーティーのプラグインをインストールして設定する:
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
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
Copy to Clipboard Copied!
第3章 RHDH コンテナーイメージに追加されたプラグインの有効化
RHDH コンテナーイメージには、機能を強化するために一連の動的プラグインがプリロードされています。ただし、必須の設定要件があるため、ほとんどのプラグインは無効になります。
RHDH コンテナーイメージ内のプラグインを有効にして設定できます。これには、デフォルト設定を管理する方法、必要な環境変数を設定する方法、アプリケーション内のプラグインの適切な機能を確保する方法が含まれます。
前提条件
-
プリロードされたすべてのプラグインとそのデフォルト設定をリストする
dynamic-plugins.default.yaml
ファイルにアクセスできる。 -
RHDH アプリケーションをデプロイし、
install-dynamic-plugins
init コンテナーのログにアクセスできる。 - プラグイン設定の変更およびアプリケーション環境へのアクセスに必要なパーミッションがある。
- プラグインのデフォルト設定によって参照される必須の環境変数を特定して設定してある。これらの環境変数は、Helm チャートまたは Operator 設定で定義する必要があります。
手順
-
RHDH アプリケーションを起動し、RHDH Pod 内の
install-dynamic-plugins
init コンテナーのログにアクセスします。 - デフォルトで無効になっている Red Hat 対応プラグイン を特定します。
-
dynamic-plugins.default.yaml
ファイルからパッケージ設定をコピーします。 プラグイン設定ファイルを開き、有効にするプラグインエントリーを見つけます。
プラグイン設定ファイルの場所は、デプロイメント方法によって異なります。詳細は、Red Hat Developer Hub Operator を使用した動的プラグインのインストール および Helm チャートを使用した動的プラグインのインストール を参照してください。
disabled
フィールドをfalse
に変更し、以下のようにパッケージ名を追加します。プラグイン設定の例
plugins: - disabled: false package: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic
plugins: - disabled: false package: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic
Copy to Clipboard Copied! Developer Hub で動的プラグインを設定する方法の詳細は、Red Hat Developer Hub での動的プラグインのインストール を参照してください。
検証
- RHDH アプリケーションを再起動し、プラグインが正常にアクティブ化され、設定されていることを確認します。
- アプリケーションログを確認のため検証して、プラグインが期待どおりに機能していることを確認します。
第4章 Red Hat Developer Hub の Extensions
この章の機能はテクノロジープレビュー機能です。テクノロジープレビュー機能は、実稼働環境での Red Hat サービスレベルアグリーメント (SLA) ではサポートされておらず、機能的に完全ではない可能性があるため、Red Hat では実稼働環境での使用を推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポートの詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
Red Hat Developer Hub (RHDH) には、デフォルトでプリインストールされ有効になっている Extensions 機能があります。Extensions は、利用可能なプラグインを閲覧および管理するための一元的なインターフェイスをユーザーに提供します。
Extensions を使用すると、RHDH の機能を拡張し、開発ワークフローを合理化し、開発者のエクスペリエンスを向上させるプラグインを見つけることができます。
4.1. 利用可能なプラグインの表示
Extensions ページで、Red Hat Developer Hub アプリケーションで使用できるプラグインを表示できます。
手順
- Developer Hub アプリケーションを開き、Administration > Extensions をクリックします。
Catalog タブに移動し、利用可能なプラグインと関連情報のリストを表示します。
4.2. インストール済みプラグインの表示
Dynamic Plugins Info フロントエンドプラグインを使用すると、Red Hat Developer Hub アプリケーションに現在インストールされているプラグインを表示できます。このプラグインはデフォルトで有効です。
手順
- Developer Hub アプリケーションを開き、Administration > Extensions をクリックします。
- Installed タブに移動し、インストールされているプラグインのリストと関連情報を表示します。
4.3. プラグインの検索とフィルタリング
4.3.1. プラグイン名での検索
ヘッダーの検索バーを使用して、Extensions プラグインカードを名前でフィルタリングできます。たとえば、検索バーに “A” と入力すると、名前フィールドに文字 “A” が含まれるプラグインのみが Extensions に表示されます。

必要に応じて、検索バーをフィルターと組み合わせて使用し、選択したフィルターのプラグインのみを名前でフィルタリングすることもできます。たとえば、Category フィルターを適用し、検索バーに文字を入力すると、入力した文字が名前に含まれる Openshift プラグインのみが表示されます。
利用可能なフィルターは次のとおりです。
- カテゴリー
- 作成者
- サポートタイプ
4.4. 拡張機能を使用したプラグインのインストール
Extensions を使用して dynamic-plugins.yaml
ファイルを更新し、プラグインをインストールして設定できます。
4.4.1. 前提条件
- プラグイン設定の変更およびアプリケーション環境へのアクセスに必要なパーミッションがある。
- プラグインのデフォルト設定によって参照される必須の環境変数を特定して設定してある。これらの環境変数は、Helm チャートまたは Operator 設定で定義する必要があります。
手順
- Developer Hub アプリケーションを開き、Administration > Extensions をクリックします。
Extensions ページの検索バーを使用してインストールするプラグインを見つけ、カードをクリックします。たとえば、Tekton を検索し、Pipelines With Tekton カードの Read more をクリックします。
プラグインドロワーでは、プラグインに関する情報と、RHDH でプラグインを設定する方法を確認できます。プラグインをインストールするには、Install をクリックします。
Install Plugin ページに、YAML エディターとインストール手順が表示されます。
- プラグインのインストールと設定の詳細を表示するには、About the plugin タブをクリックします。
- Examples タブをクリックすると、デフォルトのプラグイン設定が表示されます。
- Apply をクリックして、デフォルトのプラグイン設定を YAML エディターにコピーします。
YAML エディターで、コピーアイコンをクリックしてプラグインの設定をコピーします。
注記RHDH 1.6 では、Install ボタンが無効になっているため、プラグインの設定を
dynamic-plugins.yaml
ファイルにコピーする必要があります。dynamic-plugins.yaml
ファイルで、前の手順でコピーしたプラグイン設定をplugins
定義に追加します。注記Helm チャートを使用して RHDH をインストールすると、プラグインを有効にするには、RHDH プロジェクトの手動ロールアウトが必要になる場合があります。
検証
- Administration > Extensions をクリックします。
- インストールされているプラグインのリストを表示するには、Installed タブに移動します。
- インストールしたプラグインを検索し、それが利用可能で有効になっていることを確認します。
4.5. Extensions の削除
Extensions 機能のプラグインは、Red Hat Developer Hub (RHDH) にプリインストールされており、デフォルトで有効になっています。RHDH インスタンスから Extensions を削除する場合は、関連するプラグインを無効にできます。
手順
Extensions 機能のプラグインを無効にするには、次の内容を使用して
dynamic-plugins.yaml
を編集します。dynamic-plugins.yaml
フラグメントplugins: - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-marketplace disabled: true - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-catalog-backend-module-marketplace-dynamic disabled: true - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-marketplace-backend-dynamic disabled: true
plugins: - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-marketplace disabled: true - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-catalog-backend-module-marketplace-dynamic disabled: true - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-marketplace-backend-dynamic disabled: true
Copy to Clipboard Copied!
Extensions 機能のプラグインを無効にすると、Catalog タブと Installed タブも削除されます。Administration > Extensions をクリックすると、インストールされているプラグインを表示できます。