第 4 章 自定义 Red Hat Developer Hub 中的主页
在 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 中 forkred-hat-developer-hub-customization-provider
服务存储库,并使用您自己的数据进行修改。
本节论述了如何将 red-hat-developer-hub-customization-provider
服务部署到部署 Developer Hub Helm Chart 的集群。
先决条件
- 已使用 Helm Chart 安装 Red Hat Developer Hub。如需更多信息,请参阅 第 2 章 安装 Red Hat Developer Hub。
流程
- 在 Red Hat OpenShift 中,选择 +Add 并点 Import from Git 选项。
将 Git 存储库的 URL 添加到 Git Repo URL 字段中。
要使用
red-hat-developer-hub-customization-provider
服务,您可以添加 red-hat-developer-hub-customization-provider 存储库的 URL。- 在 General 部分中,将 Name 字段中的值重命名为 rhdh-customization-provider,再单击 Create。
前往 Advanced Options,再从 Target Port 复制值。
Target Port 用于自动生成 Kubernetes 或 OpenShift 服务以与之进行通信。
要查看服务,请导航到 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
代理。将以下代码添加到
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 格式返回响应。
将
HOMEPAGE_DATA_URL
定义为http://<SERVICE_NAME>:8080。例如,'http://rhdh-customization-provider:8080
。您可以通过将 URL 添加到
rhdh-secrets
或直接在自定义 ConfigMap 中替换它来替换HOMEPAGE_DATA_URL
。删除 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 以确保正确载入新配置。