搜索

第 4 章 自定义 Red Hat Developer Hub 中的主页

download PDF

在 Red Hat Developer Hub 中,Home 页面数据是可配置的,它可以作为代理传递给 app-config.yaml 文件。您可以使用以下方法提供主页数据:

  • 使用托管或 GitHub 或 GitLab 的 JSON 文件。要从 JSON 文件访问数据,您可以在 app-config.yaml 文件中添加以下代码:

    proxy:
      endpoints:
        # Other Proxies
        # customize developer hub instance
        '/developer-hub':
          target: <DOMAIN_URL> # i.e https://raw.githubusercontent.com/
          pathRewrite:
            '^/api/proxy/developer-hub': <path to json file> # i.e /janus-idp/backstage-showcase/main/packages/app/public/homepage/data.json
          changeOrigin: true
          secure: true
          # Change to "false" in case of using self hosted cluster with a self-signed certificate
          headers:
    	<HEADER_KEY>: <HEADER_VALUE> # optional and can be passed as needed i.e Authorization can be passed for private GitHub repo and PRIVATE-TOKEN can be passed for private GitLab repo
  • 使用单独的服务,使用 API 以 JSON 格式提供 Home 页面数据。

    注意

    不需要同一服务提供 Home 页面和 Tech Radar 数据。

    您可以使用 red-hat-developer-hub-customization-provider 作为示例服务,该服务为 Home page 和 Tech Radar 提供数据。red-hat-developer-hub-customization-provider 服务提供与默认的 Developer Hub 数据相同的数据。如果需要,您可以从 GitHub 中 fork red-hat-developer-hub-customization-provider 服务存储库,并使用您自己的数据进行修改。

本节论述了如何将 red-hat-developer-hub-customization-provider 服务部署到部署 Developer Hub Helm Chart 的集群。

先决条件

流程

  1. 在 Red Hat OpenShift 中,选择 +Add 并点 Import from Git 选项。
  2. 将 Git 存储库的 URL 添加到 Git Repo URL 字段中。

    要使用 red-hat-developer-hub-customization-provider 服务,您可以添加 red-hat-developer-hub-customization-provider 存储库的 URL。

  3. General 部分中,将 Name 字段中的值重命名为 rhdh-customization-provider,再单击 Create
  4. 前往 Advanced Options,再从 Target Port 复制值。

    Target Port 用于自动生成 Kubernetes 或 OpenShift 服务以与之进行通信。

  5. 要查看服务,请导航到 OpenShift Administrator 视图,再前往 Networking Service 部分。

    您还可以在 Topology 视图中查看 Service Resources

    如果您使用示例遵循这个步骤,则调用 rhdh-customization-provider 服务,并包含 8080 端口。为 Home 页面提供的 API URL 必须以 JSON 格式返回数据,如下例所示:

    [
      {
        "title": "Dropdown 1",
        "isExpanded": false,
        "links": [
          {
            "iconUrl": "https://imagehost.com/image.png",
            "label": "Dropdown 1 Item 1",
            "url": "https://example.com/"
          },
          {
            "iconUrl": "https://imagehost2.org/icon.png",
            "label": "Dropdown 1 Item 2",
            "url": ""
          }
        ]
      },
      {
        "title": "Dropdown 2",
        "isExpanded": true,
        "links": [
          {
            "iconUrl": "http://imagehost3.edu/img.jpg",
            "label": "Dropdown 2 Item 1",
            "url": "http://example.com"
          }
        ]
      }
    ]

    如果请求调用失败或没有配置,Developer Hub 实例会回退到默认的本地数据。

    要访问 Red Hat Developer Hub 中的 Home 页面,基本 URL 必须包含 /developer-hub 代理。

  6. 将以下代码添加到 app-config-rhdh.yaml 文件中:

    proxy:
      endpoints:
        # Other Proxies
        # customize developer hub instance
        '/developer-hub':
          target: ${HOMEPAGE_DATA_URL}
          changeOrigin: true
          # Change to "false" in case of using self-hosted cluster with a self-signed certificate
          secure: true

    确保 API 请求调用以 JSON 格式返回响应。

  7. HOMEPAGE_DATA_URL 定义为 http://<SERVICE_NAME>:8080。例如,'http://rhdh-customization-provider:8080

    您可以通过将 URL 添加到 rhdh-secrets 或直接在自定义 ConfigMap 中替换它来替换 HOMEPAGE_DATA_URL

  8. 删除 Developer Hub Pod 以拉取更改。

    如果镜像或图标没有加载,则通过将镜像或图标主机 URL 添加到自定义 ConfigMap 中的内容安全策略(csp) img-src 中列入白名单,如下所示:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: app-config-rhdh
    data:
      app-config-rhdh.yaml: |
        app:
          title: Red Hat Developer Hub
        backend:
          csp:
            connect-src:
              - "'self'"
              - 'http:'
              - 'https:'
            img-src:
              - "'self'"
              - 'data:'
              - <image host url 1>
              - <image host url 2>
              - <image host url 3>
        # Other Configurations

    之后,删除 pod 以确保正确载入新配置。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.