3.2. 在 Red Hat Developer Hub 中为目录添加源控制
要在 Red Hat Developer Hub 中填充目录,您需要添加软件模板,并添加模板,您必须启用源控制,如 GitHub、GitLab 或 BitBucket。
先决条件
- 您有一个 GitHub 帐户。
- 在 Red Hat OpenShift 集群上有一个帐户。
- 已安装 Developer Hub,否则 GitHub 登录失败。有关安装的详情,请参考 第 2 章 安装 Red Hat Developer Hub。
3.2.1. 配置 GitHub 身份验证
需要 GitHub 身份验证配置,才能在 Developer Hub 中启用 GitHub OAuth 登录。
流程
- 在 Red Hat OpenShift 集群中,导航到您要创建 OAuth 应用程序的 GitHub 机构的主页面。
-
点 Settings
Developer Settings OAuth Apps Register an application -
输入应用程序名称作为
Developer Hub
。 将以下 URL 添加为 Homepage URL :
https://developer-hub-<NAMESPACE_NAME>.<OPENSHIFT_ROUTE_HOST>/
将以下 URL 添加为 授权回调 URL :
https://developer-hub-<NAMESPACE_NAME>.<OPENSHIFT_ROUTE_HOST>/api/auth/github/handler/frame
- 清除 Enable Device Flow 复选框。
- 点 Register application 创建 OAuth 应用程序。
- 创建应用程序后,点 Generate a new client secret 并复制生成的客户端 secret。
- 在 OpenShift 中,单击 ConfigMaps。
使用提供的环境变量作为键,生成名为 'github-secrets' 的键/值 secret,然后输入您为 GitHub OAuth 应用程序生成的值:
- 在 Red Hat OpenShift 中,进入 Secrets 选项卡,再点 Create。
- 选择 Key/value secret。
-
输入 Secret 名称作为
github-secrets
。 将环境变量添加为 Key 和 Value,再单击 Create。
表 3.1. 环境变量 键 值 GITHUB_OAUTH_CLIENT_ID
来自 OAuth 应用程序的客户端 ID
GITHUB_OAUTH_CLIENT_SECRET
OAuth 应用程序的客户端 Secret
修改
app-config-rhdh
ConfigMap 使其包含 GitHub 身份验证配置,如下所示:kind: ConfigMap apiVersion: v1 metadata: name: app-config-rhdh data: app-config-rhdh.yaml: | app: title: Red Hat Developer Hub auth: # see https://backstage.io/docs/auth/ to learn about auth providers environment: development providers: github: development: clientId: ${GITHUB_OAUTH_CLIENT_ID} clientSecret: ${GITHUB_OAUTH_CLIENT_SECRET}
- 点击 Save。
- 进入 Helm 选项卡并选择 Upgrade。
使用以下视图之一编辑 Helm 配置:
使用 Form view
-
展开 Root Schema
Backstage Chart Schema Backstage Parameters Backstage container 环境变量。 - 从现有的 Secrets 链接点 Add Backstage 容器环境变量。
-
输入
github-secrets
作为值。 - 单击 Upgrade。
-
展开 Root Schema
使用 YAML 视图
将
upstream.backstage.extraEnvVarsSecrets
的值设置为github-secrets
,如下例所示:# other Red Hat Developer Hub Helm Chart configurations upstream: backstage: # other Red Hat Developer Hub Helm Chart configurations extraEnvVarsSecrets: - github-secrets # other Red Hat Developer Hub Helm Chart configurations
- 单击 Upgrade。
3.2.2. 配置 GitHub 集成
在 Developer Hub 中启用 GitHub 插件需要配置 GitHub。
流程
- 在 Red Hat OpenShift 集群中,导航到您要创建 OAuth 应用程序的 GitHub 机构的主页面。
-
点 Settings
Developer Settings GitHub Apps New GitHub App。 -
输入应用程序名称作为
Developer Hub
。 将以下 URL 添加为 Homepage URL :
https://developer-hub-<NAMESPACE_NAME>.<OPENSHIFT_ROUTE_HOST>/
将以下 URL 添加为 授权回调 URL :
https://developer-hub-<NAMESPACE_NAME>.<OPENSHIFT_ROUTE_HOST>/api/auth/github/handler/frame
-
取消选择 Webhook URL
Active。 - 在 可以安装此 GitHub 应用程序的位置下,请确保只选择此帐户。
- 点击 Register application。
- 创建应用程序后,点 Generate a new client secret 并复制生成的客户端 secret。
- 点页面底部的 Generate a私钥 并下载生成的文件。
- 在 OpenShift 中,单击 ConfigMaps。
使用提供的环境变量作为键,生成名为 'github-secrets' 的键/值 secret,然后输入您为 GitHub OAuth 应用程序生成的值:
- 在 Red Hat OpenShift 中,进入 Secrets 选项卡,再点 Create。
- 选择 Key/value secret。
-
输入 Secret 名称作为
github-secrets
。 - 将环境变量添加为 Key 和 Value,再单击 Create。
表 3.2. 环境变量 键 值 GITHUB_APP_APP_ID
来自 GitHub 应用程序的应用程序 ID
GITHUB_APP_CLIENT_ID
来自 GitHub 应用程序的客户端 ID
GITHUB_APP_CLIENT_SECRET
GitHub 应用程序的客户端 Secret
GITHUB_APP_WEBHOOK_URL
输入 "none"
GITHUB_APP_WEBHOOK_SECRET
输入 "none"
GITHUB_APP_PRIVATE_KEY
上传下载的私钥
修改
app-config-rhdh
ConfigMap 使其包含 GitHub 集成配置,如下所示:kind: ConfigMap apiVersion: v1 metadata: name: app-config-rhdh data: app-config-rhdh.yaml: | app: title: Red Hat Developer Hub integrations: github: - host: github.com apps: - appId: ${GITHUB_APP_APP_ID} clientId: ${GITHUB_APP_CLIENT_ID} clientSecret: ${GITHUB_APP_CLIENT_SECRET} webhookUrl: ${GITHUB_APP_WEBHOOK_URL} webhookSecret: ${GITHUB_APP_WEBHOOK_SECRET} privateKey: | ${GITHUB_APP_PRIVATE_KEY}
-
点 Toplogy
developer hub Actions (drop-down)→ Restart rollout。
3.2.3. 在 Red Hat Developer Hub 中启用 GitHub 发现
您可以为 Developer Hub 中的组件启用 GitHub 发现功能,如包含 catalog-info.yaml
文件的任何存储库。
先决条件
- 您已设置 GitHub 集成。如需更多信息,请参阅 第 3.2.2 节 “配置 GitHub 集成”。
流程
- 在 OpenShift Container Platform Web 控制台的 Developer 视角中,进入 Helm 选项卡。
- 点 Helm 发行版本的 overflow 菜单并选择 Upgrade。
使用以下视图之一编辑 Helm 配置:
使用 Form view
-
展开 Root Schema
global Dynamic plugins configuration 在 backstage 应用中安装的动态插件列表。 - 单击 backstage 应用链接中应安装的动态插件的 Add List。
在要安装的动态插件的 Package 规格中。它应该可以被
npm pack
命令使用。 字段,添加以下值:./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic
- 单击 Upgrade。
-
展开 Root Schema
使用 YAML 视图
将
global.dynamic.plugins.package
参数的值设置为./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic
,如下例所示:global: dynamic: # other Red Hat Developer Hub Helm Chart configurations plugins: - disabled: false package: >- ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic # other Red Hat Developer Hub Helm Chart configurations
- 单击 Upgrade。
在 ConfigMap 中添加以下代码:
kind: ConfigMap apiVersion: v1 metadata: name: app-config-rhdh data: app-config-rhdh.yaml: | ... catalog: providers: github: providerId: organization: '${GITHUB_ORG}' schedule: frequency: minutes: 30 initialDelay: seconds: 15 timeout: minutes: 3 ...
在前面的代码中,将
${GITHUB_ORG}
替换为您要发现组件的 GitHub 组织。另外,如果只有一个供应商,可以在 ConfigMap 中添加以下代码:kind: ConfigMap apiVersion: v1 metadata: name: app-config-rhdh data: app-config-rhdh.yaml: | ... catalog: providers: github: organization: ${GITHUB_ORG} schedule: frequency: { minutes: 1 } timeout: { minutes: 1 } initialDelay: { seconds: 100 } ...
当存在列表时,需要前面的代码中的
providerId
来识别提供程序。- 点击 Save。
3.2.4. 在 Red Hat Developer Hub 中启用 GitHub 机构成员发现
您还可以为 GitHub 组织的成员启用 GitHub 发现功能。
先决条件
- 您已设置 GitHub 集成。如需更多信息,请参阅 第 3.2.2 节 “配置 GitHub 集成”。
流程
- 在 OpenShift Container Platform Web 控制台的 Developer 视角中,进入 Helm 选项卡。
- 点 Helm 发行版本的 overflow 菜单并选择 Upgrade。
使用以下视图之一编辑 Helm 配置:
使用 Form view
-
展开 Root Schema
global Dynamic plugins configuration 在 backstage 应用中安装的动态插件列表。 - 单击 backstage 应用链接中应安装的动态插件的 Add List。
在要安装的动态插件的 Package 规格中。它应该可以被
npm pack
命令使用。 字段,添加以下值:./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-org-dynamic
- 单击 Upgrade。
-
展开 Root Schema
使用 YAML 视图
将
global.dynamic.plugins.package
参数的值设置为./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-org-dynamic
,如下例所示:global: dynamic: # other Red Hat Developer Hub Helm Chart configurations plugins: - disabled: false package: >- ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-org-dynamic # other Red Hat Developer Hub Helm Chart configurations
- 单击 Upgrade。
在 ConfigMap 中添加以下代码:
kind: ConfigMap apiVersion: v1 metadata: name: app-config-rhdh data: app-config-rhdh.yaml: | ... catalog: providers: githubOrg: id: production githubUrl: "${GITHUB_URL}" orgs: [ "${GITHUB_ORG}" ] ...
其中:
${GITHUB_URL}
- 表示必须替换为 GitHub URL 的变量。
${GITHUB_ORG}
- 表示必须替换为您要从中嵌套用户的 GitHub 组织的变量。
- 点击 Save。