Red Hat Developer Hub 的管理指南


Red Hat Developer Hub 1.2

Red Hat Customer Content Services

摘要

Red Hat Developer Hub 是一个企业级平台,用于构建开发人员门户。以管理用户身份,您可以管理其他用户的角色和权限,并配置 Developer Hub 以满足机构的特定需求。

前言

Red Hat Developer Hub 是一个企业级、开放的开发人员平台,可用于构建开发人员门户。此平台包含支持和建议的框架,有助于减少开发人员的欺诈和提高其生产力。

Red Hat Developer Hub 支持

如果您在执行本文档所述的某个流程时遇到问题,请访问红帽客户门户。您可以使用红帽客户门户网站进行以下目的:

要访问 Red Hat Developer Hub,您必须在 Red Hat OpenShift Container Platform 中添加自定义应用程序配置文件。在 OpenShift Container Platform 中,您可以使用以下内容作为基础模板,创建一个名为 app-config-rhdh 的 ConfigMap:

kind: ConfigMap
apiVersion: v1
metadata:
  name: app-config-rhdh
data:
  app-config-rhdh.yaml: |
    app:
      title: {product}

您可以使用以下方法之一将自定义应用程序配置文件添加到 OpenShift Container Platform 中:

  • Red Hat Developer Hub Operator
  • Red Hat Developer Hub Helm Chart。

您可以使用 Red Hat Developer Hub Helm Chart 将自定义应用程序配置文件添加到 OpenShift Container Platform 实例中。

先决条件

  • 您已创建了 Red Hat OpenShift Container Platform 帐户。

流程

  1. 在 OpenShift Container Platform Web 控制台中,选择 ConfigMaps 选项卡。
  2. Create ConfigMap
  3. Create ConfigMap 页面中,选择 Configure via 中的 YAML view 选项,并根据需要更改该文件。
  4. Create
  5. 进入 Helm 选项卡查看 Helm 发行版本列表。
  6. 点击您要使用的 Helm 发行版本的 overflow 菜单,然后选择 Upgrade
  7. 使用 Form viewYAML 视图 来编辑 Helm 配置。

    • 使用 Form view

      1. 展开 Root Schema → Backstage chart schema → Backstage parameters → Extra app 配置文件到内联到命令参数 中
      2. Add Extra app 配置文件以内联到命令参数 链接。
      3. 在以下字段中输入值:

        • configMapRef: app-config-rhdh
        • filename: app-config-rhdh.yaml
      4. 单击 Upgrade
    • 使用 YAML 视图

      1. 设置 upstream.backstage.extraAppConfig.configMapRefupstream.backstage.extraAppConfig.filename 参数的值,如下所示:

        # ... other Red Hat Developer Hub Helm Chart configurations
        upstream:
          backstage:
            extraAppConfig:
              - configMapRef: app-config-rhdh
                filename: app-config-rhdh.yaml
        # ... other Red Hat Developer Hub Helm Chart configurations
      2. 单击 Upgrade

自定义应用程序配置文件是一个 ConfigMap 对象,可用于更改 Red Hat Developer Hub 实例的配置。如果要在 Red Hat OpenShift Container Platform 上部署 Developer Hub 实例,您可以使用 Red Hat Developer Hub Operator 将自定义应用程序配置文件添加到 OpenShift Container Platform 实例,方法是创建 ConfigMap 对象并在 Developer Hub 自定义资源(CR)中引用它。

自定义应用配置文件包含一个名为 BACKEND_SECRET 的敏感环境变量。此变量包含一个强制的后端身份验证密钥,Developer Hub 用来引用 OpenShift Container Platform secret 中定义的环境变量。您必须创建一个名为 'secrets-rhdh' 的 secret,并在 Developer Hub CR 中引用它。

注意

您需要保护 Red Hat Developer Hub 安装不受外部和未授权访问的影响。像管理任何其他机密一样管理后端身份验证密钥。满足强的密码要求,不要在任何配置文件中公开它,仅将其作为环境变量注入配置文件中。

先决条件

  • 您有一个活跃的 Red Hat OpenShift Container Platform 帐户。
  • 您的管理员已在 OpenShift Container Platform 中安装了 Red Hat Developer Hub Operator。如需更多信息,请参阅安装 Red Hat Developer Hub Operator
  • 您已在 OpenShift Container Platform 中创建 Red Hat Developer Hub CR。

流程

  1. 从 OpenShift Container Platform Web 控制台中的 Developer 视角,选择 Topology 视图,然后点击 Developer Hub pod 上的 Open URL 图标来识别 Developer Hub 外部 URL: < RHDH_URL>
  2. 从 OpenShift Container Platform Web 控制台中的 Developer 视角,选择 ConfigMaps 视图。
  3. Create ConfigMap
  4. Configure via 中选择 YAML view 选项,并使用以下示例作为基础模板来创建 ConfigMap 对象,如 app-config-rhdh.yaml

    kind: Backstage
    apiVersion: rhdh.redhat.com/v1alpha1
    metadata:
      name: app-config-rhdh
    data:
      "app-config-rhdh.yaml": |
        app:
          title: Red Hat Developer Hub
          baseUrl: <RHDH_URL> 
    1
    
        backend:
          auth:
            keys:
              - secret: "${BACKEND_SECRET}" 
    2
    
          baseUrl: <RHDH_URL> 
    3
    
          cors:
            origin: <RHDH_URL> 
    4
    1
    设置 Red Hat Developer Hub 实例的外部 URL。
    2
    使用环境变量公开 OpenShift Container Platform secret,以定义强制的 Developer Hub 后端身份验证密钥。
    3
    设置 Red Hat Developer Hub 实例的外部 URL。
    4
    设置 Red Hat Developer Hub 实例的外部 URL。
  5. Create
  6. 选择 Secrets 视图。
  7. Create Key/value Secret
  8. 创建名为 secrets-rhdh 的 secret。
  9. 添加名为 BACKEND_SECRET 的键,并将 base64 编码字符串作为值。为每个 Red Hat Developer Hub 实例使用唯一值。例如,您可以使用以下命令从终端生成密钥:

    node -p 'require("crypto").randomBytes(24).toString("base64")'
  10. Create
  11. 选择 Topology 视图。
  12. 点您要使用的 Red Hat Developer Hub 实例的 overflow 菜单,然后选择 Edit Backstage 来加载 Red Hat Developer Hub 实例的 YAML 视图。

    Operator 安装 2
  13. 在 CR 中,输入自定义应用程序配置配置映射的名称作为 spec.application.appConfig.configMaps 字段的值,并输入 secret 的名称作为 spec.application.extraEnvs.secrets 字段的值。例如:

    apiVersion: rhdh.redhat.com/v1alpha1
    kind: Backstage
    metadata:
      name: developer-hub
    spec:
      application:
        appConfig:
          mountPath: /opt/app-root/src
          configMaps:
             - name: app-config-rhdh
        extraEnvs:
          secrets:
             - name: secrets-rhdh
        extraFiles:
          mountPath: /opt/app-root/src
        replicas: 1
        route:
          enabled: true
      database:
        enableLocalDb: true
  14. 点击 Save
  15. 返回到 Topology 视图,并等待 Red Hat Developer Hub pod 启动。
  16. Open URL 图标使用 Red Hat Developer Hub 平台以及配置更改。

其他资源

第 2 章 配置外部 PostgreSQL 数据库

作为管理员,您可以在 Red Hat Developer Hub 中配置和使用外部 PostgreSQL 数据库。您可以使用 PostgreSQL 证书文件使用 Operator 或 Helm Chart 配置外部 PostgreSQL 实例。

注意

Developer Hub 支持外部 PostgreSQL 数据库的配置。您可以执行维护活动,如备份数据或为外部 PostgreSQL 数据库配置高可用性(HA)。

默认情况下,Red Hat Developer Hub operator 或 Helm Chart 会创建一个本地 PostgreSQL 数据库。但是,此配置不适用于生产环境。对于生产环境部署,禁用创建本地数据库,并将 Developer Hub 配置为改为连接到外部 PostgreSQL 实例。

2.1. 使用 Operator 配置外部 PostgreSQL 实例

您可以使用 Red Hat Developer Hub Operator 配置外部 PostgreSQL 实例。默认情况下,Operator 会在部署 RHDH 实例的同一命名空间中创建和管理一个 PostgreSQL 本地实例。但是,您可以更改此默认设置来配置外部 PostgreSQL 数据库服务器,例如 Amazon Web Services (AWS)相关数据库服务(RDS)或 Azure 数据库。

先决条件

  • 您使用受支持的 PostgreSQL 版本。如需更多信息,请参阅 产品生命周期页面
  • 您有以下详情:

    • db-host :注意 PostgreSQL 实例域名系统(DNS)或 IP 地址
    • db-port :注意 PostgreSQL 实例端口号,如 5432
    • 用户名 :注意要连接到 PostgreSQL 实例的用户名
    • 密码 :注意连接到 PostgreSQL 实例的密码
  • 已安装 Red Hat Developer Hub Operator。
  • 可选: 您有一个 CA 证书、传输层安全(TLS)私钥和 TLS 证书,以便您可以使用 TLS 协议保护数据库连接。如需更多信息,请参阅 PostgreSQL 供应商文档。
注意

默认情况下,Developer Hub 为每个插件使用一个数据库,并在未找到时自动创建它。除了 PSQL Database 特权外,您可能需要 Create Database 特权来配置外部 PostgreSQL 实例。

流程

  1. 可选:创建一个证书 secret 来使用 TLS 连接配置 PostgreSQL 实例:

    cat <<EOF | oc -n <your-namespace> create -f -
    apiVersion: v1
    kind: Secret
    metadata:
     name: <crt-secret> 
    1
    
    type: Opaque
    stringData:
     postgres-ca.pem: |-
      -----BEGIN CERTIFICATE-----
      <ca-certificate-key> 
    2
    
     postgres-key.key: |-
      -----BEGIN CERTIFICATE-----
      <tls-private-key> 
    3
    
     postgres-crt.pem: |-
      -----BEGIN CERTIFICATE-----
      <tls-certificate-key> 
    4
    
      # ...
    EOF
    1
    提供证书 secret 的名称。
    2
    提供 CA 证书密钥。
    3
    可选:提供 TLS 私钥。
    4
    可选:提供 TLS 证书密钥。
  2. 创建凭证 secret 以与 PostgreSQL 实例连接:

    cat <<EOF | oc -n <your-namespace> create -f -
    apiVersion: v1
    kind: Secret
    metadata:
     name: <cred-secret> 
    1
    
    type: Opaque
    stringData: 
    2
    
     POSTGRES_PASSWORD: <password>
     POSTGRES_PORT: "<db-port>"
     POSTGRES_USER: <username>
     POSTGRES_HOST: <db-host>
     PGSSLMODE: <ssl-mode> # for TLS connection 
    3
    
     NODE_EXTRA_CA_CERTS: <abs-path-to-pem-file> # for TLS connection, e.g. /opt/app-root/src/postgres-crt.pem 
    4
    
    EOF
    1
    提供凭证 secret 的名称。
    2
    提供用于连接 PostgreSQL 实例的凭证数据。
    3
    可选:根据所需的 安全套接字层(SSL)模式提供值
    4
    可选: 只有在需要 PostgreSQL 实例的 TLS 连接时才提供值。
  3. 创建 Backstage 自定义资源(CR):

    cat <<EOF | oc -n <your-namespace> create -f -
    apiVersion: rhdh.redhat.com/v1alpha1
    kind: Backstage
    metadata:
      name: <backstage-instance-name>
    spec:
      database:
        enableLocalDb: false 
    1
    
      application:
        extraFiles:
          mountPath: <path> # e g /opt/app-root/src
          secrets:
            - name: <crt-secret> 
    2
    
              key: postgres-crt.pem, postgres-ca.pem, postgres-key.key # key name as in <crt-secret> Secret
        extraEnvs:
          secrets:
            - name: <cred-secret> 
    3
    
            # ...
    1
    enableLocalDb 参数的值设置为 false,以禁用创建本地 PostgreSQL 实例。
    2
    如果您配置了 TLS 连接,请提供证书 secret 的名称。
    3
    提供您创建的凭证 secret 的名称。
    注意

    Backstage CR 中列出的环境变量与 Operator 默认配置一起工作。如果更改了 Operator 默认配置,您必须相应地重新配置 Backstage CR。

  4. Backstage CR 应用到已部署 RHDH 实例的命名空间。

2.2. 使用 Helm Chart 配置外部 PostgreSQL 实例

您可以使用 Helm Chart 配置外部 PostgreSQL 实例。默认情况下,Helm Chart 会在部署 RHDH 实例的同一命名空间中创建和管理 PostgreSQL 本地实例。但是,您可以更改此默认设置来配置外部 PostgreSQL 数据库服务器,例如 Amazon Web Services (AWS)相关数据库服务(RDS)或 Azure 数据库。

先决条件

  • 您使用受支持的 PostgreSQL 版本。如需更多信息,请参阅 产品生命周期页面
  • 您有以下详情:

    • db-host :注意 PostgreSQL 实例域名系统(DNS)或 IP 地址
    • db-port :注意 PostgreSQL 实例端口号,如 5432
    • 用户名 :注意要连接到 PostgreSQL 实例的用户名
    • 密码 :注意连接到 PostgreSQL 实例的密码
  • 已使用 Helm Chart 安装 RHDH 应用程序。
  • 可选: 您有一个 CA 证书、传输层安全(TLS)私钥和 TLS 证书,以便您可以使用 TLS 协议保护数据库连接。如需更多信息,请参阅 PostgreSQL 供应商文档。
注意

默认情况下,Developer Hub 为每个插件使用一个数据库,并在未找到时自动创建它。除了 PSQL Database 特权外,您可能需要 Create Database 特权来配置外部 PostgreSQL 实例。

流程

  1. 可选:创建一个证书 secret 来使用 TLS 连接配置 PostgreSQL 实例:

    cat <<EOF | oc -n <your-namespace> create -f -
    apiVersion: v1
    kind: Secret
    metadata:
     name: <crt-secret> 
    1
    
    type: Opaque
    stringData:
     postgres-ca.pem: |-
      -----BEGIN CERTIFICATE-----
      <ca-certificate-key> 
    2
    
     postgres-key.key: |-
      -----BEGIN CERTIFICATE-----
      <tls-private-key> 
    3
    
     postgres-crt.pem: |-
      -----BEGIN CERTIFICATE-----
      <tls-certificate-key> 
    4
    
      # ...
    EOF
    1
    提供证书 secret 的名称。
    2
    提供 CA 证书密钥。
    3
    可选:提供 TLS 私钥。
    4
    可选:提供 TLS 证书密钥。
  2. 创建凭证 secret 以与 PostgreSQL 实例连接:

    cat <<EOF | oc -n <your-namespace> create -f -
    apiVersion: v1
    kind: Secret
    metadata:
     name: <cred-secret> 
    1
    
    type: Opaque
    stringData: 
    2
    
     POSTGRES_PASSWORD: <password>
     POSTGRES_PORT: "<db-port>"
     POSTGRES_USER: <username>
     POSTGRES_HOST: <db-host>
     PGSSLMODE: <ssl-mode> # for TLS connection 
    3
    
     NODE_EXTRA_CA_CERTS: <abs-path-to-pem-file> # for TLS connection, e.g. /opt/app-root/src/postgres-crt.pem 
    4
    
    EOF
    1
    提供凭证 secret 的名称。
    2
    提供用于连接 PostgreSQL 实例的凭证数据。
    3
    可选:根据所需的 安全套接字层(SSL)模式提供值
    4
    可选: 只有在需要 PostgreSQL 实例的 TLS 连接时才提供值。
  3. 在名为 values.yaml 的 Helm 配置文件中配置 PostgreSQL 实例:

    # ...
    upstream:
      postgresql:
        enabled: false  # disable PostgreSQL instance creation 
    1
    
        auth:
          existingSecret: <cred-secret> # inject credentials secret to Backstage 
    2
    
      backstage:
        appConfig:
          backend:
            database:
              connection:  # configure Backstage DB connection parameters
                host: ${POSTGRES_HOST}
                port: ${POSTGRES_PORT}
                user: ${POSTGRES_USER}
                password: ${POSTGRES_PASSWORD}
                ssl:
                  rejectUnauthorized: true,
                  ca:
                    $file: /opt/app-root/src/postgres-ca.pem
                  key:
                    $file: /opt/app-root/src/postgres-key.key
                  cert:
                    $file: /opt/app-root/src/postgres-crt.pem
      extraEnvVarsSecrets:
        - <cred-secret> # inject credentials secret to Backstage 
    3
    
      extraEnvVars:
        - name: BACKEND_SECRET
          valueFrom:
            secretKeyRef:
              key: backend-secret
              name: '{{ include "janus-idp.backend-secret-name" $ }}'
      extraVolumeMounts:
        - mountPath: /opt/app-root/src/dynamic-plugins-root
          name: dynamic-plugins-root
        - mountPath: /opt/app-root/src/postgres-crt.pem
          name: postgres-crt # inject TLS certificate to Backstage cont. 
    4
    
          subPath: postgres-crt.pem
        - mountPath: /opt/app-root/src/postgres-ca.pem
          name: postgres-ca # inject CA certificate to Backstage cont. 
    5
    
          subPath: postgres-ca.pem
        - mountPath: /opt/app-root/src/postgres-key.key
          name: postgres-key # inject TLS private key to Backstage cont. 
    6
    
          subPath: postgres-key.key
      extraVolumes:
        - ephemeral:
            volumeClaimTemplate:
              spec:
                accessModes:
                  - ReadWriteOnce
                resources:
                  requests:
                    storage: 1Gi
          name: dynamic-plugins-root
        - configMap:
            defaultMode: 420
            name: dynamic-plugins
            optional: true
          name: dynamic-plugins
        - name: dynamic-plugins-npmrc
          secret:
            defaultMode: 420
            optional: true
            secretName: dynamic-plugins-npmrc
        - name: postgres-crt
          secret:
            secretName: <crt-secret> 
    7
    
            # ...
    1
    upstream.postgresql.enabled 参数的值设置为 false,以禁用创建本地 PostgreSQL 实例。
    2
    提供凭证 secret 的名称。
    3
    提供凭证 secret 的名称。
    4
    可选:仅为 TLS 连接提供 TLS 证书的名称。
    5
    可选:仅为 TLS 连接提供 CA 证书的名称。
    6
    可选:仅在 TLS 连接需要私钥时提供 TLS 私钥的名称。
    7
    如果您配置了 TLS 连接,请提供证书 secret 的名称。
  4. 在名为 values.yaml 的 Helm 配置文件中应用配置更改:

    helm upgrade -n <your-namespace> <your-deploy-name> openshift-helm-charts/redhat-developer-hub -f values.yaml --version 1.2.6

默认情况下,Red Hat Developer Hub 在 PostgreSQL 数据库中托管每个插件的数据。当您获取数据库列表时,您可能会看到基于 Developer Hub 中配置的插件数量的多个数据库。您可以将托管在本地 PostgreSQL 服务器上的 RHDH 实例迁移到外部 PostgreSQL 服务,如 AWS RDS、Azure 数据库或 Crunchy 数据库。要从每个 RHDH 实例迁移数据,您可以使用 PostgreSQL 工具,如 pg_dumppsqlpgAdmin

注意

以下流程使用数据库复制脚本进行快速迁移。

先决条件

  • 您已在本地机器上安装了 pg_dumppsql 工具。
  • 对于数据导出,您有 PGSQL 用户特权,以便对本地数据库进行完整的转储。
  • 对于数据导入,您有 PGSQL admin 特权来创建外部数据库,并使用数据库转储填充。

流程

  1. 在终端中运行以下命令,为本地 PostgreSQL 数据库 pod 配置端口转发:

    oc port-forward -n <your-namespace> <pgsql-pod-name> <forward-to-port>:<forward-from-port>

    其中:

    • & lt;pgsql-pod-name& gt; 变量表示 PostgreSQL pod 的名称,格式为 backstage-psql-<deployment-name>-<_index>
    • & lt;forward-to-port > 变量表示您选择的端口将 PostgreSQL 数据转发到。
    • & lt;forward-from-port > 变量表示本地 PostgreSQL 实例端口,如 5432

      示例:配置端口转发

      oc port-forward -n developer-hub backstage-psql-developer-hub-0 15432:5432

  2. 复制以下 db_copy.sh 脚本,并根据您的配置编辑详情:

    #!/bin/bash
    
    to_host=<db-service-host> 
    1
    
    to_port=5432 
    2
    
    to_user=postgres 
    3
    
    
    from_host=127.0.0.1 
    4
    
    from_port=15432 
    5
    
    from_user=postgres 
    6
    
    
    allDB=("backstage_plugin_app" "backstage_plugin_auth" "backstage_plugin_catalog" "backstage_plugin_permission" "backstage_plugin_scaffolder" "backstage_plugin_search") 
    7
    
    
    for db in ${!allDB[@]};
    do
      db=${allDB[$db]}
      echo Copying database: $db
      PGPASSWORD=$TO_PSW psql -h $to_host -p $to_port -U $to_user -c "create database $db;"
      pg_dump -h $from_host -p $from_port -U $from_user -d $db | PGPASSWORD=$TO_PSW psql -h $to_host -p $to_port -U $to_user -d $db
    done
    1
    目标主机名,例如 < db-instance-name>.rds.amazonaws.com
    2
    目的地端口,如 5432
    3
    目标服务器用户名,例如 postgres
    4
    源主机名,如 127.0.0.1
    5
    源端口号,如 < forward-to-port> 变量。
    6
    源服务器用户名,如 postgres
    7
    要使用双引号导入的数据库名称,例如:"backstage_plugin_ app" "backstage_plugin_auth" "backstage_plugin_catalog" "backstage_plugin_permission" "backstage_plugin_permission" "backstage_plugin_scaffolder" "backstage_plugin_search")
  3. 创建用于复制数据的目的地数据库:

    /bin/bash TO_PSW=<destination-db-password> /path/to/db_copy.sh 
    1
    1
    & lt;destination-db-password > 变量表示要连接到目标数据库的密码。
    注意

    当数据复制完成后,您可以停止端口转发。有关处理大型数据库和使用压缩工具的更多信息,请参阅 PostgreSQL 网站上的 Handling Large Databases 部分。

  4. 重新配置 Backstage 自定义资源(CR)。如需更多信息,请参阅使用 Operator 配置外部 PostgreSQL 实例
  5. 在重新配置后,检查 Backstage CR 的末尾是否存在以下代码:

    # ...
    spec:
      database:
        enableLocalDb: false
      application:
      # ...
        extraFiles:
          secrets:
            - name: <crt-secret>
              key: postgres-crt.pem # key name as in <crt-secret> Secret
        extraEnvs:
          secrets:
            - name: <cred-secret>
    # ...
    注意

    重新配置 Backstage CR 会删除对应的 StatefulSetPod 对象,但不删除 PersistenceVolumeClaim 对象。使用以下命令删除本地 PersistenceVolumeClaim 对象:

    oc -n developer-hub delete pvc <local-psql-pvc-name>

    其中,&lt ;local-psql-pvc-name&gt; 变量采用 data-<psql-pod-name> 格式。

  6. 应用配置更改。

验证

  1. 运行以下命令,验证您的 RHDH 实例是否使用迁移的数据运行,且不包含本地 PostgreSQL 数据库:

    oc get pods -n <your-namespace>
  2. 检查以下详情的输出:

    • backstage-developer-hub-xxx pod 处于 running 状态。
    • backstage-psql-developer-hub-0 pod 不可用。

      您还可以使用 OpenShift Container Platform Web 控制台中的 Topology 视图来验证这些详情。

您可以在 Kubernetes 集群中配置带有传输层安全(TLS)连接的 RHDH 实例,如 Azure Red Hat OpenShift (ARO)集群、支持的云供应商中的任何集群,或者具有正确配置自己的集群。但是,您必须使用公共证书颁发机构(CA)签名证书来配置 Kubernetes 集群。

先决条件

  • 您已使用公共 CA 签名证书设置了 Azure Red Hat OpenShift (ARO)集群。有关获取 CA 证书的更多信息,请参阅您的厂商文档。
  • 您已创建了命名空间并设置对资源具有正确读取权限的服务帐户。

    示例:用于基于角色的访问控制的 Kubernetes 清单

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: backstage-read-only
    rules:
      - apiGroups:
          - '*'
        resources:
          - pods
          - configmaps
          - services
          - deployments
          - replicasets
          - horizontalpodautoscalers
          - ingresses
          - statefulsets
          - limitranges
          - resourcequotas
          - daemonsets
        verbs:
          - get
          - list
          - watch
    #...

  • 您已获取与服务帐户关联的 secret 和服务 CA 证书。
  • 您已创建了一些资源并为其添加注解,以便 Kubernetes 插件可以发现这些资源。您可以应用这些 Kubernetes 注解:

    • backstage.io/kubernetes-id to label components
    • backstage.io/kubernetes-namespace 以标记命名空间

流程

  1. dynamic-plugins-rhdh.yaml 文件中启用 Kubernetes 插件:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: dynamic-plugins-rhdh
    data:
      dynamic-plugins.yaml: |
        includes:
          - dynamic-plugins.default.yaml
        plugins:
          - package: ./dynamic-plugins/dist/backstage-plugin-kubernetes-backend-dynamic
            disabled: false 
    1
    
          - package: ./dynamic-plugins/dist/backstage-plugin-kubernetes
            disabled: false 
    2
    
            # ...
    1
    将值设为 false 以启用 backstage-plugin-kubernetes-backend-dynamic 插件。
    2
    将值设为 false 以启用 backstage-plugin-kubernetes 插件。
    注意

    backstage-plugin-kubernetes 插件 当前还只是一个技术预览。作为替代方案,您可以使用 ./dynamic-plugins/dist/backstage-plugin-topology-dynamic 插件,该插件正式发布(GA)。

  2. 设置 kubernetes 集群详情并在 app-config-rhdh.yaml 文件中配置目录同步选项:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: app-config-rhdh
    data:
      "app-config-rhdh.yaml": |
      # ...
      catalog:
        rules:
          - allow: [Component, System, API, Resource, Location]
        providers:
          kubernetes:
            openshift:
              cluster: openshift
              processor:
                namespaceOverride: default
                defaultOwner: guests
              schedule:
                frequency:
                  seconds: 30
                timeout:
                  seconds: 5
      kubernetes:
        serviceLocatorMethod:
          type: 'multiTenant'
        clusterLocatorMethods:
          - type: 'config'
            clusters:
              - url: <target-cluster-api-server-url> 
    1
    
                name: openshift
                authProvider: 'serviceAccount'
                skipTLSVerify: false 
    2
    
                skipMetricsLookup: true
                dashboardUrl: <target-cluster-console-url> 
    3
    
                dashboardApp: openshift
                serviceAccountToken: ${K8S_SERVICE_ACCOUNT_TOKEN} 
    4
    
                caData: ${K8S_CONFIG_CA_DATA} 
    5
    
                # ...
    1
    Kubernetes control plane 的基本 URL。您可以运行 kubectl cluster-info 命令来获取基本 URL。
    2
    将此参数的值设置为 false,以启用 TLS 证书的验证。
    3
    可选:管理 ARO 集群的 Kubernetes 仪表板的链接。
    4
    可选:使用 K8S_SERVICE_ACCOUNT_TOKEN 环境变量传递服务帐户令牌,您可以在 secret-rhdh secret 中定义。
    5
    使用 K8S_CONFIG_CA_DATA 环境变量传递 CA 数据,您可以在 secret-rhdh secret 中定义。
  3. 保存配置更改。

验证

  1. 运行 RHDH 应用程序来导入您的目录:

    kubectl -n rhdh-operator get pods -w
  2. 验证 pod 日志是否没有显示您的配置错误。
  3. 进入 Catalog 并检查 Developer Hub 实例中的组件页面,以验证集群连接以及您的创建的资源是否存在。
注意

如果您遇到连接错误,如证书问题或权限,请在组件页面中选中消息框或查看 pod 的日志。

第 4 章 Telemetry 数据收集

遥测数据收集功能有助于收集和分析遥测数据,以提高您对 Red Hat Developer Hub 的经验。此功能默认为启用。

重要

作为管理员,您可以根据您的需要禁用遥测数据收集功能。例如,在 air-gapped 环境中,您可以禁用此功能以避免不必要的出站请求影响 RHDH 应用程序的响应。如需了解更多详细信息,请参阅 RHDH 中的 禁用遥测数据收集 部分。

红帽收集并分析以下数据:

  • 页面事件访问并点击链接或按钮。
  • 系统相关信息,如 locale, timezone, user agent,包括浏览器和操作系统详情。
  • 与页面相关的信息,如标题、类别、扩展名称、URL、路径、引用器和搜索参数。
  • 匿名 IP 地址,记录为 0.0.0.0
  • 匿名用户名哈希,这是唯一标识符,仅用于识别 RHDH 应用的唯一用户数量。

通过 RHDH,您可以根据您的需要自定义遥测数据收集功能和遥测 Segment 源配置。

4.1. 在 RHDH 中禁用遥测数据收集

要禁用遥测数据收集,您必须使用 Helm Chart 或 Red Hat Developer Hub Operator 配置禁用 analytics-provider-segment 插件。

4.1.1. 使用 Helm Chart 禁用遥测数据收集

您可以使用 Helm Chart 禁用遥测数据收集功能。

先决条件

流程

  1. 在 OpenShift Container Platform Web 控制台的 Developer 视角中,进入 Helm 视图来查看 Helm 发行版本列表。
  2. 点击您要使用的 Helm 发行版本上的 overflow 菜单,然后选择 Upgrade

    注意

    您还可以点 Create 按钮并编辑配置来禁用遥测,来创建新的 Helm 发行版本。

  3. 使用 Form view 或 YAML 视图来编辑 Helm 配置:

    • 使用 Form view

      1. 展开 Root Schema → global → Dynamic plugins 配置。→ 应该在 backstage 应用中安装的动态插件列表
      2. backstage application 中的 Add list of dynamic plugins。
      3. 执行以下步骤之一:

        • 如果您还没有配置插件,请在要安装的动态插件 Package 规格中添加以下值。它应该可以被 npm pack 命令使用。 字段:

          ./dynamic-plugins/dist/janus-idp-backstage-plugin-analytics-provider-segment

          禁用遥测(telemetry)
        • 如果您配置了插件,请找到要安装的动态插件的 Package 规格。它应该可以被 npm pack 命令使用。 字段带有 ./dynamic-plugins/dist/janus-idp-backstage-plugin-analytics-provider-segment 值。
      4. 选中 Disable the plugin 复选框。
      5. 单击 Upgrade
    • 使用 YAML 视图

      1. 执行以下步骤之一:

        • 如果您还没有配置插件,请在 values.yaml Helm 配置文件中添加以下 YAML 代码:

          # ...
          global:
            dynamic:
              plugins:
                - package: './dynamic-plugins/dist/janus-idp-backstage-plugin-analytics-provider-segment'
                  disabled: true
          # ...
        • 如果您配置了插件,请在 Helm 配置中搜索它,并将 plugins.disabled 参数的值设置为 true
      2. 单击 Upgrade

4.1.2. 使用 Operator 禁用遥测数据收集

您可以使用 Operator 禁用遥测数据收集功能。

先决条件

流程

  1. 执行以下步骤之一:

    • 如果您已创建了 dynamic-plugins-rhdh ConfigMap 文件且没有配置 analytics-provider-segment 插件,请将插件添加到插件列表中,并将其 plugins.disabled 参数设置为 true
    • 如果您已创建了 dynamic-plugins-rhdh ConfigMap 文件并配置了 analytics-provider-segment 插件,请在插件列表中搜索插件并将其 plugins.disabled 参数设置为 true
    • 如果您还没有创建 ConfigMap 文件,请使用以下 YAML 代码创建该文件:

      kind: ConfigMap
      apiVersion: v1
      metadata:
        name: dynamic-plugins-rhdh
      data:
        dynamic-plugins.yaml: |
          includes:
            - dynamic-plugins.default.yaml
          plugins:
            - package: './dynamic-plugins/dist/janus-idp-backstage-plugin-analytics-provider-segment'
              disabled: true
  2. dynamicPluginsConfigMapName 参数的值设置为 Backstage 自定义资源中的 ConfigMap 文件的名称:

    # ...
    spec:
      application:
        dynamicPluginsConfigMapName: dynamic-plugins-rhdh
    # ...
  3. 保存配置更改。

4.2. 在 RHDH 中启用遥测数据收集

遥测数据收集功能默认是启用的。但是,如果您禁用了这个功能并希望重新启用它,则必须使用 Helm Chart 或 Red Hat Developer Hub Operator 配置启用 analytics-provider-segment 插件。

4.2.1. 使用 Helm Chart 启用遥测数据收集

您可以使用 Helm Chart 启用遥测数据收集功能。

先决条件

流程

  1. 在 OpenShift Container Platform Web 控制台的 Developer 视角中,进入 Helm 视图来查看 Helm 发行版本列表。
  2. 点击您要使用的 Helm 发行版本上的 overflow 菜单,然后选择 Upgrade

    注意

    您还可以点 Create 按钮并编辑配置来启用遥测(telemetry)来创建新的 Helm 发行版本。

  3. 使用 Form view 或 YAML 视图来编辑 Helm 配置:

    • 使用 Form view

      1. 展开 Root Schema → global → Dynamic plugins 配置。→ 应该在 backstage 应用中安装的动态插件列表
      2. backstage application 中的 Add list of dynamic plugins。
      3. 执行以下步骤之一:

        • 如果您还没有配置插件,请在要安装的动态插件 Package 规格中添加以下值。它应该可以被 npm pack 命令使用。 字段:

          ./dynamic-plugins/dist/janus-idp-backstage-plugin-analytics-provider-segment

        • 如果您配置了插件,请找到要安装的动态插件的 Package 规格。它应该可以被 npm pack 命令使用。 字段带有 ./dynamic-plugins/dist/janus-idp-backstage-plugin-analytics-provider-segment 值。
      4. 清除 Disable the plugin 复选框。
      5. 单击 Upgrade
    • 使用 YAML 视图

      1. 执行以下步骤之一:

        • 如果您还没有配置插件,请在 Helm 配置文件中添加以下 YAML 代码:

          # ...
          global:
            dynamic:
              plugins:
                - package: './dynamic-plugins/dist/janus-idp-backstage-plugin-analytics-provider-segment'
                  disabled: false
          # ...
        • 如果您配置了插件,请在 Helm 配置中搜索它,并将 plugins.disabled 参数的值设置为 false
      2. 单击 Upgrade

4.2.2. 使用 Operator 启用遥测数据收集

您可以使用 Operator 启用遥测数据收集功能。

先决条件

流程

  1. 执行以下步骤之一:

    • 如果您已创建了 dynamic-plugins-rhdh ConfigMap 文件且没有配置 analytics-provider-segment 插件,请将插件添加到插件列表中,并将其 plugins.disabled 参数设置为 false
    • 如果您已创建了 dynamic-plugins-rhdh ConfigMap 文件并配置了 analytics-provider-segment 插件,请在插件列表中搜索插件并将其 plugins.disabled 参数设置为 false
    • 如果您还没有创建 ConfigMap 文件,请使用以下 YAML 代码创建该文件:

      kind: ConfigMap
      apiVersion: v1
      metadata:
        name: dynamic-plugins-rhdh
      data:
        dynamic-plugins.yaml: |
          includes:
            - dynamic-plugins.default.yaml
          plugins:
            - package: './dynamic-plugins/dist/janus-idp-backstage-plugin-analytics-provider-segment'
              disabled: false
  2. dynamicPluginsConfigMapName 参数的值设置为 Backstage 自定义资源中的 ConfigMap 文件的名称:

    # ...
    spec:
      application:
        dynamicPluginsConfigMapName: dynamic-plugins-rhdh
    # ...
  3. 保存配置更改。

4.3. 自定义遥测分割源

analytics-provider-segment 插件默认向红帽发送收集的遥测数据。但是,您可以配置一个新的 Segment 源,以根据您的需要接收遥测数据。对于配置,您需要一个指向分段源的唯一分段写键。

注意

通过配置新的分段源,您可以收集和分析 Telemetry 数据收集 部分中提到的相同数据集。您可能还需要为应用用户创建自己的遥测数据收集通知。

4.3.1. 使用 Helm Chart 自定义遥测源

您可以使用 Helm Chart 配置与 Segment 源的集成。

先决条件

流程

  1. 在 OpenShift Container Platform Web 控制台的 Developer 视角中,进入 Helm 视图来查看 Helm 发行版本列表。
  2. 点击您要使用的 Helm 发行版本上的 overflow 菜单,然后选择 Upgrade
  3. 使用 Form view 或 YAML 视图来编辑 Helm 配置:

    • 使用 Form view

      1. 展开 Root Schema → Backstage Chart Schema → Backstage Parameters → Backstage container 环境变量
      2. 单击 Add Backstage 容器环境变量 链接。
      3. 输入 Segment 键的名称和值。

        segment source helm
      4. 单击 Upgrade
    • 使用 YAML 视图

      1. 在 Helm 配置文件中添加以下 YAML 代码:

        # ...
        upstream:
          backstage:
            extraEnvVars:
              - name: SEGMENT_WRITE_KEY
                value: <segment_key> 
        1
        
        # ...
        1
        <segment_key > 替换为您的分段源的唯一标识符。
      2. 单击 Upgrade

4.3.2. 使用 Operator 自定义遥测源

您可以使用 Operator 配置与 Segment 源的集成。

先决条件

流程

  1. Backstage 自定义资源(CR)中添加以下 YAML 代码:

    # ...
    spec:
      application:
        extraEnvs:
          envs:
            - name: SEGMENT_WRITE_KEY
              value: <segment_key> 
    1
    
    # ...
    1
    <segment_key > 替换为您的分段源的唯一标识符。
  2. 保存配置更改。

在 OpenShift Container Platform 中,指标通过 /metrics 规范名称下的 HTTP 服务端点公开。您可以创建一个 ServiceMonitor 自定义资源(CR),从用户定义的项目中的服务端点提取指标。

您可以从 OpenShift Container Platform Web 控制台的 Developer 视角为 Red Hat Developer Hub Helm 部署启用和查看指标。

先决条件

  • 您的 OpenShift Container Platform 集群启用了 用户定义的项目的监控
  • 已使用 Helm Chart 在 OpenShift Container Platform 上安装 Red Hat Developer Hub。

流程

  1. 从 OpenShift Container Platform Web 控制台中的 Developer 视角,选择 Topology 视图。
  2. 点 Red Hat Developer Hub Helm Chart 的 overflow 菜单,然后选择 Upgrade

    Helm 升级
  3. Upgrade Helm Release 页面中,选择 Configure via 中的 YAML view 选项,然后在 YAML 中配置 metrics 部分,如下例所示:

    upstream:
    # ...
      metrics:
        serviceMonitor:
          enabled: true
          path: /metrics
    # ...
    升级 helm 指标
  4. 单击 Upgrade

验证

  1. 从 OpenShift Container Platform web 控制台中的 Developer 视角,选择 Observe 视图。
  2. Metrics 选项卡查看 Red Hat Developer Hub pod 的指标。

您可以从 OpenShift Container Platform Web 控制台的 Developer 视角为 Operator 安装的 Red Hat Developer Hub 实例启用和查看指标。

先决条件

  • 您的 OpenShift Container Platform 集群启用了 用户定义的项目的监控
  • 已使用 Red Hat Developer Hub Operator 在 OpenShift Container Platform 上安装 Red Hat Developer Hub。
  • 已安装 OpenShift CLI(oc)。

流程

目前,Red Hat Developer Hub Operator 默认不支持创建 ServiceMonitor 自定义资源(CR)。您必须执行以下步骤来创建 ServiceMonitor CR,以从端点提取指标。

  1. ServiceMonitor CR 创建为 YAML 文件:

    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      name: <custom_resource_name> 
    1
    
      namespace: <project_name> 
    2
    
      labels:
        app.kubernetes.io/instance: <custom_resource_name>
        app.kubernetes.io/name: backstage
    spec:
      namespaceSelector:
        matchNames:
          - <project_name>
      selector:
        matchLabels:
          rhdh.redhat.com/app: backstage-<custom_resource_name>
      endpoints:
      - port: backend
        path: '/metrics'
    1
    <custom_resource_name > 替换为 Red Hat Developer Hub CR 的名称。
    2
    <project_name > 替换为运行 Red Hat Developer Hub 实例的 OpenShift Container Platform 项目的名称。
  2. 运行以下命令来应用 ServiceMonitor CR:

    oc apply -f <filename>

验证

  1. 从 OpenShift Container Platform web 控制台中的 Developer 视角,选择 Observe 视图。
  2. Metrics 选项卡查看 Red Hat Developer Hub pod 的指标。

第 6 章 在公司代理后面运行 RHDH 应用程序

您可以在企业代理后面运行 RHDH 应用程序,方法是在启动应用程序前设置以下环境变量:

  • HTTP_PROXY :注意用于 HTTP 请求的代理。
  • https_PROXY :注意用于 HTTPS 请求的代理。

另外,您可以设置 NO_PROXY 环境变量,以便从代理中排除某些域。变量值是一个以逗号分隔的主机名列表,它们不需要代理才能被访问,即使指定了一个主机名。

6.1. 在 Helm 部署中配置代理信息

对于基于 Helm 的部署,开发者或集群管理员可在集群中创建资源,可以在 values.yaml Helm 配置文件中配置代理变量。

先决条件

  • 已安装 Red Hat Developer Hub 应用程序。

流程

  1. 在 Helm 配置文件中设置代理信息:

    upstream:
      backstage:
        extraEnvVars:
          - name: HTTP_PROXY
            value: '<http_proxy_url>'
          - name: HTTPS_PROXY
            value: '<https_proxy_url>'
          - name: NO_PROXY
            value: '<no_proxy_settings>'

    其中,

    <http_proxy_url>
    表示必须替换为 HTTP 代理 URL 的变量。
    <https_proxy_url>
    表示必须替换为 HTTPS 代理 URL 的变量。
    <no_proxy_settings>

    表示必须使用逗号分隔的 URL 替换的变量,该 URL 想从代理中排除,例如 foo.com,baz.com

    示例:使用 Helm Chart 设置代理变量

    upstream:
      backstage:
        extraEnvVars:
          - 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'

  2. 保存配置更改。

6.2. 在 Operator 部署中配置代理信息

对于基于 Operator 的部署,用于代理配置的方法取决于您的角色:

  • 作为有权访问 Operator 命名空间的集群管理员,您可以在 Operator 的默认 ConfigMap 文件中配置代理变量。此配置将代理设置应用到 Operator 的所有用户。
  • 作为开发者,您可以在自定义资源(CR)文件中配置代理变量。此配置将代理设置应用到从该 CR 创建的 RHDH 应用程序。

先决条件

  • 已安装 Red Hat Developer Hub 应用程序。

流程

  1. 根据您的角色执行以下步骤:

    • 作为管理员,在 Operator 的默认 ConfigMap 文件中设置代理信息:

      1. 在 default 命名空间 rhdh-operator 中搜索名为 backstage-default-config 的 ConfigMap 文件,并打开它。
      2. 查找 deployment.yaml 密钥。
      3. Deployment spec 中设置 HTTP_PROXYHTTPS_PROXYNO_PROXY 环境变量的值,如下例所示:

        示例:在 ConfigMap 文件中设置代理变量

        # Other fields omitted
          deployment.yaml: |-
            apiVersion: apps/v1
            kind: Deployment
            spec:
              template:
                spec:
                  # Other fields omitted
                  initContainers:
                    - name: install-dynamic-plugins
                      # command omitted
                      env:
                        - name: NPM_CONFIG_USERCONFIG
                          value: /opt/app-root/src/.npmrc.dynamic-plugins
                        - 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'
                      # Other fields omitted
                  containers:
                    - name: backstage-backend
                      # Other fields omitted
                      env:
                        - name: APP_CONFIG_backend_listen_port
                          value: "7007"
                        - 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'

    • 作为开发者,在自定义资源(CR)文件中设置代理信息,如下例所示:

      示例:在 CR 文件中设置代理变量

      spec:
        # Other fields omitted
        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'

  2. 保存配置更改。

您可以将 Red Hat Developer Hub 应用程序与 Amazon Web Services (AWS)集成,这有助于简化 AWS 生态系统中的工作流。将 Developer Hub 资源与 AWS 集成,可访问全面的工具、服务和解决方案。

与 AWS 集成需要使用以下方法之一在 Elastic Kubernetes Service (EKS)中部署 Developer Hub:

  • Helm chart
  • Red Hat Developer Hub Operator

在 Red Hat Developer Hub 中,通过 Amazon Web Services (AWS)集成促进监控和日志记录。借助 Amazon CloudWatch 用于实时监控和 Amazon Prometheus 等功能,您可以确保 AWS 基础架构上托管的 Developer Hub 应用程序的可靠性、可扩展性和合规性。

通过此集成,您可以监督、诊断和优化红帽生态系统中的应用程序,从而改进的开发和操作过程。

7.1.1. 使用 Amazon Prometheus 监控

Red Hat Developer Hub 提供与正在运行的应用程序相关的 Prometheus 指标。有关为 EKS 集群启用或部署 Prometheus 的更多信息,请参阅 Amazon 文档中的 Prometheus 指标

要使用 Amazon Prometheus 监控 Developer Hub,您需要为 Prometheus 工作区创建一个 Amazon 受管服务,并配置 Developer Hub Prometheus 指标的 ingestion。如需更多信息,请参阅 Amazon 文档中的创建工作区Ingest Prometheus metrics 部分。

将 Prometheus 指标放入创建的工作区后,您可以将指标提取配置为根据特定 pod 注解从 pod 中提取数据。

7.1.1.1. 为监控配置注解

您可以在 Helm 部署和 Operator 支持的部署中配置注解来监控。

Helm 部署

要注解用于监控的 backstage pod,请更新您的 values.yaml 文件,如下所示:

upstream:
  backstage:
    # --- TRUNCATED ---
    podAnnotations:
      prometheus.io/scrape: 'true'
      prometheus.io/path: '/metrics'
      prometheus.io/port: '7007'
      prometheus.io/scheme: 'http'
Operator 支持的部署

流程

  1. 作为 Operator 的管理员,编辑默认配置以添加 Prometheus 注解,如下所示:

    # Update OPERATOR_NS accordingly
    OPERATOR_NS=rhdh-operator
    kubectl edit configmap backstage-default-config -n "${OPERATOR_NS}"
  2. 在 ConfigMap 中找到 deployment.yaml 键,并将注解添加到 spec.template.metadata.annotations 字段中,如下所示:

    deployment.yaml: |-
      apiVersion: apps/v1
      kind: Deployment
      # --- truncated ---
      spec:
        template:
          # --- truncated ---
          metadata:
            labels:
             rhdh.redhat.com/app:  # placeholder for 'backstage-<cr-name>'
            # --- truncated ---
            annotations:
              prometheus.io/scrape: 'true'
              prometheus.io/path: '/metrics'
              prometheus.io/port: '7007'
              prometheus.io/scheme: 'http'
      # --- truncated ---
  3. 保存您的更改。

验证

验证提取是否正常工作:

  1. 使用 kubectl 将 Prometheus 控制台转发到本地机器,如下所示:

    kubectl --namespace=prometheus port-forward deploy/prometheus-server 9090
  2. 打开 Web 浏览器,再进入到 http://localhost:9090 以访问 Prometheus 控制台。
  3. 监控相关指标,如 process_cpu_user_seconds_total

7.1.2. 使用 Amazon CloudWatch 日志进行日志记录

Red Hat Developer Hub 中的日志记录依赖于 winston 库。默认情况下,debug 级别的日志不会被记录。要激活调试日志,您必须在 Red Hat Developer Hub 实例中将环境变量 LOG_LEVEL 设置为 debug。

7.1.2.1. 配置应用程序日志级别

您可以在 Helm 部署和 Operator 支持的部署中配置应用程序日志级别。

Helm 部署

要更新日志记录级别,请将环境变量 LOG_LEVEL 添加到 Helm Chart 的 values.yaml 文件中:

upstream:
  backstage:
    # --- Truncated ---
    extraEnvVars:
      - name: LOG_LEVEL
        value: debug
Operator 支持的部署

您可以通过在自定义资源中包含环境变量 LOG_LEVEL 来修改日志记录级别,如下所示:

spec:
  # Other fields omitted
  application:
    extraEnvs:
      envs:
        - name: LOG_LEVEL
          value: debug
7.1.2.2. 从 Amazon CloudWatch 检索日志

CloudWatch Container Insights 用于捕获 Amazon EKS 的日志和指标。如需更多信息,请参阅 Amazon EKS 文档的日志记录。

要捕获日志和指标,请 在集群中安装 Amazon CloudWatch Observability EKS 附加组件。在 Container Insights 设置后,您可以使用 Logs Insights 或 Live Tail 视图访问容器日志。

CloudWatch 使用以下方法命名日志组,其中整合了所有容器日志:

/aws/containerinsights/<ClusterName>/application

以下是从 Developer Hub 实例检索日志的示例查询:

fields @timestamp, @message, kubernetes.container_name
| filter kubernetes.container_name in ["install-dynamic-plugins", "backstage-backend"]

在本节中,Amazon Cognito 是一个 AWS 服务,用于在 Developer Hub 中添加身份验证层。您可以使用用户池或通过第三方身份提供程序直接登录到 Developer Hub。

虽然 Amazon Cognito 不是 Developer Hub 的核心身份验证提供程序的一部分,但可以使用通用 OpenID Connect (OIDC)供应商集成。

您可以在 Helm Chart 和 Operator 支持的部署中配置 Developer Hub。

先决条件

  • 您有一个 User Pool,或者您已创建一个新池。有关用户池的更多信息,请参阅 Amazon Cognito 用户池 文档。

    注意

    确保您已记下用户池所在的 AWS 区域,以及用户池 ID。

  • 您已在用户池中创建了 App Client 来集成托管 UI。如需更多信息,请参阅使用 Amazon Cognito 控制台设置托管 UI

    当使用 Amazon Cognito 控制台设置托管 UI 时,请确保进行以下调整:

    1. Allowed callback URL (s) 部分中,包含 URL https://<rhdh_url>/api/auth/oidc/handler/frame。确保将 &lt ;rhdh_url > 替换为您的 Developer Hub 应用程序的 URL,如 my.rhdh.example.com
    2. 同样,在 Allowed sign-out URL (s) 部分中,添加 https://<rhdh_url>。将 <rhdh_url > 替换为您的 Developer Hub 应用程序的 URL,如 my.rhdh.example.com
    3. OAuth 2.0 授权类型 下,选择 Authorization code grant 以返回授权代码。
    4. OpenID Connect 范围 下,确保至少选择以下范围:

      • OpenID
      • profile
      • 电子邮件
    Helm 部署

    流程

    1. 编辑或创建自定义 app-config-rhdh ConfigMap,如下所示:

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: app-config-rhdh
      data:
        "app-config-rhdh.yaml": |
          # --- Truncated ---
          app:
            title: Red Hat Developer Hub
      
          signInPage: oidc
          auth:
            environment: production
            session:
              secret: ${AUTH_SESSION_SECRET}
            providers:
              oidc:
                production:
                  clientId: ${AWS_COGNITO_APP_CLIENT_ID}
                  clientSecret: ${AWS_COGNITO_APP_CLIENT_SECRET}
                  metadataUrl: ${AWS_COGNITO_APP_METADATA_URL}
                  callbackUrl: ${AWS_COGNITO_APP_CALLBACK_URL}
                  scope: 'openid profile email'
                  prompt: auto
    2. 使用以下模板编辑或创建自定义 secret-rhdh Secret:

      apiVersion: v1
      kind: Secret
      metadata:
        name: secrets-rhdh
      stringData:
        AUTH_SESSION_SECRET: "my super auth session secret - change me!!!"
        AWS_COGNITO_APP_CLIENT_ID: "my-aws-cognito-app-client-id"
        AWS_COGNITO_APP_CLIENT_SECRET: "my-aws-cognito-app-client-secret"
        AWS_COGNITO_APP_METADATA_URL: "https://cognito-idp.[region].amazonaws.com/[userPoolId]/.well-known/openid-configuration"
        AWS_COGNITO_APP_CALLBACK_URL: "https://[rhdh_dns]/api/auth/oidc/handler/frame"
    3. values.yaml 文件中添加 ConfigMap 和 Secret 资源的引用:

      upstream:
        backstage:
          image:
            pullSecrets:
            - rhdh-pull-secret
          podSecurityContext:
            fsGroup: 2000
          extraAppConfig:
            - filename: app-config-rhdh.yaml
              configMapRef: app-config-rhdh
          extraEnvVarsSecrets:
            - secrets-rhdh
    4. 升级 Helm 部署:

      helm upgrade rhdh \
        openshift-helm-charts/redhat-developer-hub \
        [--version 1.2.6] \
        --values /path/to/values.yaml
    Operator 支持的部署
    1. 将以下代码添加到 app-config-rhdh ConfigMap 中:

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: app-config-rhdh
      data:
        "app-config-rhdh.yaml": |
          # --- Truncated ---
      
          signInPage: oidc
          auth:
            # Production to disable guest user login
            environment: production
            # Providing an auth.session.secret is needed because the oidc provider requires session support.
            session:
              secret: ${AUTH_SESSION_SECRET}
            providers:
              oidc:
                production:
                  # See https://github.com/backstage/backstage/blob/master/plugins/auth-backend-module-oidc-provider/config.d.ts
                  clientId: ${AWS_COGNITO_APP_CLIENT_ID}
                  clientSecret: ${AWS_COGNITO_APP_CLIENT_SECRET}
                  metadataUrl: ${AWS_COGNITO_APP_METADATA_URL}
                  callbackUrl: ${AWS_COGNITO_APP_CALLBACK_URL}
                  # Minimal set of scopes needed. Feel free to add more if needed.
                  scope: 'openid profile email'
      
                  # Note that by default, this provider will use the 'none' prompt which assumes that your are already logged on in the IDP.
                  # You should set prompt to:
                  # - auto: will let the IDP decide if you need to log on or if you can skip login when you have an active SSO session
                  # - login: will force the IDP to always present a login form to the user
                  prompt: auto
    2. 将以下代码添加到 secret-rhdh Secret 中:

      apiVersion: v1
      kind: Secret
      metadata:
        name: secrets-rhdh
      stringData:
        # --- Truncated ---
      
        # TODO: Change auth session secret.
        AUTH_SESSION_SECRET: "my super auth session secret - change me!!!"
      
        # TODO: user pool app client ID
        AWS_COGNITO_APP_CLIENT_ID: "my-aws-cognito-app-client-id"
      
        # TODO: user pool app client Secret
        AWS_COGNITO_APP_CLIENT_SECRET: "my-aws-cognito-app-client-secret"
      
        # TODO: Replace region and user pool ID
        AWS_COGNITO_APP_METADATA_URL: "https://cognito-idp.[region].amazonaws.com/[userPoolId]/.well-known/openid-configuration"
      
        # TODO: Replace <rhdh_dns>
        AWS_COGNITO_APP_CALLBACK_URL: "https://[rhdh_dns]/api/auth/oidc/handler/frame"
    3. 确保您的自定义资源包含对 app-config-rhdh ConfigMap 和 secrets-rhdh Secret 的引用:

      apiVersion: rhdh.redhat.com/v1alpha1
      kind: Backstage
      metadata:
       # TODO: this the name of your Developer Hub instance
        name: my-rhdh
      spec:
        application:
          imagePullSecrets:
          - "rhdh-pull-secret"
          route:
            enabled: false
          appConfig:
            configMaps:
              - name: "app-config-rhdh"
          extraEnvs:
            secrets:
              - name: "secrets-rhdh"
    4. 可选:如果您有一个由自定义资源支持的现有 Developer Hub 实例,且没有编辑它,您可以手动删除 Developer Hub 部署以使用 Operator 重新创建它。运行以下命令以删除 Developer Hub 部署:

      kubectl delete deployment -l app.kubernetes.io/instance=<CR_NAME>

验证

  1. 进入 Developer Hub web URL 并使用 OIDC 身份验证签名,这会提示您通过配置的 AWS Cognito 用户池进行身份验证。
  2. 登录后,访问 Settings 并验证用户详情。

您可以将 Developer Hub 与 Microsoft Azure Kubernetes Service (AKS)集成,在开发中提供显著改进,为构建、部署和管理应用程序提供了一个简化的环境。

这个集成需要使用以下方法之一在 AKS 上部署 Developer Hub:

  • Helm chart
  • Red Hat Developer Hub Operator

监控和日志记录是在 Red Hat Developer Hub 中管理和维护 Azure Kubernetes 服务(AKS)不可或缺的方面。借助管理 Prometheus Monitoring 和 Azure Monitor 集成等功能,管理员可以高效地监控资源利用率、诊断问题并确保容器化工作负载可靠性。

要启用 Managed Prometheus Monitoring,请使用 az aks createaz aks update 命令中的 -enable-azure-monitor-metrics 选项,具体取决于您是否创建新集群还是更新现有集群,例如:

az aks create/update --resource-group <your-ResourceGroup> --name <your-Cluster> --enable-azure-monitor-metrics

上一命令会安装指标附加组件,它会收集 Prometheus 指标。使用上一命令,您可以通过原生 Azure Monitor 指标和 Prometheus 指标启用对 Azure 资源的监控。您还可以在 Monitoring → Insights 下查看门户的结果。如需更多信息,请参阅使用 Azure Monitor 监控 Azure 资源

另外,Managed Prometheus 服务和 Azure Monitor 的指标可以通过 Azure Managed Grafana 服务访问。如需更多信息,请参阅链接 Grafana 工作区 部分。

默认情况下,Prometheus 使用最小 ingesting 配置集,该配置集优化了 ingestion 卷,并为提取频率、目标和指标设置默认配置。可以通过自定义配置自定义默认设置。Azure 提供了各种方法,包括使用不同的 ConfigMap 来提供提取配置和其他指标附加组件设置。有关默认配置的更多信息,请参阅 Azure Monitor 中的默认 Prometheus 指标配置,并在 Azure Monitor managed service 中的 Customize extract of Prometheus metrics 部分

8.1.1. 使用 Azure Kubernetes Services (AKS)查看日志

您可以访问 Kubernetes 对象生成的实时数据日志,并在 AKS 中的 Container Insights 中收集日志数据。

先决条件

  • 您已在 AKS 上部署了 Developer Hub。

如需更多信息,请参阅在 Azure Kubernetes Service (AKS)上安装 Red Hat Developer Hub

assembly-install-rhdh-aks.adoc

流程

查看 Developer Hub 实例的实时日志
  1. 进入 Azure Portal。
  2. 搜索资源组 < your-ResourceGroup> 并找到您的 AKS 集群 < your-Cluster>
  3. 从菜单中选择 Kubernetes resources → Workloads
  4. 选择 & lt;your-rhdh-cr>-developer-hub (如果为 Helm Chart 安装),或 <your-rhdh-cr>-backstage (如果是 Operator 支持的安装)部署。
  5. 单击左侧菜单中的 Live Logs
  6. 选择 pod。

    注意

    必须只有一个 pod。

实时日志数据会被收集并显示。

查看容器引擎中的实时日志数据
  1. 进入 Azure Portal。
  2. 搜索资源组 < your-ResourceGroup> 并找到您的 AKS 集群 < your-Cluster>
  3. 从菜单中选择 MonitoringInsights
  4. 转至" 容器" 选项卡。
  5. 找到 backend-backstage 容器,并点击它来查看 Container Engine 生成的实时日志数据。

Developer Hub 中的 core-plugin-api 软件包与 Microsoft Azure 身份验证供应商集成,使用 Azure OAuth 进行身份验证。

先决条件

  • 您已在 AKS 上部署了 Developer Hub。

如需更多信息,请参阅在 Azure Kubernetes Service (AKS)上安装 Red Hat Developer Hub

在使用 Helm Chart 安装时,您可以在 Red Hat Developer Hub 中使用 Microsoft Azure 作为身份验证供应商。

如需更多信息,请参阅使用 Helm Chart 在 AKS 上部署 Developer Hub

流程

  1. 注册应用程序后,请注意以下几点:

    • clientId: Application (client) ID,它位于 App Registration → Overview 下。
    • clientSecret: Secret,在 *App Registration → Certificates & secrets 下找到(如果需要,创建新的)。
    • tenantId: Directory (tenant) ID,它位于 App Registration → Overview 下。
  2. 确保 Developer Hub ConfigMap 中包含以下片段:

    auth:
      environment: production
      providers:
        microsoft:
          production:
            clientId: ${AZURE_CLIENT_ID}
            clientSecret: ${AZURE_CLIENT_SECRET}
            tenantId: ${AZURE_TENANT_ID}
            domainHint: ${AZURE_TENANT_ID}
            additionalScopes:
              - Mail.Send

    您可以创建新文件或将其添加到现有文件中。

  3. 将 ConfigMap 应用到 Kubernetes 集群:

    kubectl -n <your_namespace> apply -f <app-config>.yaml
  4. 创建或重复使用包含 Azure 凭证的现有 Secret,并添加以下片段:

    stringData:
      AZURE_CLIENT_ID: <value-of-clientId>
      AZURE_CLIENT_SECRET: <value-of-clientSecret>
      AZURE_TENANT_ID: <value-of-tenantId>
  5. 将 secret 应用到 Kubernetes 集群:

    kubectl -n <your_namespace> apply -f <azure-secrets>.yaml
  6. 确保您的 values.yaml 文件引用之前创建的 ConfigMap 和 Secret:

    upstream:
      backstage:
      ...
        extraAppConfig:
          - filename: ...
            configMapRef: <app-config-containing-azure>
        extraEnvVarsSecrets:
          - <secret-containing-azure>
  7. 可选: 如果已安装 Helm Chart,请升级它:

    helm -n <your_namespace> upgrade -f <your-values.yaml> <your_deploy_name> redhat-developer/backstage --version 1.2.6
  8. 可选: 如果没有更改 rhdh.yaml 文件,例如,您只更新从它引用的 ConfigMap 和 Secret,请通过删除对应的 pod 来刷新 Developer Hub 部署:

    kubectl -n <your_namespace> delete pods -l backstage.io/app=backstage-<your-rhdh-cr>

在使用 Operator 安装时,您可以在 Red Hat Developer Hub 中使用 Microsoft Azure 作为身份验证供应商。

如需更多信息,请参阅使用 Operator 在 OpenShift Container Platform 上安装 Red Hat Developer Hub

流程

  1. 注册应用程序后,请注意以下几点:

    • clientId: Application (client) ID,它位于 App Registration → Overview 下。
    • clientSecret: Secret,在 *App Registration → Certificates & secrets 下找到(如果需要,创建新的)。
    • tenantId: Directory (tenant) ID,它位于 App Registration → Overview 下。
  2. 确保 Developer Hub ConfigMap 中包含以下片段:

    auth:
      environment: production
      providers:
        microsoft:
          production:
            clientId: ${AZURE_CLIENT_ID}
            clientSecret: ${AZURE_CLIENT_SECRET}
            tenantId: ${AZURE_TENANT_ID}
            domainHint: ${AZURE_TENANT_ID}
            additionalScopes:
              - Mail.Send

    您可以创建新文件或将其添加到现有文件中。

  3. 将 ConfigMap 应用到 Kubernetes 集群:

    kubectl -n <your_namespace> apply -f <app-config>.yaml
  4. 创建或重复使用包含 Azure 凭证的现有 Secret,并添加以下片段:

    stringData:
      AZURE_CLIENT_ID: <value-of-clientId>
      AZURE_CLIENT_SECRET: <value-of-clientSecret>
      AZURE_TENANT_ID: <value-of-tenantId>
  5. 将 secret 应用到 Kubernetes 集群:

    kubectl -n <your_namespace> apply -f <azure-secrets>.yaml
  6. 确保自定义资源清单包含对之前创建的 ConfigMap 和 Secret 的引用:

    apiVersion: rhdh.redhat.com/v1alpha1
    kind: Backstage
    metadata:
      name: <your-rhdh-cr>
    spec:
      application:
        imagePullSecrets:
        - rhdh-pull-secret
        route:
          enabled: false
        appConfig:
          configMaps:
            - name: <app-config-containing-azure>
        extraEnvs:
          secrets:
            - name: <secret-containing-azure>
  7. 应用自定义资源清单:

    kubectl -n <your_namespace> apply -f rhdh.yaml
  8. 可选: 如果没有更改 rhdh.yaml 文件,例如,您只更新从它引用的 ConfigMap 和 Secret,请通过删除对应的 pod 来刷新 Developer Hub 部署:

    kubectl -n <your_namespace> delete pods -l backstage.io/app=backstage-<your-rhdh-cr>

第 9 章 管理模板

模板是由 YAML 文件中定义的不同 UI 字段组成的形式。模板包括 操作,它们是按顺序执行的步骤,并可有条件地执行。

您可以使用模板轻松创建 Red Hat Developer Hub 组件,然后将这些组件发布到不同的位置,如 Red Hat Developer Hub 软件目录或 GitHub 或 GitLab 中的存储库。

9.1. 使用 Template Editor 创建模板

您可以使用 Template Editor 创建模板。

流程

  1. 使用以下选项之一访问 Template Editor:

    模板编辑器
    • 为您的 Red Hat Developer Hub 实例打开 URL https://<rhdh_url>/create/edit
    • 在 Red Hat Developer Hub 控制台的导航菜单中点 Create…​,然后点 overflow 菜单按钮并选择 Template 编辑器
  2. Edit Template Form
  3. 可选:修改模板参数的 YAML 定义。有关这些参数的详情请参考 第 9.2 节 “创建模板作为 YAML 文件”
  4. Name * 字段中,为模板输入一个唯一名称。
  5. Owner 下拉菜单中选择模板的所有者。
  6. 点击 Next
  7. Repository Location 视图中,输入您要发布模板的托管存储库的以下信息:

    1. 从下拉菜单中选择 可用主机。

      注意

      可用主机通过 allowedHosts 字段在 YAML 参数中定义:

      YAML 示例

      # ...
              ui:options:
                allowedHosts:
                  - github.com
      # ...

    2. Owner * 字段中,输入托管存储库所属的机构、用户或项目。
    3. Repository * 字段中,输入托管存储库的名称。
    4. Review
  8. 检查信息准确性,然后点 Create

验证

  1. 单击导航面板中的 Catalog 选项卡。
  2. Kind 下拉菜单中选择 Template
  3. 确认模板显示在现有模板列表中。

9.2. 创建模板作为 YAML 文件

您可以通过将 Template 对象定义为 YAML 文件来创建模板。

Template 对象描述了模板及其元数据。它还包含必要的输入变量以及由 scaffolding 服务执行的操作列表。

模板 对象示例

apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
  name: template-name 
1

  title: Example template 
2

  description: An example template for v1beta3 scaffolder. 
3

spec:
  owner: backstage/techdocs-core 
4

  type: service 
5

  parameters: 
6

    - title: Fill in some steps
      required:
        - name
      properties:
        name:
          title: Name
          type: string
          description: Unique name of the component
        owner:
          title: Owner
          type: string
          description: Owner of the component
    - title: Choose a location
      required:
        - repoUrl
      properties:
        repoUrl:
          title: Repository Location
          type: string
  steps: 
7

    - id: fetch-base
      name: Fetch Base
      action: fetch:template
      # ...
  output: 
8

    links:
      - title: Repository 
9

        url: ${{ steps['publish'].output.remoteUrl }}
      - title: Open in catalog 
10

        icon: catalog
        entityRef: ${{ steps['register'].output.entityRef }}
# ...

1
指定模板的名称。
2
指定模板的标题。这是在 Create…​ 视图中的模板标题上可见的标题。
3
指定模板的描述。这是在 Create…​ view 中的模板标题上可见的描述。
4
指定模板的所有权。owner 字段提供有关负责维护或监督系统或机构中模板的信息。在提供的示例中,owner 字段设置为 backstage/busybox-core。这意味着此模板属于 backstage 命名空间中的 zFCP -core 项目。
5
指定组件类型。此必填字段接受任何字符串值,但您的组织应为其建立正确的税款。Red Hat Developer Hub 实例可能会读取此字段,并根据它的值的不同行为。例如,Web 站点 类型组件可能会在特定于 Web 站点的 Red Hat Developer Hub 界面中显示工具。

此字段通常有以下值:

service
后端服务,通常是公开 API。
网站
网站。
程序库
软件库,如 npm 模块或 Java 库。
6
当用户使用 Red Hat Developer Hub 控制台中的模板创建组件时,使用 parameters 部分为用户输入指定参数。每个 参数 子部分由标题和属性定义,创建一个具有该定义的新表单页面。
7
使用 steps 部分指定后端中执行的步骤。这些步骤必须通过使用唯一的步骤 ID、名称和操作来定义。您可以通过访问 URL https://<rhdh_url>/create/actions 来查看 Red Hat Developer Hub 实例上可用的操作。
8
使用 output 部分指定使用模板时创建的输出数据的结构。output 部分(特别是 links 子部分)为用户提供了可用于访问和与从模板创建的组件交互的宝贵引用和 URL。
9
提供与生成组件关联的存储库的引用或 URL。
10
提供允许用户在列出各种组件的目录或目录中打开生成的组件的参考或 URL。

9.3. 将现有模板导入到 Red Hat Developer Hub

您可以使用 Catalog Processor 在 Red Hat Developer Hub 实例中添加现有模板。

先决条件

  • 您已创建了一个目录或仓库,其中包含至少一个模板 YAML 文件。
  • 如果要使用存储在 GitHub 或 GitLab 等存储库中的模板,您必须为您的供应商配置 Red Hat Developer Hub 集成。

流程

  • app-config.yaml 配置文件中,修改 catalog.rules 部分使其包含模板的规则,并将 catalog.locations 部分配置为指向要添加的模板,如下例所示:

    # ...
    catalog:
      rules:
        - allow: [Template] 
    1
    
      locations:
        - type: url 
    2
    
          target: https://<repository_url>/example-template.yaml 
    3
    
    # ...
    1
    要允许新模板添加到目录中,您必须添加一个 Template 规则。
    2
    如果您要从存储库(如 GitHub 或 GitLab)导入模板,请使用 url 类型。
    3
    指定模板的 URL。

验证

  1. 单击导航面板中的 Catalog 选项卡。
  2. Kind 下拉菜单中选择 Template
  3. 确认模板显示在现有模板列表中。

Red Hat Developer Hub TechDocs 插件可帮助您的组织在中央位置创建、查找和使用文档,并以标准化的方式使用。例如:

文档类代码方法
在 Markdown 文件中编写存储在项目存储库中的技术文档以及您的代码。
文档站点生成
使用 MkDocs 为您的在 Developer Hub 中呈现的文档创建一个功能全面、基于 Markdown 的静态 HTML 站点。
文档站点元数据和集成
请参阅有关文档站点的额外元数据以及静态文档,如最后一次更新的日期、站点所有者、顶级贡献者、打开 GitHub 问题、Slack 支持频道和 Stack Overflow Enterprise 标签。
内置导航和搜索
从文档中更快、更轻松地查找您想要的信息。
附加组件
使用附加组件自定义 TechDocs 体验,以解决高顺序的文档需求。

TechDocs 插件是预安装并在 Developer Hub 实例上启用的。您可以通过配置 Red Hat Developer Hub Helm chart 或 Red Hat Developer Hub Operator 配置映射来禁用或启用 TechDocs 插件并更改其他参数。

重要

Red Hat Developer Hub 包括一个内置的 TechDocs 构建器,它从您的代码库中生成静态 HTML 文档。但是,本地构建器的默认基本设置不适用于生产环境。

您可以将 CI/CD 管道与具有专用作业的存储库搭配使用,为 TechDocs 生成文档。生成的静态文件存储在 OpenShift Data Foundation 中,或存储在您选择的云存储解决方案中,并发布到静态 HTML 文档站点。

将 OpenShift Data Foundation 配置为存储 TechDocs 生成的文件后,您可以配置 TechDocs 插件,以使用 OpenShift Data Foundation 进行云存储。

10.1. 为 TechDocs 文件配置存储

TechDocs 发布程序将生成的文件存储在本地存储或云存储中,如 OpenShift Data Foundation、Google GCS、AWS S3 或 Azure Blob Storage。

10.1.1. 使用 OpenShift Data Foundation 进行文件存储

您可以配置 OpenShift Data Foundation 以存储 TechDocs 生成的文件,而不依赖于其他云存储解决方案。

OpenShift Data Foundation 提供了一个 ObjectBucketClaim 自定义资源(CR),您可以使用它来请求 S3 兼容存储桶后端。您必须安装 OpenShift Data Foundation Operator 来使用此功能。

先决条件

流程

  • 创建一个 ObjectBucketClaim CR,其中存储了生成的 TechDocs 文件。例如:

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: <rhdh_bucket_claim_name>
    spec:
      generateBucketName: <rhdh_bucket_claim_name>
      storageClassName: openshift-storage.noobaa.io
    注意

    创建 Developer Hub ObjectBucketClaim CR 会自动创建 Developer Hub ObjectBucketClaim 配置映射和 secret。配置映射和 secret 的名称与 ObjetBucketClaim CR 的名称相同。

创建 ObjectBucketClaim CR 后,您可以使用配置映射和 secret 中存储的信息,使 Developer Hub 容器可以作为环境变量访问这些信息。根据用来安装 Developer Hub 的方法,您可以将访问信息添加到 Red Hat Developer Hub Helm Chart 或 Operator 配置中。

10.1.2. 使用 Helm Chart 使对象存储可供容器访问

创建 ObjectBucketClaim 自定义资源(CR)会自动生成 Developer Hub ObjectBucketClaim 配置映射和 secret。配置映射和 secret 包含 ObjectBucket 访问信息。在 Helm Chart 配置中添加访问信息可使 Developer Hub 容器访问它,方法是将以下环境变量添加到容器中:

  • BUCKET_NAME
  • BUCKET_HOST
  • BUCKET_PORT
  • BUCKET_REGION
  • BUCKET_SUBREGION
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

然后,在 TechDocs 插件配置中使用这些变量。

先决条件

流程

  • 在 Helm Chart 值中的 upstream.backstage 键中,输入 Developer Hub ObjectBucketClaim secret 的名称,作为 extraEnvVarsSecrets 字段的值和 extraEnvVarsCM 字段。例如:

    upstream:
      backstage:
        extraEnvVarsSecrets:
          - <rhdh_bucket_claim_name>
        extraEnvVarsCM:
          - <rhdh_bucket_claim_name>
10.1.2.1. Helm Chart 的 TechDocs 插件配置示例

以下示例显示了 TechDocs 插件的 Developer Hub Helm Chart 配置:

global:
  dynamic:
    includes:
      - 'dynamic-plugins.default.yaml'
  plugins:
    - disabled: false
      package: ./dynamic-plugins/dist/backstage-plugin-techdocs-backend-dynamic
      pluginConfig:
        techdocs:
          builder: external
          generator:
            runIn: local
          publisher:
            awsS3:
              bucketName: '${BUCKET_NAME}'
              credentials:
                accessKeyId: '${AWS_ACCESS_KEY_ID}'
                secretAccessKey: '${AWS_SECRET_ACCESS_KEY}'
              endpoint: 'https://${BUCKET_HOST}'
              region: '${BUCKET_REGION}'
              s3ForcePathStyle: true
            type: awsS3

10.1.3. 使用 Operator 使容器可以访问对象存储

创建 ObjectBucketClaim 自定义资源(CR)会自动生成 Developer Hub ObjectBucketClaim 配置映射和 secret。配置映射和 secret 包含 ObjectBucket 访问信息。在 Operator 配置中添加访问信息可使 Developer Hub 容器访问它,方法是将以下环境变量添加到容器中:

  • BUCKET_NAME
  • BUCKET_HOST
  • BUCKET_PORT
  • BUCKET_REGION
  • BUCKET_SUBREGION
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

然后,在 TechDocs 插件配置中使用这些变量。

先决条件

  • 已使用 Operator 在 OpenShift Container Platform 上安装 Red Hat Developer Hub。
  • 您已创建了 ObjectBucketClaim CR 来存储 TechDocs 生成的文件。

流程

  • 在 Developer Hub Backstage CR 中,输入 Developer Hub ObjectBucketClaim 配置映射的名称作为 spec.application.extraEnvs.configMaps 字段的值,并输入 Developer Hub ObjectBucketClaim secret 名称作为 spec.application.extraEnvs.secrets 字段的值。例如:

    apiVersion: objectbucket.io/v1alpha1
    kind: Backstage
    metadata:
     name: <name>
    spec:
      application:
        extraEnvs:
          configMaps:
            - name: <rhdh_bucket_claim_name>
          secrets:
            - name: <rhdh_bucket_claim_name>
10.1.3.1. Operator 的 TechDocs 插件配置示例

以下示例显示了 TechDocs 插件的 Red Hat Developer Hub Operator 配置映射配置:

kind: ConfigMap
apiVersion: v1
metadata:
  name: dynamic-plugins-rhdh
data:
  dynamic-plugins.yaml: |
    includes:
      - dynamic-plugins.default.yaml
    plugins:
      - disabled: false
        package: ./dynamic-plugins/dist/backstage-plugin-techdocs-backend-dynamic
        pluginConfig:
          techdocs:
            builder: external
            generator:
              runIn: local
            publisher:
              awsS3:
                bucketName: '${BUCKET_NAME}'
                credentials:
                  accessKeyId: '${AWS_ACCESS_KEY_ID}'
                  secretAccessKey: '${AWS_SECRET_ACCESS_KEY}'
                endpoint: 'https://${BUCKET_HOST}'
                region: '${BUCKET_REGION}'
                s3ForcePathStyle: true
              type: awsS3

10.2. 配置 CI/CD 以生成和发布 TecDocs 站点

xmlrpc 从云存储桶(如 OpenShift Data Foundation)读取静态生成的文档文件。文档站点在与包含文档文件的存储库关联的 CI/CD 工作流上生成。您可以使用 HEKETI -cli CLI 工具在 CI 上生成文档 并发布到云存储。

您可以使用以下示例为 TechDocs 出版物创建一个脚本:

# Prepare
REPOSITORY_URL='https://github.com/org/repo'
git clone $REPOSITORY_URL
cd repo

# Install @techdocs/cli, mkdocs and mkdocs plugins
npm install -g @techdocs/cli
pip install "mkdocs-techdocs-core==1.*"

# Generate
techdocs-cli generate --no-docker

# Publish
techdocs-cli publish --publisher-type awsS3 --storage-name <bucket/container> --entity <Namespace/Kind/Name>

当用户在包含文档文件的存储库中进行更改时,TechDocs 工作流会启动 CI。您只能将工作流配置为仅在 docs/ 目录或 mkdocs.yml 中的文件改变时启动。

10.2.1. 为 CI 准备存储库

CI 的第一步是将文档源存储库克隆到工作目录中。

流程

  • 要在工作目录中克隆您的文档源存储库,请输入以下命令:

    git clone <https://path/to/docs-repository/>

10.2.2. 生成 TechDocs 网站

流程

要将 CI/CD 配置为生成 HEKETI,请完成以下步骤:

  1. 使用以下命令安装 npx 软件包 以运行 HEKETI-cli

    npm install -g npx
  2. 使用以下命令安装 HEKETI-cli 工具:

    npm install -g @techdocs/cli
  3. 使用以下命令安装 mkdocs 插件:

    pip install "mkdocs-techdocs-core==1.*"
  4. 使用以下命令生成 HEKETI 站点:

    npx @techdocs/cli generate --no-docker --source-dir <path_to_repo> --output-dir ./site

    其中 < path_to_repo > 是用来克隆存储库的文件路径中的位置。

10.2.3. 发布 TechDocs 网站

流程

要发布您的 HEKETI 网站,请完成以下步骤:

  1. 为您的云存储供应商设置必要的身份验证环境变量。
  2. 使用以下命令发布您的 HEKETI :

    npx @techdocs/cli publish --publisher-type <awsS3|googleGcs> --storage-name <bucket/container> --entity <namespace/kind/name> --directory ./site
  3. 在软件模板中添加 .github/workflows/wagon.yml 文件。例如:

    name: Publish TechDocs Site
    
    on:
     push:
       branches: [main]
       # You can even set it to run only when TechDocs related files are updated.
       # paths:
       #   - "docs/**"
       #   - "mkdocs.yml"
    
    jobs:
     publish-techdocs-site:
       runs-on: ubuntu-latest
    
       # The following secrets are required in your CI environment for publishing files to AWS S3.
       # e.g. You can use GitHub Organization secrets to set them for all existing and new repositories.
       env:
         TECHDOCS_S3_BUCKET_NAME: ${{ secrets.TECHDOCS_S3_BUCKET_NAME }}
         AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
         AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
         AWS_REGION: ${{ secrets.AWS_REGION }}
         ENTITY_NAMESPACE: 'default'
         ENTITY_KIND: 'Component'
         ENTITY_NAME: 'my-doc-entity'
         # In a Software template, Scaffolder will replace {{cookiecutter.component_id | jsonify}}
         # with the correct entity name. This is same as metadata.name in the entity's catalog-info.yaml
         # ENTITY_NAME: '{{ cookiecutter.component_id | jsonify }}'
    
       steps:
         - name: Checkout code
           uses: actions/checkout@v3
    
         - uses: actions/setup-node@v3
         - uses: actions/setup-python@v4
           with:
             python-version: '3.9'
    
         - name: Install techdocs-cli
           run: sudo npm install -g @techdocs/cli
    
         - name: Install mkdocs and mkdocs plugins
           run: python -m pip install mkdocs-techdocs-core==1.*
    
         - name: Generate docs site
           run: techdocs-cli generate --no-docker --verbose
    
         - name: Publish docs site
           run: techdocs-cli publish --publisher-type awsS3 --storage-name $TECHDOCS_S3_BUCKET_NAME --entity $ENTITY_NAMESPACE/$ENTITY_KIND/$ENTITY_NAME

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部