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.jsoncat ${XDG_RUNTIME_DIR:-~/.config}/containers/auth.jsonCopy 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.jsonoc create secret generic _<secret_name>_ --from-file=auth.json=${XDG_RUNTIME_DIR:-~/.config}/containers/auth.json1 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-mypluginplugins: - disabled: false package: oci://quay.io/example/image:v0.0.1!backstage-plugin-mypluginCopy 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-mypluginplugins: - disabled: false package: oci://quay.io/example/image@sha256:28036abec4dffc714394e4ee433f16a59493db8017795049c831be41c02eb5dc!backstage-plugin-mypluginCopy 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-link> <npm package>@<version> dist.integrity
npm view --registry <registry-link> <npm package>@<version> dist.integrityCopy 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-link> //<registry-link>:_authToken=<auth-token>
registry=<registry-link> //<registry-link>:_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 installCopy to Clipboard Copied! Toggle word wrap Toggle overflow 导出后端和前端插件 : 运行以下命令构建后端插件,调整动态加载的软件包依赖项,并生成自包含的配置模式:
导出后端插件
cd todo-backend npx @red-hat-developer-hub/cli@latest plugin export
$ cd todo-backend $ npx @red-hat-developer-hub/cli@latest plugin exportCopy to Clipboard Copied! Toggle word wrap Toggle overflow 导出后端插件命令的输出
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以运行以下命令来设置默认动态 UI 配置,创建前端插件资产,并为前端插件生成配置模式:
导出前端插件
cd ../todo npx @red-hat-developer-hub/cli@latest plugin export
$ cd ../todo $ npx @red-hat-developer-hub/cli@latest plugin exportCopy to Clipboard Copied! Toggle word wrap Toggle overflow 导出前端插件命令的输出
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 软件包并发布第三方插件 : 运行以下命令进入工作区目录,并打包动态插件以构建 OCI 镜像:
构建 OCI 镜像
cd ../.. npx @red-hat-developer-hub/cli@latest plugin package --tag quay.io/user/backstage-community-plugin-todo:v0.1.1
$ cd ../.. $ npx @red-hat-developer-hub/cli@latest plugin package --tag quay.io/user/backstage-community-plugin-todo:v0.1.1Copy 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.1Copy 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 destinationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装和配置第三方插件:在
dynamic-plugins.yaml 文件中添加以下插件定义:dynamic-plugins.yaml文件中的插件定义Copy to Clipboard Copied! Toggle word wrap Toggle overflow