6.3. 使用 Helm chart 安装动态插件
您可以使用 Helm Chart 部署 Developer Hub 实例,这是灵活的安装方法。使用 Helm Chart,您可以将动态插件加载到 Developer Hub 实例中,而无需重新编译代码或重建容器。
要使用 Helm 在 Developer Hub 中安装动态插件,请在 Helm Chart 中添加以下 global.dynamic 参数:
plugins: 用于安装的动态插件列表。默认情况下,列表为空。您可以使用以下字段填充 plugins 列表:-
软件包:您要安装的动态插件软件包的软件包规格。您可以使用软件包进行本地或外部动态插件安装。对于本地安装,请使用包含动态插件的本地文件夹的路径。对于外部安装,请使用公共 NPM 存储库中的软件包规格。 -
完整性(外部软件包需要):一个完整性校验和,格式为特定于软件包的 <alg>-<digest>。支持的算法包括sha256、SHA384和sha512。 -
pluginConfig:特定于插件的app-configYAML 片段。如需更多信息,请参阅插件配置。 -
disabled:如果设为true,则禁用动态插件。默认值:false。
-
-
包括:使用相同语法的 YAML 文件列表。
包含 文件中的 plugins 列表与主 Helm 值中的 plugins 列表合并。如果两个插件列表中提到了 插件 软件包,则主 Helm 值中的 plugins 字段会覆盖 includes 文件中的 plugins 字段。默认配置包括 dynamic-plugins.default.yaml 文件,其中包含 Developer Hub 中预安装的所有动态插件,无论是默认启用还是禁用。
6.3.1. 获取完整性 checksum 复制链接链接已复制到粘贴板!
要获取完整性 checksum,请输入以下命令:
npm view <package name>@<version> dist.integrity
6.3.2. 动态插件安装的 Helm Chart 配置示例 复制链接链接已复制到粘贴板!
以下示例演示了如何为特定类型的动态插件安装配置 Helm Chart。
当外部插件需要特定的 app-config 时,配置本地插件和外部插件
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 registry 包含可用于演示目的的外部动态插件。例如,NPMJS 存储库中的 janus-idp 组织提供了以下社区插件:
- 通知(frontend 和 backend)
- Kubernetes 操作(scaffolder 操作)
要安装 Notifications 和 Kubernetes 操作插件,请在 global.dynamic.plugins 列表中的 Helm Chart 值中包含它们,如下例所示:
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=='