搜索

3.2. 在 Red Hat Developer Hub 中为目录添加源控制

download PDF

要在 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 登录。

流程

  1. 在 Red Hat OpenShift 集群中,导航到您要创建 OAuth 应用程序的 GitHub 机构的主页面。
  2. Settings Developer Settings OAuth Apps Register an application
  3. 输入应用程序名称作为 Developer Hub
  4. 将以下 URL 添加为 Homepage URL

    https://developer-hub-<NAMESPACE_NAME>.<OPENSHIFT_ROUTE_HOST>/

  5. 将以下 URL 添加为 授权回调 URL

    https://developer-hub-<NAMESPACE_NAME>.<OPENSHIFT_ROUTE_HOST>/api/auth/github/handler/frame

  6. 清除 Enable Device Flow 复选框。
  7. Register application 创建 OAuth 应用程序。
  8. 创建应用程序后,点 Generate a new client secret 并复制生成的客户端 secret。
  9. 在 OpenShift 中,单击 ConfigMaps
  10. 使用提供的环境变量作为键,生成名为 'github-secrets' 的键/值 secret,然后输入您为 GitHub OAuth 应用程序生成的值:

    1. 在 Red Hat OpenShift 中,进入 Secrets 选项卡,再点 Create
    2. 选择 Key/value secret
    3. 输入 Secret 名称作为 github-secrets
    4. 将环境变量添加为 KeyValue,再单击 Create

      表 3.1. 环境变量

      GITHUB_OAUTH_CLIENT_ID

      来自 OAuth 应用程序的客户端 ID

      GITHUB_OAUTH_CLIENT_SECRET

      OAuth 应用程序的客户端 Secret

  11. 修改 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}
  12. 点击 Save
  13. 进入 Helm 选项卡并选择 Upgrade
  14. 使用以下视图之一编辑 Helm 配置:

    • 使用 Form view

      1. 展开 Root Schema Backstage Chart Schema Backstage Parameters Backstage container 环境变量
      2. 从现有的 Secrets 链接点 Add Backstage 容器环境变量。
      3. 输入 github-secrets 作为值。
      4. 单击 Upgrade
    • 使用 YAML 视图

      1. 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
      2. 单击 Upgrade

3.2.2. 配置 GitHub 集成

在 Developer Hub 中启用 GitHub 插件需要配置 GitHub。

流程

  1. 在 Red Hat OpenShift 集群中,导航到您要创建 OAuth 应用程序的 GitHub 机构的主页面。
  2. Settings Developer Settings GitHub Apps New GitHub App
  3. 输入应用程序名称作为 Developer Hub
  4. 将以下 URL 添加为 Homepage URL

    https://developer-hub-<NAMESPACE_NAME>.<OPENSHIFT_ROUTE_HOST>/

  5. 将以下 URL 添加为 授权回调 URL

    https://developer-hub-<NAMESPACE_NAME>.<OPENSHIFT_ROUTE_HOST>/api/auth/github/handler/frame

  6. 取消选择 Webhook URL Active
  7. 可以安装此 GitHub 应用程序的位置下,请确保只选择此帐户
  8. 点击 Register application
  9. 创建应用程序后,点 Generate a new client secret 并复制生成的客户端 secret。
  10. 点页面底部的 Generate a私钥 并下载生成的文件。
  11. 在 OpenShift 中,单击 ConfigMaps
  12. 使用提供的环境变量作为键,生成名为 'github-secrets' 的键/值 secret,然后输入您为 GitHub OAuth 应用程序生成的值:

    1. 在 Red Hat OpenShift 中,进入 Secrets 选项卡,再点 Create
    2. 选择 Key/value secret
    3. 输入 Secret 名称作为 github-secrets
    4. 将环境变量添加为 KeyValue,再单击 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

    上传下载的私钥

  13. 修改 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}
  14. Toplogy developer hub Actions (drop-down)→ Restart rollout

3.2.3. 在 Red Hat Developer Hub 中启用 GitHub 发现

您可以为 Developer Hub 中的组件启用 GitHub 发现功能,如包含 catalog-info.yaml 文件的任何存储库。

先决条件

流程

  1. 在 OpenShift Container Platform Web 控制台的 Developer 视角中,进入 Helm 选项卡。
  2. 点 Helm 发行版本的 overflow 菜单并选择 Upgrade
  3. 使用以下视图之一编辑 Helm 配置:

    • 使用 Form view

      1. 展开 Root Schema global Dynamic plugins configuration 在 backstage 应用中安装的动态插件列表
      2. 单击 backstage 应用链接中应安装的动态插件的 Add List
      3. 在要安装的动态插件的 Package 规格中。它应该可以被 npm pack 命令使用。 字段,添加以下值:

        ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic

        启用 gh discovery
      4. 单击 Upgrade
    • 使用 YAML 视图

      1. 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
      2. 单击 Upgrade
  4. 在 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 来识别提供程序。

  5. 点击 Save

3.2.4. 在 Red Hat Developer Hub 中启用 GitHub 机构成员发现

您还可以为 GitHub 组织的成员启用 GitHub 发现功能。

先决条件

流程

  1. 在 OpenShift Container Platform Web 控制台的 Developer 视角中,进入 Helm 选项卡。
  2. 点 Helm 发行版本的 overflow 菜单并选择 Upgrade
  3. 使用以下视图之一编辑 Helm 配置:

    • 使用 Form view

      1. 展开 Root Schema global Dynamic plugins configuration 在 backstage 应用中安装的动态插件列表
      2. 单击 backstage 应用链接中应安装的动态插件的 Add List
      3. 在要安装的动态插件的 Package 规格中。它应该可以被 npm pack 命令使用。 字段,添加以下值:

        ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-org-dynamic

        启用 gh 成员发现
      4. 单击 Upgrade
    • 使用 YAML 视图

      1. 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
      2. 单击 Upgrade
  4. 在 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 组织的变量。
  5. 点击 Save
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.