在 Red Hat Developer Hub 中安装并查看插件
第 1 章 在 Red Hat Developer Hub 中安装动态插件 复制链接链接已复制到粘贴板!
动态插件支持基于 backend 插件管理器软件包,它是一个在 app-config.yaml
文件中扫描配置的根目录(dynamicPlugins.rootDirectory
)的服务,并动态加载它们。
您可以使用预安装 Red Hat Developer Hub 的动态插件,或者从公共 NPM registry 安装外部动态插件。
1.1. 使用 Red Hat Developer Hub Operator 安装动态插件 复制链接链接已复制到粘贴板!
您可以将动态插件的配置存储在 Backstage
自定义资源(CR)可引用的 ConfigMap
对象中。
如果 pluginConfig
字段引用环境变量,则必须在 < my_product_secrets
> secret 中定义变量。
流程
- 在 OpenShift Container Platform Web 控制台中选择 ConfigMaps 选项卡。
- 点 Create ConfigMap。
在 Create ConfigMap 页面中,选择 Configure via 中的 YAML view 选项,并根据需要编辑该文件。
使用 GitHub 动态插件的
ConfigMap
对象示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Create。
- 进入 Topology 视图。
点您要使用的 Red Hat Developer Hub 实例的溢出菜单,然后选择 Edit Backstage 以加载 Red Hat Developer Hub 实例的 YAML 视图。
将
dynamicPluginsConfigMapName
字段添加到Backstage
CR。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点击 Save。
- 返回到 Topology 视图并等待 Red Hat Developer Hub pod 启动。
- 点 Open URL 图标以使用 Red Hat Developer Hub 平台以及新的配置更改。
验证
通过在 Red Hat Developer Hub root URL 中附加
/api/dynamic-plugins-info/loaded-plugins
并检查插件列表来确保动态插件配置已被加载:插件列表示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2. 使用 Helm Chart 安装动态插件 复制链接链接已复制到粘贴板!
您可以使用 Helm Chart 部署 Developer Hub 实例,它是一个灵活的安装方法。使用 Helm Chart,您可以侧将动态插件加载到 Developer Hub 实例中,而无需重新编译代码或重建容器。
要使用 Helm 在 Developer Hub 中安装动态插件,请在 Helm Chart 中添加以下 global.dynamic
参数:
插件
:用于安装的动态插件列表。默认情况下,列表为空。您可以使用以下字段填充 plugins 列表:-
软件包
:您要安装的动态插件软件包的软件包规格。您可以使用软件包进行本地或外部动态插件安装。对于本地安装,请使用包含动态插件的本地文件夹的路径。对于外部安装,请使用公共 NPM 存储库中的软件包规格。 -
完整性
(外部软件包必需):一个特定于软件包的 <alg>-<digest>
; 形式的完整性校验和。支持的算法包括sha256
、sha384
和sha512
。 -
pluginConfig
:特定于插件的app-config.yaml
YAML 片段。如需更多信息,请参阅插件配置。 -
disabled
:如果设为true
,则禁用动态插件。默认值:false
。 -
forceDownload
:将值设置为true
以强制重新安装插件,绕过缓存。默认值为false
。 PullPolicy
:与forceDownload
参数类似,并与其他镜像容器平台一致。对于这个键,您可以使用以下值之一:-
Always
: 这个值比较远程 registry 中的镜像摘要,并下载工件(如果之前下载了插件)。 IfNotPresent
: 如果工件还没有存在于 dynamic-plugins-root 文件夹中,如果没有检查镜像摘要,则下载工件。注意pullPolicy
设置也应用于 NPM 下载方法,但Always
将下载远程工件,而无需摘要检查。现有的forceDownload
选项仍可以正常工作,但pullPolicy
选项具有优先权。在以后的 Developer Hub 发行版本中可能会弃用forceDownload
选项。
-
-
-
包括
:使用相同语法的 YAML 文件列表。
includes
文件中的 plugins
列表与主 Helm 值中的 plugins
列表合并。如果这两个插件列表中都提到了插件软件包,则主 Helm 值中的
字段。默认配置包含 plugins
字段会覆盖 includes
文件中的 plugins
dynamic-plugins.default.yaml
文件,其中包含 Developer Hub 中预安装的所有动态插件,无论是默认启用还是禁用。
1.2.1. 动态插件安装的 Helm Chart 配置示例 复制链接链接已复制到粘贴板!
以下示例演示了如何为特定类型的动态插件安装配置 Helm Chart。
当外部插件需要特定配置时,配置本地插件和外部插件
从包含的文件禁用插件
从包含的文件启用插件
启用在所含文件中禁用的插件
1.3. 在 air-gapped 环境中安装动态插件 复制链接链接已复制到粘贴板!
您可以通过设置自定义 NPM registry,在 air-gapped 环境中安装外部插件。
您可以使用 Helm Chart 为动态插件软件包配置 NPM registry URL 和身份验证信息。对于通过 npm pack
获取的动态插件软件包,您可以使用 .npmrc
文件。
使用 Helm Chart,通过创建 secret 将 .npmrc
文件添加到 NPM registry 中。例如:
- 1
- 将
<release_name
> 替换为您的 Helm 发行版本名称。此名称是 Kubernetes 集群中每个 chart 安装的唯一标识符。
第 2 章 Red Hat Developer Hub 中的第三方插件 复制链接链接已复制到粘贴板!
您可以将第三方动态插件集成到 Red Hat Developer Hub 中,以增强其功能,而无需修改其源代码或重建它。要添加这些插件,请将它们导出为派生的软件包。
在导出插件软件包时,您必须确保依赖项被正确捆绑或标记为共享,具体取决于它们与 Developer Hub 环境的关系。
将第三方插件集成到 Developer Hub 中:
- 首先,获取插件的源代码。
- 将插件导出为动态插件软件包。请参阅 第 2.1 节 “在 Red Hat Developer Hub 中导出第三方插件”。
- 软件包并发布动态插件。请参阅 第 2.2 节 “将第三方插件打包并发布为动态插件”。
- 在 Developer Hub 环境中安装插件。请参阅 第 2.3 节 “在 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
文件中的对等依赖项
,而不是捆绑在动态插件软件包中。例如,默认情况下,所有@backstage
范围的软件包都将被共享。您可以使用
-shared-package
标志指定共享依赖项,这些依赖项应该由 Red Hat Developer Hub 应用程序提供,而不是捆绑在动态插件软件包中。要将
@backstage
软件包视为私有,请使用负前缀(!
)。例如,当插件依赖于@backstage
中的软件包时,该软件包不是由 Red Hat Developer Hub 应用程序提供。嵌入式依赖项 捆绑到动态插件软件包中,它们的依赖项与顶层相同。默认情况下,嵌入了带有
-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! Toggle word wrap Toggle overflow 在上例中:
-
@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! Toggle word wrap Toggle overflow 以下是默认
scalprum
配置示例:默认
scalprum
配置Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以在
package.json
文件中添加scalprum
部分。例如:scalprum
自定义示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 动态插件可能需要调整 Developer Hub 需求,如用于挂载点或动态路由的静态 JSX。这些更改是可选的,但可能与静态插件不兼容。
要包含静态 JSX,请定义一个额外的导出,并将其用作动态插件的
importName
。例如:静态和动态插件导出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
使用
@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! Toggle word wrap Toggle overflow 确保在插件的 JavaScript 软件包的根目录中执行上一命令(包含
package.json
文件)。生成的派生软件包将位于
dist-dynamic
子文件夹中。导出的软件包名称由原始插件名称组成,并附加了-dynamic
。警告派生的动态插件 JavaScript 软件包不得发布到公共 NPM 注册表。有关更合适的打包选项,请参阅 第 2.2 节 “将第三方插件打包并发布为动态插件”。如果需要发布至 NPM 注册表,请使用私有 registry。
2.2. 将第三方插件打包并发布为动态插件 复制链接链接已复制到粘贴板!
在导出第三方插件 后,您可以将派生的软件包打包成以下支持的格式之一:
- 开放容器项目(OCI)镜像(推荐)
- TGZ 文件
JavaScript 软件包
重要导出的动态插件软件包必须仅发布到私有 NPM registry。
2.2.1. 使用动态软件包创建 OCI 镜像 复制链接链接已复制到粘贴板!
先决条件
-
已安装
podman
或docker
。 - 您已导出了第三方动态插件软件包。如需更多信息,请参阅 第 2.1 节 “在 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! Toggle word wrap Toggle overflow 在上一命令中,
--tag
参数指定镜像名称和标签。运行以下命令之一将镜像推送(push)到 registry:
使用 podman 将镜像推送到 registry 的命令示例
podman push quay.io/example/image:v0.0.1
podman push quay.io/example/image:v0.0.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 docker 将镜像推送到 registry 的命令示例
docker push quay.io/example/image:v0.0.1
docker push quay.io/example/image:v0.0.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow package-dynamic-plugins
命令的输出提供了插件的路径,可在dynamic-plugin-config.yaml
文件中使用。
2.2.2. 使用动态软件包创建 TGZ 文件 复制链接链接已复制到粘贴板!
先决条件
- 您已导出了第三方动态插件软件包。如需更多信息,请参阅 第 2.1 节 “在 Red Hat Developer Hub 中导出第三方插件”。
流程
-
进入
dist-dynamic
目录。 运行以下命令来创建
tgz
归档:创建
tgz
归档的命令示例npm pack
npm pack
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用--
json
标志从npm pack
命令的输出中获取完整性哈希,如下所示:获取
tgz
归档的完整性哈希值的命令示例npm pack --json | head -n 10
npm pack --json | head -n 10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 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! Toggle word wrap Toggle overflow 运行以下命令来打包插件:
打包动态插件的命令示例
npm pack --pack-destination ~/test/dynamic-plugins-root/
npm pack --pack-destination ~/test/dynamic-plugins-root/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示要使用 OpenShift Container Platform 上的 HTTP 服务器创建插件 registry,请运行以下命令:
在 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! Toggle word wrap Toggle overflow 通过编辑
dynamic-plugin-config.yaml
文件,将 RHDH 配置为使用来自 HTTP 服务器的插件:在 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! Toggle word wrap Toggle overflow
2.2.3. 使用动态软件包创建 JavaScript 软件包 复制链接链接已复制到粘贴板!
派生的动态插件 JavaScript 软件包不得发布到公共 NPM 注册表。如果需要发布至 NPM 注册表,请使用私有 registry。
先决条件
- 您已导出了第三方动态插件软件包。如需更多信息,请参阅 第 2.1 节 “在 Red Hat Developer Hub 中导出第三方插件”。
流程
-
进入
dist-dynamic
目录。 运行以下命令,将软件包发布到您的私有 NPM registry:
将插件软件包发布到 NPM registry 的命令示例
npm publish --registry <npm_registry_url>
npm publish --registry <npm_registry_url>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示在运行
export
命令前,您可以在package.json
文件中添加以下内容:package.json
文件示例{ "publishConfig": { "registry": "<npm_registry_url>" } }
{ "publishConfig": { "registry": "<npm_registry_url>" } }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您在导出动态插件后修改
publishConfig
,请重新运行export-dynamic-plugin
命令,以确保包含正确的配置。
2.3. 在 Red Hat Developer Hub 中安装第三方插件 复制链接链接已复制到粘贴板!
您可以在 Red Hat Developer Hub 中安装第三方插件,而无需重建 RHDH 应用程序。
dynamic-plugin-config.yaml
文件的位置取决于部署方法。如需了解更多详细信息,请参阅使用 Red Hat Developer Hub Operator 安装动态插件 和 使用 Helm Chart 安装动态插件。
插件在 dynamic-plugin-config.yaml
文件中的 plugins
数组中定义。每个插件以具有以下属性的对象表示:
-
软件包
:插件的软件包定义,可以是 OCI 镜像、TGZ 文件、JavaScript 软件包或目录路径。 -
disabled
:指示插件是启用或禁用的布尔值。 -
完整性
:软件包的完整性哈希值,TGZ 文件和 JavaScript 软件包是必需的。 -
pluginConfig
:插件的配置。对于后端插件,这是可选的;对于 frontend 插件,需要它。pluginConfig
是app-config.yaml
文件的片段,任何添加的属性都与 RHDHapp-config.yaml
文件合并。
您也可以从另一个目录加载动态插件,但这主要用于开发或测试目的,但不建议在生产环境中使用,除了 RHDH 容器镜像中包含的插件外。如需更多信息,请参阅 第 3 章 启用在 RHDH 容器镜像中添加的插件。
2.3.1. 加载打包为 OCI 镜像的插件 复制链接链接已复制到粘贴板!
先决条件
第三方插件打包在 OCI 镜像中作为动态插件。
有关打包第三方插件的更多信息,请参阅 第 2.2 节 “将第三方插件打包并发布为动态插件”。
流程
要从经过身份验证的 registry 检索插件,请完成以下步骤:
登录到容器镜像 registry。
podman login <registry>
podman login <registry>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证登录后创建的
auth.json
文件的内容。cat ${XDG_RUNTIME_DIR:-~/.config}/containers/auth.json
cat ${XDG_RUNTIME_DIR:-~/.config}/containers/auth.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下示例创建 secret 文件:
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! Toggle word wrap Toggle overflow -
对于基于 Operator 的部署,将 < secret_name> 替换为
dynamic-plugins-registry-auth
。 -
对于基于 Helm 的部署,将 < secret_name > 替换为 &
lt;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! Toggle word wrap Toggle overflow 要执行完整性检查,请使用镜像摘要来代替
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! Toggle word wrap Toggle overflow - 要应用更改,请重启 RHDH 应用程序。
2.3.2. 加载打包为 TGZ 文件的插件 复制链接链接已复制到粘贴板!
先决条件
第三方插件作为 TGZ 文件中的动态插件打包。
有关打包第三方插件的更多信息,请参阅 第 2.2 节 “将第三方插件打包并发布为动态插件”。
流程
使用以下示例在
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! Toggle word wrap Toggle overflow - 要应用更改,请重启 RHDH 应用程序。
2.3.3. 加载打包为 JavaScript 软件包的插件 复制链接链接已复制到粘贴板!
先决条件
第三方插件作为 JavaScript 软件包中的动态插件打包。
有关打包第三方插件的更多信息,请参阅 第 2.2 节 “将第三方插件打包并发布为动态插件”。
流程
运行以下命令以从 NPM registry 获取完整性哈希:
npm view --registry <registry-url> <npm package>@<version> dist.integrity
npm view --registry <registry-url> <npm package>@<version> dist.integrity
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
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! Toggle word wrap Toggle overflow 如果您使用自定义 NPM registry,请使用 registry URL 和身份验证详情创建一个
.npmrc
文件:.npmrc
文件示例registry=<registry-url> //<registry-url>:_authToken=<auth-token>
registry=<registry-url> //<registry-url>:_authToken=<auth-token>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 OpenShift Container Platform 或 Kubernetes 时:
- 要应用更改,请重启 RHDH 应用程序。
2.3.4. 在 Red Hat Developer Hub 中安装第三方插件的示例 复制链接链接已复制到粘贴板!
本节介绍将 Todo 插件 集成到 Developer Hub 中的过程。
获取第三方插件源代码 :克隆 plugins 存储库并导航到 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! Toggle word wrap Toggle overflow 导出后端和前端插件 : 运行以下命令构建后端插件,调整动态加载的软件包依赖项,并生成自包含的配置模式:
导出后端插件
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! Toggle word wrap Toggle overflow 导出后端插件命令的输出
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以运行以下命令来设置默认动态 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! Toggle word wrap Toggle overflow 导出前端插件命令的输出
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 软件包并发布第三方插件 : 运行以下命令进入工作区目录,并打包动态插件以构建 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! Toggle word wrap Toggle overflow 构建 OCI 镜像命令的输出
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 OCI 镜像推送到容器 registry:
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! Toggle word wrap Toggle overflow 推送 OCI image 命令的输出
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! Toggle word wrap Toggle overflow 安装和配置第三方插件:在
dynamic-
plugins.yaml 文件中添加以下插件定义:dynamic-plugins.yaml
文件中的插件定义Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 3 章 启用在 RHDH 容器镜像中添加的插件 复制链接链接已复制到粘贴板!
在 RHDH 容器镜像中,会预加载一组动态插件来增强功能。但是,由于强制配置要求,大多数插件都被禁用。
您可以在 RHDH 容器镜像中启用和配置插件,包括如何管理默认配置,设置必要的环境变量,并确保应用程序中的插件正常工作。
先决条件
-
您可以访问
dynamic-plugins.default.yaml
文件,该文件列出所有预加载的插件及其默认配置。 -
您已部署了 RHDH 应用程序,并可访问
install-dynamic-plugins
init 容器的日志。 - 您有修改插件配置并访问应用程序环境所需的权限。
- 您已识别并设置插件默认配置引用的必要环境变量。这些环境变量必须在 Helm Chart 或 Operator 配置中定义。
流程
-
启动 RHDH 应用程序,并访问 RHDH pod 中
install-dynamic-plugins
init 容器的日志。 - 识别默认情况下禁用的 红帽支持插件。
-
从
dynamic-plugins.default.yaml
文件中复制软件包配置。 打开插件配置文件,并找到您要启用的插件条目。
插件配置文件的位置因部署方法而异。如需了解更多详细信息,请参阅使用 Red Hat Developer Hub Operator 安装动态插件 和 使用 Helm Chart 安装动态插件。
将
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! Toggle word wrap Toggle overflow 有关如何在 Developer Hub 中配置动态插件的更多信息,请参阅在 Red Hat Developer Hub 中安装动态插件。
验证
- 重启 RHDH 应用程序,并验证插件是否已成功激活和配置。
- 验证应用程序日志以确认,并确保插件按预期工作。
第 4 章 Red Hat Developer Hub 中的扩展 复制链接链接已复制到粘贴板!
这些功能仅用于技术预览。红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
Red Hat Developer Hub (RHDH)包括预装并启用的扩展功能。扩展功能为用户提供了用于浏览和管理可用插件的集中界面
您可以使用扩展来发现扩展 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",则 Extensions 仅显示了在 Name 字段中包含字母"A"的插件。
另外,您还可以将搜索栏与过滤器结合使用,以仅根据名称过滤所选过滤器的插件。例如,您可以应用 Category 过滤器,然后在搜索栏中输入字符,以仅查看名称中包含键入字符的 Openshift 插件。
可用的过滤器如下:
- 类别
- 作者
- 支持类型
4.3.2. 插件卡 复制链接链接已复制到粘贴板!
对于每个插件卡,会显示以下详情:
- 徽标
定义了以下徽标:
- 认证红帽:由红帽合作伙伴生成和支持的插件。
- 经过红帽支持的生产就绪插件
自定义插件:插件由客户创建并添加。
注意如果插件与任何这些定义不匹配,则不会显示徽标。
- 图标
- 插件图标(base64)。
- Name
- 插件名称。
- 作者
- 如果插件由多个作者开发,则单个作者名称或多个作者名称。
- 类别
- 过滤器和标签中显示的类别。这个卡中仅显示一个类别,但在使用 category 过滤器时,将应用您选择的任何其他类别。
- 简短描述
- 在卡(文本)中显示的简短描述。
- 了解更多链接
- 点击链接以打开插件详情页面。
4.3.3. 插件详情 复制链接链接已复制到粘贴板!
当您点插件卡上的 Read more 链接时,会显示以下详情:
- 图标
- 插件图标(base64)。
- Name
- 插件名称。
- 作者
- 如果插件由多个作者开发,则单个作者名称或多个作者名称。
- 亮点
- 插件功能列表。
- 安装按钮
- 按钮来安装插件(禁用)。
- 详细描述
- 插件的完整描述(Markdown)。
- links
- 可点击链接提供有关插件的附加信息。
- 版本
- 根据插件的软件包名称,显示插件的名称、版本、角色、支持的版本和安装状态。
例如:
4.4. 删除扩展 复制链接链接已复制到粘贴板!
Red Hat Developer Hub (RHDH)中预装了扩展功能插件,并默认启用。如果要从 RHDH 实例中删除扩展,您可以禁用相关的插件。
流程
要禁用扩展功能插件,请使用以下内容编辑
dynamic-plugins.yaml
。dynamic-plugins.yaml
片段Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您禁用 Extensions 功能插件,则 目录和 Installed 选项卡也会被删除。您仍然可以通过点 Administration > Extensions 来查看已安装的插件。