1.2. 使用 Red Hat Developer Hub Operator 使用自定义配置运行 Developer Hub


要使用 Developer Hub Operator 使用自定义配置运行 Red Hat Developer Hub,请创建 Backstage 自定义资源(CR):

  • 挂载自定义配置映射中置备的文件。
  • 注入自定义 secret 中置备的环境变量。

先决条件

  • 通过使用 OpenShift CLI (oc),您可以访问开发人员权限,可以访问一个旨在包含 Developer Hub 实例的 OpenShift Container Platform 集群。
  • 您的管理员已在集群中安装 Red Hat Developer Hub Operator。
  • 您已在 < my-rhdh-project& gt; 项目中置备了自定义配置映射和 secret。
  • 您有一个正常工作的默认存储类,如 EBS 存储附加组件,在 EKS 集群中配置。

流程

  1. my-rhdh-custom-resource.yaml 文件中编写您的 Backstage CR,以使用您的自定义配置映射和 secret。

    最小 my-rhdh-custom-resource.yaml 自定义资源示例:

    apiVersion: rhdh.redhat.com/v1alpha3
    kind: Backstage
    metadata:
      name: my-rhdh-custom-resource
    spec:
      application:
        appConfig:
          mountPath: /opt/app-root/src
          configMaps:
             - name: my-rhdh-app-config
        extraEnvs:
          secrets:
             - name: <my_product_secrets>
        extraFiles:
          mountPath: /opt/app-root/src
        route:
          enabled: true
      database:
        enableLocalDb: true
    Copy to Clipboard Toggle word wrap

    带有动态插件和 RBAC 策略配置映射的 my-rhdh-custom-resource.yaml 自定义资源示例,以及外部 PostgreSQL 数据库 secret:

    apiVersion: rhdh.redhat.com/v1alpha3
    kind: Backstage
    metadata:
      name: <my-rhdh-custom-resource>
    spec:
      application:
        appConfig:
          mountPath: /opt/app-root/src
          configMaps:
             - name: my-rhdh-app-config
             - name: rbac-policies
        dynamicPluginsConfigMapName: dynamic-plugins-rhdh
        extraEnvs:
          secrets:
             - name: <my_product_secrets>
             - name: my-rhdh-database-secrets
        extraFiles:
          mountPath: /opt/app-root/src
          secrets:
            - name: my-rhdh-database-certificates-secrets
              key: postgres-crt.pem, postgres-ca.pem, postgres-key.key
        route:
          enabled: true
      database:
        enableLocalDb: false
    Copy to Clipboard Toggle word wrap
    必填字段
    不需要字段。您可以创建一个空的 Backstage CR,并使用默认配置运行 Developer Hub。
    可选字段
    spec.application.appConfig.configMaps
    输入您的配置映射名称列表。

    my-rhdh-app-config 配置映射中挂载文件:

    spec:
      application:
        appConfig:
          mountPath: /opt/app-root/src
          configMaps:
             - name: my-rhdh-app-config
    Copy to Clipboard Toggle word wrap

    my-rhdh-app-configrbac-policies 配置映射中挂载文件:

    spec:
      application:
        appConfig:
          mountPath: /opt/app-root/src
          configMaps:
             - name: my-rhdh-app-config
             - name: rbac-policies
    Copy to Clipboard Toggle word wrap
    spec.application.extraEnvs.envs

    (可选)输入不是 secret 的额外环境变量,如 代理环境变量

    注入 HTTP_PROXYHTTPS_PROXYNO_PROXY 环境变量:

    spec:
      application:
        extraEnvs:
          envs:
            - name: HTTP_PROXY
              value: 'http://10.10.10.105:3128'
            - name: HTTPS_PROXY
              value: 'http://10.10.10.106:3128'
            - name: NO_PROXY
              value: 'localhost,example.org'
    Copy to Clipboard Toggle word wrap
    spec.application.extraEnvs.secrets

    输入环境变量 secret 名称列表。

    在 Red Hat Developer Hub secret 中注入环境变量:

    spec:
      application:
        extraEnvs:
          secrets:
             - name: <my_product_secrets>
    Copy to Clipboard Toggle word wrap

    在 Red Hat Developer Hub 和 my-rhdh-database-secrets secret 中注入环境变量:

    spec:
      application:
        extraEnvs:
          secrets:
             - name: <my_product_secrets>
             - name: my-rhdh-database-secrets
    Copy to Clipboard Toggle word wrap
    注意

    <my_product_secrets > 是您首选的 Developer Hub secret 名称,在 Developer Hub 中指定 secret 配置的标识符。

    spec.application.extraFiles.secrets

    输入您的证书文件 secret 名称和文件列表。

    挂载 postgres-crt.pempostgres-ca.pempostgres-key.key 文件,该文件包含在 my-rhdh-database-certificates-secrets secret 中:

    spec:
      application:
        extraFiles:
          mountPath: /opt/app-root/src
          secrets:
            - name: my-rhdh-database-certificates-secrets
              key: postgres-crt.pem, postgres-ca.pem, postgres-key.key
    Copy to Clipboard Toggle word wrap
    spec.database.enableLocalDb

    启用或禁用本地 PostgreSQL 数据库。

    禁用本地 PostgreSQL 数据库生成以使用外部 postgreSQL 数据库:

    spec:
      database:
        enableLocalDb: false
    Copy to Clipboard Toggle word wrap

    在开发环境中,使用本地 PostgreSQL 数据库:

    spec:
      database:
        enableLocalDb: true
    Copy to Clipboard Toggle word wrap
    spec.deployment
    (可选) 输入您的部署配置
  2. 应用 Backstage CR 来启动或更新 Developer Hub 实例:

    $ oc apply --filename=my-rhdh-custom-resource.yaml --namespace=my-rhdh-project
    Copy to Clipboard Toggle word wrap

mountPath 字段指定 ConfigMap 或 Secret 挂载的位置。mount 的行为(无论是包含还是排除 subPath )取决于 keymountPath 字段的规格。

  • 如果没有指定 keymountPath :每个键或值都挂载为带有 subPath 的文件名或内容。
  • 如果使用或不使用 mountPath 指定密钥:指定的 key 或 value 使用 subPath 挂载。
  • 如果只指定 mountPath :包含所有键或值的目录,但没有 subPath
  • 如果没有指定 containers 字段:卷仅挂载到 backstage-backend 容器。默认情况下,文件仅挂载到 backstage-backend 容器。您还可以按名称(如 dynamic-plugin-installselectcustom sidecars)指定其他目标,包括容器列表。
注意
  • OpenShift Container Platform 不会自动更新使用 subPath 挂载的卷。默认情况下,RHDH Operator 会监控这些 ConfigMap 或 Secret,并在发生更改时刷新 RHDH Pod。
  • 为了安全起见,Red Hat Developer Hub 不授予 Operator Service Account 对 Secret 的读取访问权限。因此,不支持在不指定 mountPath 和 key 的情况下挂载 Secret 的文件。

流程

  1. 将配置应用到您的 Backstage 自定义资源(CR)。以下代码块是一个示例:

    spec:
      application:
        extraFiles:
          mountPath: _<default_mount_path>_
          configMaps:
            - name: _<configmap_name_all_entries>_
            - name: _<configmap_name_single_key>_
              key: _<specific_file_key>_
              containers:
                - "*"
            - name: _<configmap_name_custom_path>_
              mountPath: _<custom_cm_mount_path>_
              containers:
                - backstage-backend
                - install-dynamic-plugins
          secrets:
            - name: _<secret_name_single_key>_
              key: _<specific_secret_key>_
              containers:
                - install-dynamic-plugins
            - name: _<secret_name_custom_path>_
              mountPath: _<custom_secret_mount_path>_
          pvcs:
            - name: _<pvc_name_default_path>_
            - name: _<pvc_name_custom_path>_
              mountPath: _<custom_pvc_mount_path>_
        extraEnvs:
          configMaps:
            - name: _<configmap_name_env_var>_
              key: _<env_var_key>_
              containers:
                - "*"
          secrets:
            - name: _<secret_name_all_envs>_
          envs:
            - name: _<static_env_var_name>_
              value: "_<static_env_var_value>_"
              containers:
               - install-dynamic-plugins
    Copy to Clipboard Toggle word wrap

    其中:

    spec.application.extraFiles.mountPath
    如果没有为资源设置特定的 mountPath,则指定文件的默认基本挂载路径(例如 /< default_mount_path>)。
    spec.application.extraFiles.configMaps.name
    将 < configmap_name_all_entries> 中的所有条目挂载到默认挂载路径。
    spec.application.extraFiles.configMaps.key
    从 ConfigMap 挂载一个指定的键(例如,& lt;specific_file_key>.txt)。
    spec.application.extraFiles.configMaps.containers
    以所有容器("*")为目标进行挂载。
    spec.application.extraFiles.configMaps.mountPath
    覆盖默认 ConfigMap 条目,并将所有 ConfigMap 条目作为目录挂载到指定路径(例如 /< custom_cm_mount_path>)。
    spec.application.extraFiles.secrets.key
    仅挂载来自 Secret 的特定密钥。
    spec.application.extraFiles.secrets.mountPath
    覆盖默认 Secret 条目,并将所有 Secret 条目作为目录挂载到指定路径(例如 /< custom_secret_mount_path>)。
    spec.application.extraFiles.pvcs.name
    将 PVC 挂载到默认挂载路径,并附加 PVC 名称(例如 /< default_mount_path>/<pvc_name_default_path>)。
    spec.application.extraFiles.pvcs.mountPath
    覆盖默认 PVC,并将 PVC 挂载到指定路径(如 /< custom_pvc_mount_path>)。
    spec.application.extraEnvs.configMaps.containers
    将指定的 ConfigMap 键作为环境变量注入所有容器("*")。
    spec.application.extraEnvs.secrets.name
    将 Secret 中的所有密钥作为环境变量注入到默认容器中。
    spec.application.envs.containers
    仅以为静态环境变量注入而列出的容器为目标。
注意

支持以下显式选项:

  • No 或一个空字段:只挂载到 backstage-backend 容器。
  • * (星号)作为第一个且唯一的数组元素:挂载到所有容器。
  • 显式容器名称,如 install-dynamic-plugins :只挂载到列出的容器。

验证

文件以以下正确的路径和容器目标挂载:

Expand
资源目标类型路径或名称Container (s)

ConfigMap (&lt;configmap_name_all_entries>)

File

/<default_mount_path>/<file_1_key>, /<default_mount_path>/<file_2_key>

backstage-backend

ConfigMap (&lt;configmap_name_single_key>)

File

/<default_mount_path>/<specific_file_key>.txt

All

ConfigMap (&lt;configmap_name_custom_path>)

目录

/<custom_cm_mount_path>/

backstage-backend,install-dynamic-plugins

Secret (&lt;secret_name_single_key>)

File

/<default_mount_path>/<specific_secret_key>.txt

install-dynamic-plugins

Secret (&lt;secret_name_custom_path>)

目录

/<custom_secret_mount_path>/

backstage-backend

PVC (<pvc_name_default_path>)

目录

/<default_mount_path>/<pvc_name_default_path>

backstage-backend

ConfigMap (<configmap_name_env_var>)

env Var

<env_var_key>

All

Secret (&lt;secret_name_all_envs>)

env Var

<secret_key_a>, <secret_key_b>

backstage-backend

CRD (envs)

env Var

<static_env_var_name> = <static_env_var_value>

install-dynamic-plugins

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部