6.3. Helm チャートを使用した動的プラグインのインストール
柔軟なインストール方法である Helm チャートを使用して、Developer Hub インスタンスをデプロイできます。Helm chart を使用すると、コードを再コンパイルしたりコンテナーを再ビルドしたりすることなく、動的プラグインを Developer Hub インスタンスにサイドロードできます。
Helm を使用して Developer Hub に動的プラグインをインストールするには、Helm チャートに次の global.dynamic
パラメーターを追加します。
plugins
: インストールを目的とした動的プラグインのリスト。デフォルトでは、リストは空です。プラグインのリストには次のフィールドを入力できます。-
package
: インストールする動的プラグインパッケージのパッケージ仕様。パッケージは、ローカルまたは外部の動的プラグインのインストールに使用できます。ローカルインストールの場合は、動的プラグインを含むローカルフォルダーへのパスを使用します。外部インストールの場合は、パブリック NPM リポジトリーのパッケージ仕様を使用します。 -
integrity
(外部パッケージの場合に必要): パッケージ固有の<alg>-<digest>
形式の整合性チェックサム。サポートされるアルゴリズムは、sha256
、sha384
、sha512
です。 -
pluginConfig
: オプションのプラグイン固有のapp-config
YAML フラグメント。詳細は、プラグインの設定を参照してください。 -
disabled
:true
に設定すると、動的プラグインが無効になります。デフォルト:false
。
-
-
includes
: 同じ構文を使用する YAML ファイルのリスト。
includes
ファイル内の plugins
リストは、main Helm values の plugins
リストとマージされます。プラグインパッケージが両方の plugins
リストに記載されている場合、main Helm values の plugins
フィールドが includes
ファイルの plugins
フィールドをオーバーライドします。デフォルト設定には、dynamic-plugins.default.yaml
ファイルが含まれています。このファイルには、デフォルトで有効か無効かに関係なく、Developer Hub に事前にインストールされているすべての動的プラグインが含まれます。
6.3.1. 整合性チェックサムの取得
整合性チェックサムを取得するには、次のコマンドを入力します。
npm view <package name>@<version> dist.integrity
6.3.2. 動的プラグインインストール用の Helm chart 設定の例
次の例は、特定の種類の動的プラグインインストール用に Helm chart を設定する方法を示しています。
外部プラグインが特定のアプリケーション設定を必要とする場合に、ローカルプラグインと外部プラグインを設定する
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.custom.yaml> disabled: false
含まれるファイルで無効になっているプラグインを有効にする
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: <some imported plugins listed in dynamic-plugins.custom.yaml> disabled: false
6.3.3. Helm chart を使用した外部動的プラグインのインストール
NPM レジストリーには、デモンストレーションの目的で使用できる外部動的プラグインが含まれています。たとえば、次のコミュニティープラグインは、NPMJS リポジトリーの janus-idp
組織で使用できます。
- Notifications (フロントエンドおよびバックエンド)
- Kubernetes actions (scaffolder actions)
Notifications プラグインおよび Kubernetes actions プラグインをインストールするには、次の例に示すように、global.dynamic.plugins
リストの Helm chart values に当該プラグインを追加します。
global: dynamic: plugins: - package: '@janus-idp/plugin-notifications-backend-dynamic@1.3.6' # Integrity can be found at https://registry.npmjs.org/@janus-idp/plugin-notifications-backend-dynamic integrity: 'sha512-Qd8pniy1yRx+x7LnwjzQ6k9zP+C1yex24MaCcx7dGDPT/XbTokwoSZr4baSSn8jUA6P45NUUevu1d629mG4JGQ==' - package: '@janus-idp/plugin-notifications@1.1.12 ' # https://registry.npmjs.org/@janus-idp/plugin-notifications integrity: 'sha512-GCdEuHRQek3ay428C8C4wWgxjNpNwCXgIdFbUUFGCLLkBFSaOEw+XaBvWaBGtQ5BLgE3jQEUxa+422uzSYC5oQ==' pluginConfig: dynamicPlugins: frontend: janus-idp.backstage-plugin-notifications: appIcons: - name: notificationsIcon module: NotificationsPlugin importName: NotificationsActiveIcon dynamicRoutes: - path: /notifications importName: NotificationsPage module: NotificationsPlugin menuItem: icon: notificationsIcon text: Notifications config: pollingIntervalMs: 5000 - package: '@janus-idp/backstage-scaffolder-backend-module-kubernetes-dynamic@1.3.5' # https://registry.npmjs.org/@janus-idp/backstage-scaffolder-backend-module-kubernetes-dynamic integrity: 'sha512-19ie+FM3QHxWYPyYzE0uNdI5K8M4vGZ0SPeeTw85XPROY1DrIY7rMm2G0XT85L0ZmntHVwc9qW+SbHolPg/qRA==' proxy: endpoints: /explore-backend-completed: target: 'http://localhost:7017' - package: '@dfatwork-pkgs/search-backend-module-explore-wrapped-dynamic@0.1.3-next.1' # https://registry.npmjs.org/@dfatwork-pkgs/search-backend-module-explore-wrapped-dynamic integrity: 'sha512-mv6LS8UOve+eumoMCVypGcd7b/L36lH2z11tGKVrt+m65VzQI4FgAJr9kNCrjUZPMyh36KVGIjYqsu9+kgzH5A==' - package: '@dfatwork-pkgs/plugin-catalog-backend-module-test-dynamic@0.0.0' # https://registry.npmjs.org/@dfatwork-pkgs/plugin-catalog-backend-module-test-dynamic integrity: 'sha512-YsrZMThxJk7cYJU9FtAcsTCx9lCChpytK254TfGb3iMAYQyVcZnr5AA/AU+hezFnXLsr6gj8PP7z/mCZieuuDA=='