2.2. 使用 Operator 在 OpenShift Container Platform 上部署 Red Hat Developer Hub


作为开发者,您可以使用 Red Hat OpenShift Container Platform Web 控制台中的 Developer Catalog 在 OpenShift Container Platform 上部署 Red Hat Developer Hub 实例。此部署方法使用 Red Hat Developer Hub Operator。

先决条件

流程

  1. 在 OpenShift Container Platform 中为 Red Hat Developer Hub 实例创建项目,或选择现有项目。

    提示

    有关在 OpenShift Container Platform 中创建项目的更多信息,请参阅 Red Hat OpenShift Container Platform 文档中的使用 Web 控制台 创建项目。

  2. 从 OpenShift Container Platform Web 控制台的 Developer 视角,点 +Add
  3. Developer Catalog 面板中,单击 Operator Backed
  4. Filter by keyword 框中,输入 Developer Hub 并点 Red Hat Developer Hub 卡。
  5. Create
  6. 为 Red Hat Developer Hub 实例 添加自定义配置
  7. Create Backstage 页面中,点 Create

验证

pod 就绪后,您可以通过打开 URL 来访问 Red Hat Developer Hub 平台。

  1. Topology 视图中的 pod 确认 pod 就绪,并确认 Details 面板中的 Status。当 pod 就绪时,pod 状态为 Active
  2. Topology 视图中,点 Developer Hub pod 上的 Open URL 图标。

2.2.1. 配置 Developer Hub 自定义资源

Backstage 自定义资源(CR)的更新由 Red Hat Developer Hub Operator 自动处理。但是,除非更新 CR 本身,否则对 CR 引用的资源(如 ConfigMap 或 Secret)的更新不会被自动更新。如果要更新 CR 引用的资源,您必须手动删除 Backstage Deployment,以便 Operator 可以使用更新的资源重新创建它。

要更改 Red Hat Developer Hub 实例的配置,您必须执行以下操作:

  • 将自定义应用程序配置文件添加到 OpenShift Container Platform 中,并在自定义资源(CR)中引用它。在 OpenShift Container Platform 中,您可以使用以下示例作为基础模板来创建 ConfigMap,如 app-config-rhdh.yaml

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: app-config-rhdh
    data:
      "app-config-rhdh.yaml": |
        app:
          title: Red Hat Developer Hub
          baseUrl: https://backstage-developer-hub-my-ns.apps.ci-ln-vtkzr22-72292.origin-ci-int-gce.dev.rhcloud.com
        backend:
          auth:
            keys:
              - secret: "${BACKEND_SECRET}"
          baseUrl: https://backstage-backstage-sample-my-ns.apps.ci-ln-vtkzr22-72292.origin-ci-int-gce.dev.rhcloud.com
          cors:
            origin: https://backstage-backstage-sample-my-ns.apps.ci-ln-vtkzr22-72292.origin-ci-int-gce.dev.rhcloud.com
    Copy to Clipboard Toggle word wrap
  • 使用 Red Hat Developer Hub 的强制后端 auth 密钥来引用 OpenShift Container Platform Secret 中定义的环境变量。
  • 在应用程序配置的 app.baseUrlbackend.baseUrlbackend.cors.origin 字段中设置 Red Hat Developer Hub 实例的外部 URL。默认情况下,URL 类似以下示例:https://backstage-< CUSTOM_RESOURCE_NAME>-<NAMESPACE_NAME>.<OPENSHIFT_INGRESS_DOMAIN>;.

    • 您可以使用 oc get ingresses.config/cluster -o jsonpath='{.spec.domain}' 命令显示入口域。如果要使用不同的主机或子域,请自定义 Custom Resource spec.application.route 字段,并相应地调整应用程序配置。
注意

您需要保护 Red Hat Developer Hub 安装不受外部和未授权访问的影响。像管理任何其他机密一样管理后端 auth 密钥。满足强的密码要求,不要在任何配置文件中公开它,仅将其作为环境变量注入配置文件中。

先决条件

  • 您有一个活跃的 Red Hat OpenShift Container Platform 帐户。

流程

  1. Developer 视角中,选择 ConfigMaps 选项卡。
  2. Create ConfigMap
  3. Configure via 中选择 YAML view 选项,并根据需要对文件进行更改。
  4. Create
  5. 选择 Secrets 选项卡。
  6. Create Key/value Secret
  7. 将 secret 命名为 secrets-rhdh
  8. 添加名为 BACKEND_SECRET 的键,并将 base64 编码字符串作为值。为每个 Red Hat Developer Hub 实例使用唯一值。例如,您可以使用以下命令从终端生成密钥:

    node -p 'require("crypto").randomBytes(24).toString("base64")'
    Copy to Clipboard Toggle word wrap
  9. Create
  10. 选择 Topology 视图。
  11. 点您要使用的 Red Hat Developer Hub 实例的 overflow 菜单,然后选择 Edit Backstage 来加载 Red Hat Developer Hub 实例的 YAML 视图。

  12. spec.application.appConfig.configMapsspec.application.extraEnvs.secrets 字段添加到自定义资源。例如:

    spec:
      application:
        appConfig:
          mountPath: /opt/app-root/src
          configMaps:
             - name: app-config-rhdh
        extraEnvs:
          secrets:
             - name: secrets-rhdh
        extraFiles:
          mountPath: /opt/app-root/src
        replicas: 1
        route:
          enabled: true
      database:
        enableLocalDb: true
    Copy to Clipboard Toggle word wrap
  13. 点击 Save
  14. 返回到 Topology 视图,并等待 Red Hat Developer Hub pod 启动。
  15. Open URL 图标开始使用带有新配置更改的 Red Hat Developer Hub 平台。

其他资源

您可以将动态插件的配置存储在 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: {}
    Copy to Clipboard Toggle word wrap

  4. Create
  5. 转至 Topology 选项卡。
  6. 点击您要使用的 Red Hat Developer Hub 实例的 overflow 菜单,然后选择 Edit Backstage 来加载 Red Hat Developer Hub 实例的 YAML 视图。

  7. dynamicPluginsConfigMapName 字段添加到 Backstage CR。例如:

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

验证

  • 通过将 /api/dynamic-plugins-info/loaded-plugins 附加到 Red Hat Developer Hub root URL 并检查插件列表来确保已加载了动态插件配置:

    插件列表示例

    [
      {
        "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"
      },
    ]
    Copy to Clipboard Toggle word wrap

在受限网络上运行的 OpenShift Container Platform 集群中,公共资源不可用。但是,部署 Red Hat Developer Hub Operator 并运行 Developer Hub 需要以下公共资源:

  • Operator 镜像(bundle、operator、catalog)
  • 操作对象镜像(RHDH, PostgreSQL)

要使这些资源可用,请将它们替换为 OpenShift Container Platform 集群可访问的镜像 registry 中的等效资源。

您可以使用一个帮助程序脚本来镜像所需的镜像,并提供必要的配置,以确保在安装 Red Hat Developer Hub Operator 和创建 Developer Hub 实例时将使用这些镜像。

注意

如果 OpenShift Container Platform 集群已准备好在受限网络中操作,此脚本需要已安装目标镜像 registry。但是,如果您准备集群进行断开连接的使用,您可以使用该脚本在集群中部署镜像 registry,并使用它来镜像(mirror)过程。

先决条件

注意

内部 OpenShift Container Platform 集群镜像 registry 不能用作目标镜像 registry。请参阅关于镜像 registry

  • 如果要创建自己的镜像 registry,请参阅为 Red Hat OpenShift 创建带有镜像 registry 的镜像 registry
  • 如果您还没有镜像 registry,您可以使用 helper 脚本为您创建一个,您需要以下额外先决条件:

    • 已安装 cURL 软件包。对于 Red Hat Enterprise Linux,可通过安装 curl 软件包来使用 curl 命令。要将 curl 用于其他平台,请查看 cURL 网站
    • htpasswd 命令可用。对于 Red Hat Enterprise Linux,可以通过安装 httpd-tools 软件包来使用 htpasswd 命令。

流程

  1. 下载并运行镜像脚本以安装自定义 Operator 目录并镜像相关的镜像: prepare-restricted-environment.sh (source)。

    curl -sSLO https://raw.githubusercontent.com/janus-idp/operator/1.1.x/.rhdh/scripts/prepare-restricted-environment.sh
    
    # if you do not already have a target mirror registry
    # and want the script to create one for you
    # use the following example:
    bash prepare-restricted-environment.sh \
       --prod_operator_index "registry.redhat.io/redhat/redhat-operator-index:v4.14" \
       --prod_operator_package_name "rhdh" \
       --prod_operator_bundle_name "rhdh-operator" \
       --prod_operator_version "v1.1.1"
    
    # if you already have a target mirror registry
    # use the following example:
    bash prepare-restricted-environment.sh \
       --prod_operator_index "registry.redhat.io/redhat/redhat-operator-index:v4.14" \
       --prod_operator_package_name "rhdh" \
       --prod_operator_bundle_name "rhdh-operator" \
       --prod_operator_version "v1.1.1" \
       --use_existing_mirror_registry "my_registry"
    Copy to Clipboard Toggle word wrap
    注意

    完成该脚本可能需要几分钟时间,因为它会将多个镜像复制到镜像 registry。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat