在 Red Hat Developer Hub 中配置插件


Red Hat Developer Hub 1.2

Red Hat Customer Content Services

摘要

Red Hat Developer Hub 是一个用于构建开发人员门户的开发人员平台。您可以在 Developer Hub 中添加和配置插件,以访问各种软件开发工具。

前言

Red Hat Developer Hub 是一个企业级、集成的开发人员平台,通过插件扩展,有助于减少开发人员的侵权,同时提高其生产力。

Red Hat Developer Hub 支持

如果您在执行本文档所述的某个流程时遇到问题,请访问红帽客户门户。您可以使用红帽客户门户网站进行以下目的:

第 1 章 Red Hat Developer Hub 中的插件

Red Hat Developer Hub 应用程序提供带有各种插件的统一平台。使用 Developer Hub 应用程序中的插件生态系统,您可以访问任何类型的开发基础架构或软件开发工具。

Developer Hub 中的插件通过保持整体用户体验的一致性,从而提高生产力并简化开发工作流。

第 2 章 动态插件安装

动态插件支持基于 backend 插件管理器软件包,这是为动态插件软件包扫描配置的根目录( app 配置中的dynamicPlugins.rootDirectory )的服务,并动态加载它们。

您可以使用 Red Hat Developer Hub 预装的动态插件,或者从公共 NPM registry 安装外部动态插件。

2.1. 查看已安装的插件

使用动态插件 Info 前端插件,您可以查看当前在 Red Hat Developer Hub 应用程序中安装的插件。此插件默认为启用。

流程

  1. 打开 Developer Hub 应用程序,再点 Administration
  2. 转至 Plugins 选项卡,以查看已安装的插件和相关信息的列表。

2.2. 预安装的动态插件

Red Hat Developer Hub 预安装了特定的动态插件。默认情况下禁用需要自定义配置的动态插件。

有关此 Developer Hub 发行版本中预装的动态插件的完整列表,请参阅 动态插件支持列表

在应用程序启动时,对于默认禁用的每个插件,Developer Hub pod 日志中的 install-dynamic-plugins init 容器 会显示类似如下的消息:

======= Skipping disabled dynamic plugin ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic

要启用此插件,请在 Helm Chart 中添加名称相同的软件包,并将 disabled 字段中的值改为 'false'。例如:

global:
  dynamic:
    includes:
      - dynamic-plugins.default.yaml
    plugins:
      - package: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic
        disabled: false
注意

插件的默认配置从 dynamic-plugins.default.yaml 文件中提取,但您可以使用 pluginConfig 条目来覆盖默认配置。

2.2.1. 预安装的动态插件描述和详情

重要

红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能的更多信息,请参阅 技术预览功能范围

有关红帽如何提供对捆绑社区动态插件的支持的更多详细信息,请参阅 Red Hat Developer Support Policy 页面。

Red Hat Developer Hub 中提供了 60 个插件。如需更多信息,请参阅下表:

Expand
表 2.1. 动态插件支持列表
Nameplugin角色Version支持等级路径所需的变量default

3scale

@janus-idp/backstage-plugin-3scale-backend

后端

1.5.15

红帽技术预览

./dynamic-plugins/dist/janus-idp-backstage-plugin-3scale-backend-dynamic

THREESCALE_BASE_URL

THREESCALE_ACCESS_TOKEN

Disabled

Ansible Automation Platform (AAP)

@janus-idp/backstage-plugin-aap-backend

后端

1.6.15

红帽技术预览

./dynamic-plugins/dist/janus-idp-backstage-plugin-aap-backend-dynamic

AAP_BASE_URL

AP_AUTH_TOKEN

Disabled

ACR

@janus-idp/backstage-plugin-acr

frontend

1.4.13

红帽技术预览

./dynamic-plugins/dist/janus-idp-backstage-plugin-acr

 

Disabled

分析供应商分割

@janus-idp/backstage-plugin-analytics-provider-segment

frontend

1.4.9

Production

./dynamic-plugins/dist/janus-idp-backstage-plugin-analytics-provider-segment

SEGMENT_WRITE_KEY

SEGMENT_TEST_MODE

Enabled

Argo CD

@janus-idp/backstage-plugin-argocd

frontend

1.2.3

Production

./dynamic-plugins/dist/janus-idp-backstage-plugin-argocd

 

Disabled

Argo CD

@roadiehq/backstage-plugin-argo-cd

frontend

2.6.5

Production

./dynamic-plugins/dist/roadiehq-backstage-plugin-argo-cd

 

Disabled

Argo CD

@roadiehq/backstage-plugin-argo-cd-backend

后端

3.0.2

Production

./dynamic-plugins/dist/roadiehq-backstage-plugin-argo-cd-backend-dynamic

ARGOCD_USERNAME

ARGOCD_PASSWORD

ARGOCD_INSTANCE1_URL

ARGOCD_AUTH_TOKEN

ARGOCD_INSTANCE2_URL

ARGOCD_AUTH_TOKEN2

Disabled

Argo CD

@roadiehq/scaffolder-backend-argocd

后端

1.1.27

社区支持

./dynamic-plugins/dist/roadiehq-scaffolder-backend-argocd-dynamic

ARGOCD_USERNAME

ARGOCD_PASSWORD

ARGOCD_INSTANCE1_URL

ARGOCD_AUTH_TOKEN

ARGOCD_INSTANCE2_URL

ARGOCD_AUTH_TOKEN2

Disabled

Azure

@backstage/plugin-scaffolder-backend-module-azure

后端

0.1.9

社区支持

./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-azure-dynamic

 

Enabled

Azure Devops

@backstage/plugin-azure-devops

frontend

0.4.4

社区支持

./dynamic-plugins/dist/backstage-plugin-azure-devops

 

Disabled

Azure Devops

@backstage/plugin-azure-devops-backend

后端

0.6.5

社区支持

./dynamic-plugins/dist/backstage-plugin-azure-devops-backend-dynamic

AZURE_TOKEN

AZURE_ORG

Disabled

Azure Repositories

@parfuemerie-douglas/scaffolder-backend-module-azure-repositories

后端

0.2.7

社区支持

./dynamic-plugins/dist/parfuemerie-douglas-scaffolder-backend-module-azure-repositories

 

Disabled

Bitbucket 云

@backstage/plugin-catalog-backend-module-bitbucket-cloud

后端

0.2.4

社区支持

./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-bitbucket-cloud-dynamic

BITBUCKET_WORKSPACE

Disabled

Bitbucket 云

@backstage/plugin-scaffolder-backend-module-bitbucket-cloud

后端

0.1.7

社区支持

./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-bitbucket-cloud-dynamic

 

Enabled

Bitbucket 服务器

@backstage/plugin-catalog-backend-module-bitbucket-server

后端

0.1.31

社区支持

./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-bitbucket-server-dynamic

BITBUCKET_HOST

Disabled

Bitbucket 服务器

@backstage/plugin-scaffolder-backend-module-bitbucket-server

后端

0.1.7

社区支持

./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-bitbucket-server-dynamic

 

Enabled

Datadog

@roadiehq/backstage-plugin-datadog

frontend

2.2.8

社区支持

./dynamic-plugins/dist/roadiehq-backstage-plugin-datadog

 

Disabled

Dynatrace

@backstage/plugin-dynatrace

frontend

10.0.4

社区支持

./dynamic-plugins/dist/backstage-plugin-dynatrace

 

Disabled

Gerrit

@backstage/plugin-scaffolder-backend-module-gerrit

后端

0.1.9

社区支持

./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-gerrit-dynamic

 

Enabled

GitHub

@backstage/plugin-catalog-backend-module-github

后端

0.6.0

社区支持

./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic

GITHUB_ORG

Disabled

GitHub

@backstage/plugin-scaffolder-backend-module-github

后端

0.2.7

社区支持

./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-github-dynamic

 

Enabled

GitHub 操作

@backstage/plugin-github-actions

frontend

0.6.16

社区支持

./dynamic-plugins/dist/backstage-plugin-github-actions

 

Disabled

GitHub Insights

@roadiehq/backstage-plugin-github-insights

frontend

2.3.29

社区支持

./dynamic-plugins/dist/roadiehq-backstage-plugin-github-insights

 

Disabled

GitHub 问题

@backstage/plugin-github-issues

frontend

0.4.2

社区支持

./dynamic-plugins/dist/backstage-plugin-github-issues

 

Disabled

GitHub 机构

@backstage/plugin-catalog-backend-module-github-org

后端

0.1.12

社区支持

./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-org-dynamic

GITHUB_URL

GITHUB_ORG

Disabled

GitHub 拉取请求

@roadiehq/backstage-plugin-github-pull-requests

frontend

2.5.26

社区支持

./dynamic-plugins/dist/roadiehq-backstage-plugin-github-pull-requests

 

Disabled

GitLab

@immobiliarelabs/backstage-plugin-gitlab

frontend

6.5.0

社区支持

./dynamic-plugins/dist/immobiliarelabs-backstage-plugin-gitlab

 

Disabled

GitLab

@backstage/plugin-catalog-backend-module-gitlab

后端

0.3.15

社区支持

./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-gitlab-dynamic

 

Disabled

GitLab

@immobiliarelabs/backstage-plugin-gitlab-backend

后端

6.5.0

社区支持

./dynamic-plugins/dist/immobiliarelabs-backstage-plugin-gitlab-backend-dynamic

GITLAB_HOST

GITLAB_TOKEN

Disabled

GitLab

@backstage/plugin-scaffolder-backend-module-gitlab

后端

0.3.3

社区支持

./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-gitlab-dynamic

 

Enabled

GitLab 机构

@backstage/plugin-catalog-backend-module-gitlab-org

后端

0.3.10

社区支持

./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-gitlab-org-dynamic

 

Disabled

HTTP 请求

@roadiehq/scaffolder-backend-module-http-request

后端

4.3.2

社区支持

./dynamic-plugins/dist/roadiehq-scaffolder-backend-module-http-request-dynamic

 

Enabled

Jenkins

@backstage/plugin-jenkins

frontend

0.9.10

社区支持

./dynamic-plugins/dist/backstage-plugin-jenkins

 

Disabled

Jenkins

@backstage/plugin-jenkins-backend

后端

0.4.5

社区支持

./dynamic-plugins/dist/backstage-plugin-jenkins-backend-dynamic

JENKINS_URL

JENKINS_USERNAME

JENKINS_TOKEN

Disabled

JFrog Artifactory

@janus-idp/backstage-plugin-jfrog-artifactory

frontend

1.4.11

红帽技术预览

./dynamic-plugins/dist/janus-idp-backstage-plugin-jfrog-artifactory

 

Disabled

jira

@roadiehq/backstage-plugin-jira

frontend

2.5.8

社区支持

./dynamic-plugins/dist/roadiehq-backstage-plugin-jira

 

Disabled

Keycloak

@janus-idp/backstage-plugin-keycloak-backend

后端

1.9.12

Production

./dynamic-plugins/dist/janus-idp-backstage-plugin-keycloak-backend-dynamic

KEYCLOAK_BASE_URL

KEYCLOAK_LOGIN_REALM

KEYCLOAK_REALM

KEYCLOAK_CLIENT_ID

KEYCLOAK_CLIENT_SECRET

Disabled

Kubernetes

@backstage/plugin-kubernetes

frontend

0.11.9

社区支持

./dynamic-plugins/dist/backstage-plugin-kubernetes

 

Disabled

Kubernetes

@backstage/plugin-kubernetes-backend

后端

0.17.0

Production

./dynamic-plugins/dist/backstage-plugin-kubernetes-backend-dynamic

K8S_CLUSTER_NAME

K8S_CLUSTER_URL

K8S_CLUSTER_TOKEN

Disabled

lighthouse

@backstage/plugin-lighthouse

frontend

0.4.20

社区支持

./dynamic-plugins/dist/backstage-plugin-lighthouse

 

Disabled

Nexus 存储库管理器

@janus-idp/backstage-plugin-nexus-repository-manager

frontend

1.6.10

红帽技术预览

./dynamic-plugins/dist/janus-idp-backstage-plugin-nexus-repository-manager

 

Disabled

OCM

@janus-idp/backstage-plugin-ocm

frontend

4.1.8

Production

./dynamic-plugins/dist/janus-idp-backstage-plugin-ocm

 

Disabled

OCM

@janus-idp/backstage-plugin-ocm-backend

后端

4.0.9

Production

./dynamic-plugins/dist/janus-idp-backstage-plugin-ocm-backend-dynamic

OCM_HUB_NAME

OCM_HUB_URL

moc_infra_token

Disabled

PagerDuty

@pagerduty/backstage-plugin

frontend

0.12.0

社区支持

./dynamic-plugins/dist/pagerduty-backstage-plugin

 

Disabled

Quy

@janus-idp/backstage-plugin-quay

frontend

1.7.8

Production

./dynamic-plugins/dist/janus-idp-backstage-plugin-quay

 

Disabled

Quy

@janus-idp/backstage-scaffolder-backend-module-quay

后端

1.4.12

Production

./dynamic-plugins/dist/janus-idp-backstage-scaffolder-backend-module-quay-dynamic

 

Enabled

RBAC

@janus-idp/backstage-plugin-rbac

frontend

1.24.1

Production

./dynamic-plugins/dist/janus-idp-backstage-plugin-rbac

 

Disabled

regex

@janus-idp/backstage-scaffolder-backend-module-regex

后端

1.4.12

Production

./dynamic-plugins/dist/janus-idp-backstage-scaffolder-backend-module-regex-dynamic

 

Enabled

Scaffolder Relation Processor

@janus-idp/backstage-plugin-catalog-backend-module-scaffolder-relation-processor

后端

1.0.3

红帽技术预览

./dynamic-plugins/dist/janus-idp-backstage-plugin-catalog-backend-module-scaffolder-relation-processor-dynamic

 

Enabled

安全 Insights

@roadiehq/backstage-plugin-security-insights

frontend

2.3.17

社区支持

./dynamic-plugins/dist/roadiehq-backstage-plugin-security-insights

 

Disabled

ServiceNow

@janus-idp/backstage-scaffolder-backend-module-servicenow

后端

1.4.14

红帽技术预览

./dynamic-plugins/dist/janus-idp-backstage-scaffolder-backend-module-servicenow-dynamic

SERVICENOW_BASE_URL

SERVICENOW_USERNAME

SERVICENOW_PASSWORD

Disabled

SonarQube

@backstage/plugin-sonarqube

frontend

0.7.17

社区支持

./dynamic-plugins/dist/backstage-plugin-sonarqube

 

Disabled

SonarQube

@backstage/plugin-sonarqube-backend

后端

0.2.20

社区支持

./dynamic-plugins/dist/backstage-plugin-sonarqube-backend-dynamic

SONARQUBE_URL

SONARQUBE_TOKEN

Disabled

SonarQube

@janus-idp/backstage-scaffolder-backend-module-sonarqube

后端

1.4.12

红帽技术预览

./dynamic-plugins/dist/janus-idp-backstage-scaffolder-backend-module-sonarqube-dynamic

 

Disabled

TechDocs

@backstage/plugin-techdocs

frontend

1.10.4

Production

./dynamic-plugins/dist/backstage-plugin-techdocs

 

Enabled

TechDocs

@backstage/plugin-techdocs-backend

后端

1.10.4

Production

./dynamic-plugins/dist/backstage-plugin-techdocs-backend-dynamic

 

Enabled

tech Radar

@backstage/plugin-tech-radar

frontend

0.7.4

社区支持

./dynamic-plugins/dist/backstage-plugin-tech-radar

 

Disabled

Tekton

@janus-idp/backstage-plugin-tekton

frontend

3.7.7

Production

./dynamic-plugins/dist/janus-idp-backstage-plugin-tekton

 

Disabled

Topology

@janus-idp/backstage-plugin-topology

frontend

1.21.10

Production

./dynamic-plugins/dist/janus-idp-backstage-plugin-topology

 

Disabled

utils

@roadiehq/scaffolder-backend-module-utils

后端

1.15.3

社区支持

./dynamic-plugins/dist/roadiehq-scaffolder-backend-module-utils-dynamic

 

Enabled

注意

您可以将动态插件的配置存储在 Backstage 自定义资源(CR)可引用的 ConfigMap 对象中。

注意

如果 pluginConfig 字段引用环境变量,则必须在 secrets-rhdh secret 中定义变量。

流程

  1. 在 OpenShift Container Platform Web 控制台中选择 ConfigMaps 选项卡。
  2. Create ConfigMap
  3. 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 }

  4. Create
  5. 进入 Topology 视图。
  6. 点您要使用的 Red Hat Developer Hub 实例的溢出菜单,然后选择 Edit Backstage 以加载 Red Hat Developer Hub 实例的 YAML 视图。

    Operator 安装 2
  7. dynamicPluginsConfigMapName 字段添加到 Backstage CR。例如:

    apiVersion: rhdh.redhat.com/v1alpha1
    kind: Backstage
    metadata:
      name: my-rhdh
    spec:
      application:
    # ...
        dynamicPluginsConfigMapName: dynamic-plugins-rhdh
    # ...
  8. 点击 Save
  9. 返回到 Topology 视图并等待 Red Hat Developer Hub pod 启动。
  10. Open URL 图标以使用 Red Hat Developer Hub 平台以及新的配置更改。

验证

  • 通过在 Red Hat Developer Hub root 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"
      },
    ]

2.4. 使用 Helm chart 安装动态插件

您可以使用 Helm Chart 部署 Developer Hub 实例,这是灵活的安装方法。使用 Helm Chart,您可以将动态插件加载到 Developer Hub 实例中,而无需重新编译代码或重建容器。

要使用 Helm 在 Developer Hub 中安装动态插件,请在 Helm Chart 中添加以下 global.dynamic 参数:

  • plugins: 用于安装的动态插件列表。默认情况下,列表为空。您可以使用以下字段填充 plugins 列表:

    • 软件包 :您要安装的动态插件软件包的软件包规格。您可以使用软件包进行本地或外部动态插件安装。对于本地安装,请使用包含动态插件的本地文件夹的路径。对于外部安装,请使用公共 NPM 存储库中的软件包规格。
    • 完整性 (外部软件包需要):一个完整性校验和,格式为特定于软件包的 &lt ;alg>-<digest >。支持的算法包括 sha256SHA384sha512
    • pluginConfig :特定于插件的 app-config YAML 片段。如需更多信息,请参阅插件配置。
    • disabled :如果设为 true,则禁用动态插件。默认值: false
  • 包括 :使用相同语法的 YAML 文件列表。
注意

包含 文件中的 plugins 列表与主 Helm 值中的 plugins 列表合并。如果两个插件列表中提到了 插件 软件包,则主 Helm 值中的 plugins 字段会覆盖 includes 文件中的 plugins 字段。默认配置包括 dynamic-plugins.default.yaml 文件,其中包含 Developer Hub 中预安装的所有动态插件,无论是默认启用还是禁用。

2.4.1. 获取完整性 checksum

要获取完整性 checksum,请输入以下命令:

npm view <package name>@<version> dist.integrity

2.4.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

2.4.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=='
注意

您可以通过设置自定义 NPM registry,在 air-gapped 环境中安装外部插件。

您可以使用 Helm Chart 为动态插件软件包配置 NPM registry URL 和身份验证信息。对于通过 npm pack 获取的动态插件软件包,您可以使用 .npmrc 文件。

使用 Helm Chart,使用以下内容创建名为 dynamic-plugins-npmrc 的 secret,将 .npmrc 文件添加到 NPM registry 中:

apiVersion: v1
kind: Secret
metadata:
  name: dynamic-plugins-npmrc
type: Opaque
stringData:
  .npmrc: |
    registry=<registry-url>
    //<registry-url>:_authToken=<auth-token>
          ...

2.6. 动态插件的基本配置

有些动态插件需要设置环境变量。如果没有设置强制环境变量,并且插件已启用,则应用程序在启动时可能会失败。

每个插件的必要环境变量列在 动态插件支持列表中

注意

ZiB-bomb 检测在安装一些包含大型文件的动态插件时,如果安装脚本认为软件包存档成为 Zib-Bomb,安装会失败。

要增加软件包存档中文件的最大允许大小,您可以从默认的 20000000 字节增加部署 install-dynamic-plugins initContainerMAX_ENTRY_SIZE 环境值。

Red Hat Developer Hub 的 Ansible 插件通过策展的学习路径、一键式内容创建、集成开发工具和其他建议资源提供 Ansible 特定的门户体验。

重要

Ansible 插件只是一个技术预览功能。

红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能的更多信息,请参阅 技术预览功能范围

有关红帽如何提供对捆绑社区动态插件的支持的更多详细信息,请参阅 Red Hat Developer Support Policy 页面。

2.7.1. 对于管理员

要安装和配置 Ansible 插件,请参阅为 Red Hat Developer Hub 安装 Ansible 插件

2.7.2. 对于用户

要使用 Ansible 插件,请参阅为 Red Hat Developer Hub 使用 Ansible 插件

2.8. 安装和配置 Keycloak

将 Keycloak 后端插件集成到 Developer Hub 中,具有以下功能:

  • 同步域中的 Keycloak 用户。
  • 在域中同步 Keycloak 组及其用户。

2.8.1. 对于管理员

2.8.1.1. 安装

Keycloak 插件在 Developer Hub 中预加载,带有基本配置属性。要启用它,将 disabled 属性设置为 false,如下所示:

global:
  dynamic:
    includes:
      - dynamic-plugins.default.yaml
    plugins:
      - package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-keycloak-backend-dynamic
        disabled: false
2.8.1.2. 基本配置

要启用 Keycloak 插件,您必须设置以下环境变量:

  • KEYCLOAK_BASE_URL
  • KEYCLOAK_LOGIN_REALM
  • KEYCLOAK_REALM
  • KEYCLOAK_CLIENT_ID
  • KEYCLOAK_CLIENT_SECRET
2.8.1.3. 高级配置

调度配置

您可以在 app-config.yaml 文件中配置调度,如下所示:

     catalog:
       providers:
         keycloakOrg:
           default:
             # ...
             # highlight-add-start
             schedule: # optional; same options as in TaskScheduleDefinition
               # supports cron, ISO duration, "human duration" as used in code
               frequency: { minutes: 1 }
               # supports ISO duration, "human duration" as used in code
               timeout: { minutes: 1 }
               initialDelay: { seconds: 15 }
               # highlight-add-end
注意

如果您在 app-config.yaml 文件中对调度进行了任何更改,则重启以应用更改。

Keycloak 查询参数

您可以覆盖 app-config.yaml 文件中的默认 Keycloak 查询参数,如下所示:

   catalog:
     providers:
       keycloakOrg:
         default:
           # ...
           # highlight-add-start
           userQuerySize: 500 # Optional
           groupQuerySize: 250 # Optional
           # highlight-add-end

使用 Keycloak API 启用 Developer Hub 和 Keycloak 之间的通信。用户名和密码或客户端凭证是支持的身份验证方法。

下表描述了您可以配置在 app-config.yaml 文件中的 catalog.providers.keycloakOrg.<ENVIRONMENT_NAME > 对象下启用插件的参数:

Expand
Name描述默认值必填

baseUrl

Keycloak 服务器的位置,如 https://localhost:8443/auth。请注意,Keycloak 的较新版本省略了 /auth 上下文路径。

""

realm

要同步的域

master

loginRealm

用于验证的域

master

username

进行身份验证的用户名

""

如果使用基于密码的身份验证,则为

password

进行身份验证的密码

""

如果使用基于密码的身份验证,则为

clientId

要进行身份验证的客户端 ID

""

如果使用基于客户端凭证的身份验证,则为 yes

clientSecret

要进行身份验证的客户端 Secret

""

如果使用基于客户端凭证的身份验证,则为 yes

userQuerySize

一次查询的用户数

100

groupQuerySize

一次查询的组数

100

在使用客户端凭据时,必须将访问类型设为 机密,并且必须启用服务帐户。您还必须从 realm-management 客户端角色中添加以下角色:

  • query-groups
  • query-users
  • view-users
2.8.1.4. 限制

如果您有自签名或企业证书问题,您可以在启动 Developer Hub 前设置以下环境变量:

NODE_TLS_REJECT_UNAUTHORIZED=0

注意

不建议设置环境变量的解决方案。

2.8.2. 对于用户

成功配置插件后,插件会在每次启动时都会导入用户和组。

注意

如果您设置了调度,则用户和组也会被导入。

第一次导入完成后,您可以从目录页面中选择 User 来列出用户:

catalog-list

您可以在页面中查看用户列表:

user-list

当您选择一个用户时,您可以看到从 Keycloak 导入的信息:

user-profile

您还可以选择一个组,查看列表,并为组选择或查看从 Keycloak 导入的信息:

group-profile

2.9. 安装和配置 Nexus 存储库管理器

Nexus Repository Manager 插件显示有关 Developer Hub 应用中构建工件的信息。构建工件在 Nexus Repository Manager 中提供。

重要

Nexus Repository Manager 插件只是一个技术预览功能。

红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能的更多信息,请参阅 技术预览功能范围

有关红帽如何提供对捆绑社区动态插件的支持的更多详细信息,请参阅 Red Hat Developer Support Policy 页面。

2.9.1. 对于管理员

2.9.1.1. 安装和配置 Nexus Repository Manager 插件

安装

Nexus Repository Manager 插件在 Developer Hub 中预加载,带有基本配置属性。要启用它,将 disabled 属性设置为 false,如下所示:

global:
  dynamic:
    includes:
      - dynamic-plugins.default.yaml
    plugins:
      - package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-nexus-repository-manager
        disabled: false

配置

  1. app-config.yaml 文件中将代理设置为所需的 Nexus Repository Manager 服务器,如下所示:

    proxy:
        '/nexus-repository-manager':
        target: 'https://<NEXUS_REPOSITORY_MANAGER_URL>'
        headers:
            X-Requested-With: 'XMLHttpRequest'
            # Uncomment the following line to access a private Nexus Repository Manager using a token
            # Authorization: 'Bearer <YOUR TOKEN>'
        changeOrigin: true
        # Change to "false" in case of using self hosted Nexus Repository Manager instance with a self-signed certificate
        secure: true
  2. 可选:更改 Nexus Repository Manager 代理的基本 URL,如下所示:

    nexusRepositoryManager:
        # default path is `/nexus-repository-manager`
        proxyPath: /custom-path
  3. 可选:启用以下实验性注解:

    nexusRepositoryManager:
        experimentalAnnotations: true
  4. 使用以下注解给实体添加注解:

    metadata:
        annotations:
        # insert the chosen annotations here
        # example
        nexus-repository-manager/docker.image-name: `<ORGANIZATION>/<REPOSITORY>`,

2.9.2. 对于用户

Nexus Repository Manager 是一个前端插件,可让您查看有关构建工件的信息。

先决条件

流程

  1. 打开 Developer Hub 应用程序,从 Catalog 页面中选择一个组件。
  2. 转至 BUILD ARTIFACTS 选项卡。

    BUILD ARTIFACTS 选项卡包含构建工件和相关信息的列表,如 VERSION、REPOSITORY TYPE、REPOSITORY TYPEMANIFESTMODIFIEDSIZE

    nexus-repository-manager-tab

2.10. 安装和配置 Tekton

您可以使用 Tekton 插件来视觉化 CI/CD 管道在 Kubernetes 或 OpenShift 集群上运行的结果。该插件允许用户可视化查看管道中所有相关任务的高级别状态。

2.10.1. 对于管理员

2.10.1.1. 安装

先决条件

  • 您已安装并配置了 @backstage/plugin-kubernetes@backstage/plugin-kubernetes-backend 动态插件。
  • 您已将 Kubernetes 插件配置为使用 ServiceAccount 连接到集群。
  • 对于访问集群的 ServiceAccount,必须为自定义资源(PipelineRuns 和 TaskRuns)授予 ClusterRole

    注意

    如果您配置了 RHDH Kubernetes 插件,则必须授予 ClusterRole

  • 要查看 pod 日志,您已为 pod/log 授予权限。
  • 您可以使用以下代码为自定义资源和 pod 日志授予 ClusterRole

    kubernetes:
       ...
       customResources:
         - group: 'tekton.dev'
           apiVersion: 'v1'
           plural: 'pipelineruns'
         - group: 'tekton.dev'
           apiVersion: 'v1'
    
    
     ...
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        name: backstage-read-only
      rules:
        - apiGroups:
            - ""
          resources:
            - pods/log
          verbs:
            - get
            - list
            - watch
        ...
        - apiGroups:
            - tekton.dev
          resources:
            - pipelineruns
            - taskruns
          verbs:
            - get
            - list

    您可以将准备的清单用于只读 ClusterRole,它为 Kubernetes 插件和 Tekton 插件提供访问权限。

  • 在实体的 catalog-info.yaml 文件中添加以下注解,以识别实体是否包含 Kubernetes 资源:

    annotations:
      ...
    
      backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
  • 您还可以添加 backstage.io/kubernetes-namespace 注解来使用定义的命名空间标识 Kubernetes 资源。

    annotations:
      ...
    
      backstage.io/kubernetes-namespace: <RESOURCE_NS>
  • 将以下注解添加到实体的 catalog-info.yaml 文件中,以便在 RHDH 中启用 Tekton 相关功能。注解值标识 RHDH 实体的名称:

    annotations:
      ...
    
      janus-idp.io/tekton : <BACKSTAGE_ENTITY_NAME>
  • 添加自定义标签选择器,它 RHDH 用来查找 Kubernetes 资源。标签选择器优先于 ID 注解。

    annotations:
      ...
    
      backstage.io/kubernetes-label-selector: 'app=my-app,component=front-end'
  • 在资源中添加以下标签,以便 Kubernetes 插件从请求的实体获取 Kubernetes 资源:

    labels:
      ...
    
      backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
    注意

    使用标签选择器时,资源上必须存在上述标签。

流程

  • Tekton 插件在 RHDH 中预加载,带有基本配置属性。要启用它,将 disabled 属性设置为 false,如下所示:

    global:
      dynamic:
        includes:
          - dynamic-plugins.default.yaml
        plugins:
          - package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-tekton
            disabled: false

2.10.2. 对于用户

2.10.2.1. 在 RHDH 中使用 Tekton 插件

您可以使用 Tekton 前端插件来查看 PipelineRun 资源。

先决条件

流程

  1. 打开 RHDH 应用程序,然后从 Catalog 页面中选择一个组件。
  2. 转至 CI 选项卡。

    CI 选项卡显示与 Kubernetes 集群关联的 PipelineRun 资源列表。列表中包含管道运行详情,如 NAMEVULNERABILITIES、STAT、STATSTATUS STARTEDDURATION

    ci-cd-tab-tekton
  3. 点列表中的 PipelineRun 名称旁的展开行按钮来查看 PipelineRun visualization。管道运行资源包括要完成的任务。当您将鼠标指针悬停在任务卡上时,您可以查看完成该特定任务的步骤。

    ci-cd-tab-tekton

2.11. 启用并配置 Argo CD 插件

您可以使用 Argo CD 插件来视觉化 OpenShift GitOps 中的持续交付(CD)工作流。此插件提供对应用的状态、部署详情、提交消息、提交者、提升到环境和部署历史记录的容器镜像的可视化概述。

2.11.1. 对于管理员

2.11.1.1. 启用 Argo CD 插件

先决条件

  • app-config.yaml configmap 中添加 Argo CD 实例信息,如下例所示:

    argocd:
      appLocatorMethods:
        - type: 'config'
          instances:
            - name: argoInstance1
              url: https://argoInstance1.com
              username: ${ARGOCD_USERNAME}
              password: ${ARGOCD_PASSWORD}
            - name: argoInstance2
              url: https://argoInstance2.com
              username: ${ARGOCD_USERNAME}
              password: ${ARGOCD_PASSWORD}
  • 将以下注解添加到实体的 catalog-info.yaml 文件中,以识别 Argo CD 应用程序。

    annotations:
      ...
      # The label that Argo CD uses to fetch all the applications. The format to be used is label.key=label.value. For example, rht-gitops.com/janus-argocd=quarkus-app.
    
      argocd/app-selector: '${ARGOCD_LABEL_SELECTOR}'
  • (可选)在实体的 catalog-info.yaml 文件中添加以下注解,以在 Argo CD 实例间切换,如下例所示:

     annotations:
       ...
        # The Argo CD instance name used in `app-config.yaml`.
    
        argocd/instance-name: '${ARGOCD_INSTANCE}'
    注意

    如果没有设置此注解,Argo CD 插件默认为 app-config.yaml 中配置的第一个 Argo CD 实例。

流程

  1. 将以下内容添加到 dynamic-plugins ConfigMap 中以启用 Argo CD 插件。

    global:
      dynamic:
        includes:
          - dynamic-plugins.default.yaml
        plugins:
          - package: ./dynamic-plugins/dist/roadiehq-backstage-plugin-argo-cd-backend-dynamic
            disabled: false
          - package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-argocd
            disabled: false

2.11.2. 对于用户

先决条件

  • 您已在 Red Hat Developer Hub RHDH 中启用了 Argo CD 插件。

流程

  1. 选择 Catalog 选项卡,再选择要使用的组件。
  2. 选择 CD 选项卡查看 Argo CD 管理的部署的见解。

    CD 标签页 Argo CD
  3. 选择适当的卡来查看部署详情(例如,提交消息、作者名称和部署历史记录)。

    侧边栏
    1. 点击链接图标 Link icon 以打开 Argo CD 中的部署详情。
  4. 选择 Overview 选项卡,再导航到 Deployment summary 部分,以检查应用程序跨命名空间部署概述。另外,选择适当的 Argo CD 应用程序在 Argo CD 中打开部署详情,或者从 Revision 列中选择一个提交 ID,以查看 GitLab 或 GitHub 中的更改。

    部署概述

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部