配置 Red Hat Developer Hub
添加自定义配置映射和 secret 以将 Red Hat Developer Hub 实例配置为在您的 IT 生态系统中工作
摘要
前言 复制链接链接已复制到粘贴板!
了解如何通过添加自定义配置映射和 secret,为生产环境配置 Red Hat Developer Hub (RHDH)以在您的 IT 生态系统中进行工作。
第 1 章 置备并使用您的自定义 Red Hat Developer Hub 配置 复制链接链接已复制到粘贴板!
要配置 Red Hat Developer Hub,请使用以下方法,它们被广泛用来配置 Red Hat OpenShift Container Platform 应用程序:
- 使用配置映射挂载文件和目录。
- 使用机密注入环境变量。
学习如何将这些方法应用到 Developer Hub:
- 将自定义配置映射和 secret 置备到 OpenShift Container Platform。
使用您选择的部署方法挂载配置映射并注入 secret:
1.1. 置备自定义 Red Hat Developer Hub 配置 复制链接链接已复制到粘贴板!
要配置 Red Hat Developer Hub,在运行 Red Hat Developer Hub 前,将自定义 Red Hat Developer Hub 配置映射和 secret 置备为 Red Hat OpenShift Container Platform。
您可以跳过这一步,以使用默认配置映射和 secret 运行 Developer Hub。在 Developer Hub 重启时,您对此配置的更改可能会恢复。
先决条件
-
通过使用 OpenShift CLI (
oc),您可以访问开发人员权限,可以访问一个旨在包含 Developer Hub 实例的 OpenShift Container Platform 集群。
流程
编写自定义 &
lt;my_product_secrets > .txt文件,将 secret 置备为 OpenShift Container Platform secret 中的环境变量值,而不是在配置文件中清除文本。它以KEY=value形式每行包含一个 secret。编写自定义
app-config.yaml文件。这是主要的 Developer Hub 配置文件。您需要自定义app-config.yaml文件来避免 Developer Hub 安装程序在升级过程中恢复用户编辑。当自定义app-config.yaml文件为空时,Developer Hub 将使用默认值。- 要在 OpenShift Container Platform 上使用 Red Hat Developer Hub Operator 准备部署,您可以从一个空文件开始。
要使用 Red Hat Developer Hub Helm Chart 或 Kubernetes 准备部署,请在
app-config.yaml文件中的相关字段中输入 Developer Hub 基础 URL,以确保 Developer Hub 正常工作。基本 URL 是 Developer Hub 用户在访问 Developer Hub 时看到的内容。相关字段在app和backend部分中是baseUrl,在backend.cors子部分中是origin:例 1.1. 在
app-config.yaml中配置baseUrlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,还可输入您的配置,例如:
为 OpenShift Container Platform 集群置备自定义配置文件。
创建包含 Developer Hub 实例的 < my-rhdh-project > 项目。
oc create namespace my-rhdh-project
$ oc create namespace my-rhdh-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,使用 Web 控制台创建项目。
将您的
app-config.yaml文件置备到 <my-rhdh- project> 项目中的my-rhdh-app-config 配置映射。oc create configmap my-rhdh-app-config --from-file=app-config.yaml --namespace=my-rhdh-project
$ oc create configmap my-rhdh-app-config --from-file=app-config.yaml --namespace=my-rhdh-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,使用 Web 控制台创建配置映射。
将 <
;my_product_secrets> .txt文件置备为 <my -rhdh-project> 项目中的 <my_product_secrets > secret。oc create secret generic <my_product_secrets> --from-file=<my_product_secrets>.txt --namespace=my-rhdh-project
$ oc create secret generic <my_product_secrets> --from-file=<my_product_secrets>.txt --namespace=my-rhdh-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,使用 Web 控制台创建机密。
<my_product_secrets > 是您首选的 Developer Hub secret 名称,在 Developer Hub 中指定 secret 配置的标识符。
后续步骤
考虑置备额外的配置映射和 secret:
- 要使用外部 PostgreSQL 数据库,请调配您的 PostgreSQL 数据库机密。
- 要启用动态插件,请置备您的动态插件配置映射。
- 要使用外部文件配置授权,请置备您的 RBAC 策略配置映射。
要使用 Developer Hub Operator 使用自定义配置运行 Red Hat Developer Hub,请创建 Backstage 自定义资源(CR):
- 挂载自定义配置映射中置备的文件。
- 注入自定义 secret 中置备的环境变量。
先决条件
-
通过使用 OpenShift CLI (
oc),您可以访问开发人员权限,可以访问一个旨在包含 Developer Hub 实例的 OpenShift Container Platform 集群。 - 您的 OpenShift Container Platform 管理员已在 OpenShift Container Platform 中安装了 Red Hat Developer Hub Operator。
-
您已在 <
my-rhdh-project> 项目中置备了自定义配置映射和 secret。
流程
在
my-rhdh-custom-resource.yaml文件中编写您的 Backstage CR,以使用您的自定义配置映射和 secret。例 1.2. 最少的
my-rhdh-custom-resource.yaml自定义资源示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 1.3.
my-rhdh-custom-resource.yaml自定义资源示例,带有动态插件和 RBAC 策略配置映射,以及外部 PostgreSQL 数据库 secret。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 必填字段
- 不需要字段。您可以创建一个空的 Backstage CR,并使用默认配置运行 Developer Hub。
- 可选字段
spec.application.appConfig.configMaps- 输入您的配置映射名称列表。
.mount 文件在
my-rhdh-app-config配置映射中。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 1.4. 在
my-rhdh-app-config和rbac-policies配置映射中挂载文件。Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec.application.extraEnvs.envs(可选)输入不是 secret 的额外环境变量,如 代理环境变量。
例 1.5. 注入
HTTP_PROXY、HTTPS_PROXY和NO_PROXY环境变量。Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec.application.extraEnvs.secrets输入环境变量 secret 名称列表。
例 1.6. 在 Red Hat Developer Hub secret 中注入环境变量
spec: application: extraEnvs: secrets: - name: <my_product_secrets>spec: application: extraEnvs: secrets: - name: <my_product_secrets>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 1.7. 在 Red Hat Developer Hub 和
my-rhdh-database-secretssecret 中注入环境变量Copy to Clipboard Copied! Toggle word wrap Toggle overflow
<my_product_secrets > 是您首选的 Developer Hub secret 名称,在 Developer Hub 中指定 secret 配置的标识符。
spec.application.extraFiles.secrets输入您的证书文件 secret 名称和文件列表。
挂载
postgres-crt.pem、postgres-ca.pem和postgres-key.key文件,该文件包含在my-rhdh-database-certificates-secretssecret 中Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec.database.enableLocalDb启用或禁用本地 PostgreSQL 数据库。
禁用本地 PostgreSQL 数据库生成以使用外部 postgreSQL 数据库
spec: database: enableLocalDb: falsespec: database: enableLocalDb: falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在开发环境中,使用本地 PostgreSQL 数据库
spec: database: enableLocalDb: truespec: database: enableLocalDb: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow spec.deployment(可选) 输入您的部署配置。
应用 Backstage CR 来启动或更新 Developer Hub 实例。
oc apply --filename=my-rhdh-custom-resource.yaml --namespace=my-rhdh-project
$ oc apply --filename=my-rhdh-custom-resource.yaml --namespace=my-rhdh-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.1. 使用 Red Hat Developer Hub Operator 在自定义配置中挂载附加文件 复制链接链接已复制到粘贴板!
您可以使用 Developer Hub Operator 将额外文件(如 ConfigMap 或 Secret)挂载到首选位置的容器。
mountPath 字段指定 ConfigMap 或 Secret 挂载的位置。mount 的行为(无论是包含还是排除 subPath )取决于 key 或 mountPath 字段的规格。
-
如果没有指定
key和mountPath:每个键或值都挂载为带有subPath的文件名或内容。 -
如果使用或不使用
mountPath指定密钥:指定的key或 value 使用subPath挂载。 -
如果只指定
mountPath:包含所有键或值的目录,但没有subPath。
-
OpenShift Container Platform 不会自动更新使用
subPath挂载的卷。默认情况下,RHDH Operator 会监控这些 ConfigMap 或 Secret,并在发生更改时刷新 RHDH Pod。 - 为了安全起见,Red Hat Developer Hub 不授予 Operator Service Account 对 Secret 的读取访问权限。因此,不支持在不指定 mountPath 和 key 的情况下挂载 Secret 的文件。
先决条件
-
您可以使用 OpenShift CLI (
oc)访问包含 Developer Hub 实例的 OpenShift Container Platform 集群。 - 您的 OpenShift Container Platform 管理员已在 OpenShift Container Platform 中安装了 Red Hat Developer Hub Operator。
流程
在 OpenShift Container Platform 中,使用以下 YAML 代码创建 ConfigMap 或 Secret:
例 1.8. 最小
my-project-configmapConfigMap 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 1.9. 最小 Red Hat Developer Hub Secret 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
configMaps 名称的值设置为ConfigMap 或secret 名称,设置为BackstageCR 中的 Secret 名称。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
<my_product_secrets > 是您首选的 Developer Hub secret 名称,在 Developer Hub 中指定 secret 配置的标识符。
您可以使用 Red Hat Developer Hub Helm Chart 将自定义应用程序配置文件添加到 OpenShift Container Platform 实例中。
先决条件
- 通过使用 OpenShift Container Platform Web 控制台,您可以使用开发人员权限访问一个名为 < my-rhdh- project > 的 OpenShift Container Platform 项目,旨在包含 Developer Hub 实例。
-
您已将自定义配置文件和 secret 上传到 <
my-rhdh-project>项目。
流程
将 Helm 配置为使用 Developer Hub 中的自定义配置文件。
- 进入 Helm 选项卡查看 Helm 发行版本列表。
- 点击您要使用的 Helm 发行版本上的 overflow 菜单,然后选择 Upgrade。
- 使用 YAML 视图来 编辑 Helm 配置。
设置
upstream.backstage.extraAppConfig.configMapRef和upstream.backstage.extraAppConfig.filename参数的值,如下所示:Helm 配置摘录
upstream: backstage: extraAppConfig: - configMapRef: my-rhdh-app-config filename: app-config.yamlupstream: backstage: extraAppConfig: - configMapRef: my-rhdh-app-config filename: app-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 单击 Upgrade。
后续步骤
- 使用 Helm 安装 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 实例。
流程
可选:创建一个证书 secret 来使用 TLS 连接配置 PostgreSQL 实例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建凭证 secret 以与 PostgreSQL 实例连接:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 提供凭证 secret 的名称。
- 2
- 提供用于连接 PostgreSQL 实例的凭证数据。
- 3
- 可选:根据所需的 安全套接字层(SSL)模式提供值。
- 4
- 可选: 只有在需要 PostgreSQL 实例的 TLS 连接时才提供值。
创建
Backstage自定义资源(CR):Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意BackstageCR 中列出的环境变量与 Operator 默认配置一起工作。如果更改了 Operator 默认配置,您必须相应地重新配置BackstageCR。-
将
BackstageCR 应用到已部署 Developer Hub 实例的命名空间。
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 实例。
流程
可选:创建一个证书 secret 来使用 TLS 连接配置 PostgreSQL 实例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建凭证 secret 以与 PostgreSQL 实例连接:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 提供凭证 secret 的名称。
- 2
- 提供用于连接 PostgreSQL 实例的凭证数据。
- 3
- 可选:根据所需的 安全套接字层(SSL)模式提供值。
- 4
- 可选: 只有在需要 PostgreSQL 实例的 TLS 连接时才提供值。
在名为
values.yaml的 Helm 配置文件中配置 PostgreSQL 实例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在名为
values.yaml的 Helm 配置文件中应用配置更改:helm upgrade -n <your-namespace> <your-deploy-name> openshift-helm-charts/redhat-developer-hub -f values.yaml --version 1.6.3
helm upgrade -n <your-namespace> <your-deploy-name> openshift-helm-charts/redhat-developer-hub -f values.yaml --version 1.6.3Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 使用 Operator 将本地数据库迁移到外部数据库服务器 复制链接链接已复制到粘贴板!
默认情况下,Red Hat Developer Hub 在 PostgreSQL 数据库中托管每个插件的数据。当您获取数据库列表时,您可能会看到基于 Developer Hub 中配置的插件数量的多个数据库。您可以将托管在本地 PostgreSQL 服务器上的 RHDH 实例迁移到外部 PostgreSQL 服务,如 AWS RDS、Azure 数据库或 Crunchy 数据库。要从每个 RHDH 实例迁移数据,您可以使用 PostgreSQL 工具,如 pg_dump 和 psql 或 pgAdmin。
以下流程使用数据库复制脚本进行快速迁移。
先决条件
流程
在终端中运行以下命令,为本地 PostgreSQL 数据库 pod 配置端口转发:
oc port-forward -n <your-namespace> <pgsql-pod-name> <forward-to-port>:<forward-from-port>
oc port-forward -n <your-namespace> <pgsql-pod-name> <forward-to-port>:<forward-from-port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
&
lt;pgsql-pod-name> 变量表示 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
oc port-forward -n developer-hub backstage-psql-developer-hub-0 15432:5432Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
&
复制以下
db_copy.sh脚本,并根据您的配置编辑详情:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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")。
创建用于复制数据的目的地数据库:
/bin/bash TO_PSW=<destination-db-password> /path/to/db_copy.sh
/bin/bash TO_PSW=<destination-db-password> /path/to/db_copy.sh1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- &
lt;destination-db-password> 变量表示要连接到目标数据库的密码。
注意当数据复制完成后,您可以停止端口转发。有关处理大型数据库和使用压缩工具的更多信息,请参阅 PostgreSQL 网站上的 Handling Large Databases 部分。
-
重新配置
Backstage自定义资源(CR)。如需更多信息,请参阅使用 Operator 配置外部 PostgreSQL 实例。 在重新配置后,检查
BackstageCR 的末尾是否存在以下代码:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意重新配置
BackstageCR 会删除对应的StatefulSet和Pod对象,但不删除PersistenceVolumeClaim对象。使用以下命令删除本地PersistenceVolumeClaim对象:oc -n developer-hub delete pvc <local-psql-pvc-name>
oc -n developer-hub delete pvc <local-psql-pvc-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中,<
;local-psql-pvc-name> 变量采用data-<psql-pod-name>格式。- 应用配置更改。
验证
运行以下命令,验证您的 RHDH 实例是否使用迁移的数据运行,且不包含本地 PostgreSQL 数据库:
oc get pods -n <your-namespace>
oc get pods -n <your-namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查以下详情的输出:
-
backstage-developer-hub-xxxpod 处于 running 状态。 backstage-psql-developer-hub-0pod 不可用。您还可以使用 OpenShift Container Platform Web 控制台中的 Topology 视图来验证这些详情。
-
第 3 章 使用 Operator 时配置 Red Hat Developer Hub 部署 复制链接链接已复制到粘贴板!
Red Hat Developer Hub Operator 会公开其自定义资源(CR)的 rhdh.redhat.com/v1alpha3 API 版本。此 CR 会公开一个通用的 spec.deployment.patch 字段,它可让您完全控制 Developer Hub Deployment 资源。此字段可以是标准 apps.Deployment Kubernetes 对象的一个片段。
流程
-
使用以下字段创建
BackstageCR:
Example
labels为 Developer Hub pod 添加标签。
添加标签
my=true示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 卷
添加名为 my-volume 的额外卷,并将它挂载到 Developer Hub 应用程序容器中的 /my/path 下。
附加卷示例
将默认的 dynamic-plugins-root 卷替换为名为 dynamic-plugins-root 的持久性卷声明(PVC)。请注意 $patch: replace 指令,否则将添加新卷。
dynamic-plugins-root 卷替换示例
CPU请求将 Developer Hub 应用程序容器的 CPU 请求设置为 250m。
CPU 请求示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow my-sidecar容器在 Developer Hub Pod 中添加新的
my-sidecarsidecar 容器。side car 容器示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 4 章 在 Red Hat Developer Hub 中配置 readOnlyRootFilesystem 复制链接链接已复制到粘贴板!
Red Hat Developer Hub 部署由两个容器组成:一个 initContainer,用于安装 Dynamic Plugins,以及一个运行应用程序的后端容器。initContainer 默认启用 readOnlyRootFilesystem 选项。要在后端容器上启用这个选项,您必须有权通过 Helm 部署资源,或为 Operator 支持的部署创建或更新 CR。您可以使用以下方法在后端容器上手动配置 readOnlyRootFilesystem 选项:
- Red Hat Developer Hub Operator
- Red Hat Developer Hub Helm chart
当使用 Operator 部署 Developer Hub 时,您必须在 Backstage 自定义资源(CR)中为 部署 指定一个 补丁,它将 readOnlyRootFilesystem 选项应用到 Developer Hub 后端容器中的 securityContext 部分。
流程
在
BackstageCR 中,添加securityContext规格。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Operator 默认配置中定义的主容器的名称。
流程
在
values.yaml文件中,将readOnlyRootFilesystem: true行添加到containerSecurityContext部分。例如:upstream: backstage: containerSecurityContext: readOnlyRootFilesystem: trueupstream: backstage: containerSecurityContext: readOnlyRootFilesystem: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 5 章 在 Red Hat Developer Hub 中配置高可用性 复制链接链接已复制到粘贴板!
高可用性(HA)是一种系统设计方法,通过消除单点故障来确保服务持续访问,即使在各个组件出现故障期间也是如此。它引入了冗余和故障转移机制,以最大程度缩短停机时间并保持运行连续性。
Red Hat Developer Hub 支持 Red Hat OpenShift Container Platform 和 Azure Kubernetes Service 上的 HA 部署。HA 部署在支持的环境中支持更具弹性和可靠的服务可用性。
在单一实例部署中,如果发生失败,无论是因为软件崩溃、硬件问题或其他意外中断,它会导致整个服务不可用、中断开发工作流和对关键资源的访问。
启用 HA 后,您可以扩展后端副本数来引入冗余。此设置可确保如果一个 pod 或组件失败,则其他组件将继续在不中断的情况下为请求提供服务。内置负载均衡器管理入口流量,并在可用的 pod 之间分发负载。同时,RHDH 后端管理并发请求,并有效地解决资源级别的冲突。
作为管理员,您可以通过调整配置文件中的副本值来配置高可用性:
-
如果使用 Operator 安装,请在
Backstage自定义资源中配置副本值。 - 如果使用 Helm Chart,请在 Helm 配置中设置副本值。
5.1. 在 Red Hat Developer Hub Operator 部署中配置高可用性 复制链接链接已复制到粘贴板!
使用 Operator 部署的 RHDH 实例使用 Backstage 自定义资源中的配置。在 Backstage 自定义资源中,replicas 字段的默认值为 1。如果要为高可用性配置 RHDH 实例,您必须将 副本设置为 大于 1 的值。
流程
在
Backstage自定义资源中,将replicas设置为一个大于1的值。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 根据您要配置的备份实例数量来设置副本数量。
5.2. 在 Red Hat Developer Hub Helm Chart 部署中配置高可用性 复制链接链接已复制到粘贴板!
当使用 Helm Chart 部署 Developer Hub 时,您必须将 replicas 设置为在 Helm Chart 中大于 1 的值。副本 的默认值为 1。
流程
要为 Developer Hub Helm Chart 配置高可用性,请完成以下步骤:
在 Helm Chart 配置文件中,将
replicas设置为一个大于1的值。例如:upstream: backstage: replicas: <replicas_value>upstream: backstage: replicas: <replicas_value>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 根据您要配置的备份实例数量来设置副本数量。
第 6 章 在公司代理后面运行 Red Hat Developer Hub 复制链接链接已复制到粘贴板!
在网络受限环境中,将 Red Hat Developer Hub 配置为使用代理访问远程网络资源。
您可以在启动应用程序前设置以下任意环境变量,在企业代理后面运行 Developer Hub 应用程序:
HTTP_PROXY- 表示用于 HTTP 请求的代理。
HTTPS_PROXY- 表示用于 HTTPS 请求的代理。
NO_PROXY- 将环境变量设置为绕过特定域的代理。变量值是一个以逗号分隔的主机名或 IP 地址列表,无需代理即可访问,即使指定了代理也是如此。
6.1. 了解 NO_PROXY 排除规则 复制链接链接已复制到粘贴板!
NO_PROXY 是主机名或 IP 地址的逗号分隔列表,带有可选的端口号。如果输入 URL 与 NO_PROXY 中列出的任何条目匹配,则直接请求获取该 URL,例如绕过代理设置。
RHDH 中的 NO_PROXY 的默认值为 localhost,127.0.0.1。如果要覆盖它,请在列表中至少包含 localhost 或 localhost:7007。否则,RHDH 后端可能会失败。
匹配遵循以下规则:
-
NO_PROXYswig 将绕过所有请求的代理。 -
空格和逗号可以分隔
NO_PROXY列表中的条目。例如:NO_PROXY="localhost,example.com"或NO_PROXY="localhost example.com", 或NO_PROXY="localhost, example.com"将具有相同的效果。 -
如果
NO_PROXY不包含条目,配置HTTP (S)_PROXY设置会导致后端通过代理发送所有请求。 -
后端不会执行 DNS 查找来确定请求是否应该绕过代理。例如,如果 DNS 将
example.com解析为1.2.3.4,设置NO_PROXY=1.2.3.4不会影响发送到example.com的请求。只有发送到 IP 地址1.2.3.4的请求才会绕过代理。 -
如果在主机名或 IP 地址后添加端口,请求必须与 host/IP 和端口匹配,才能绕过代理。例如:
NO_PROXY=example.com:1234会将请求的代理绕过到http (s)://example.com:1234,但不用于其他端口上的请求,如http (s)://example.com。 -
如果您没有在主机名或 IP 地址后指定端口,则到该主机/IP 地址的所有请求都将绕过代理,而不考虑端口。例如,
NO_PROXY=localhost将绕过发送到 URL 的请求的代理,如http (s)://localhost:7077和http (s)://localhost:8888。 -
CIDR 标记中的 IP 地址块无法正常工作。因此,设置
NO_PROXY=10.11.0.0/16不会有任何效果,即使后端向该块中的 IP 地址发送请求。 -
仅支持 IPv4 地址。
::1等 IPv6 地址将无法正常工作。 -
通常,只有在主机名与
NO_PROXY列表中的条目完全匹配时才会绕过代理。唯一的例外是以句点(.)或通配符(*)开头的条目。在这种情况下,如果主机名以 条目结尾,则绕过代理。
如果要排除给定域及其所有子域,请列出域和通配符域。例如,您可以设置 NO_PROXY=example.com,.example.com 以绕过发送到 http (s)://example.com 和 http (s)://subdomain.example.com 的请求的代理。
6.2. 在 Operator 部署中配置代理信息 复制链接链接已复制到粘贴板!
对于基于 Operator 的部署,用于代理配置的方法取决于您的角色:
- 作为有权访问 Operator 命名空间的集群管理员,您可以在 Operator 的默认 ConfigMap 文件中配置代理变量。此配置会将代理设置应用到 Operator 的所有用户。
- 作为开发人员,您可以在自定义资源(CR)文件中配置代理变量。此配置会将代理设置应用到从 CR 创建的 RHDH 应用程序。
先决条件
- 已安装 Red Hat Developer Hub 应用程序。
流程
根据您的角色执行以下步骤之一:
作为管理员,在 Operator 的默认 ConfigMap 文件中设置代理信息:
-
在 default 命名空间
rhdh-operator中搜索名为backstage-default-config的 ConfigMap 文件并打开它。 -
查找
deployment.yaml密钥。 在
Deploymentspec 中设置HTTP_PROXY、HTTPS_PROXY和NO_PROXY环境变量的值,如下例所示:示例:在 ConfigMap 文件中设置代理变量
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在 default 命名空间
作为开发人员,在
BackstageCR 文件中设置代理信息,如下例所示:示例:在 CR 文件中设置代理变量
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 保存配置更改。
6.3. 在 Helm 部署中配置代理信息 复制链接链接已复制到粘贴板!
对于基于 Helm 的部署,开发人员或具有在集群中创建资源的集群管理员都可以在 values.yaml Helm 配置文件中配置代理变量。
先决条件
- 已安装 Red Hat Developer Hub 应用程序。
流程
在 Helm 配置文件中设置代理信息:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中,
<http_proxy_url>- 表示必须替换为 HTTP 代理 URL 的变量。
<https_proxy_url>- 表示必须替换为 HTTPS 代理 URL 的变量。
<no_proxy_settings>表示必须使用逗号分隔的 URL 替换变量,该变量要从代理中排除,如
foo.com,baz.com。示例:使用 Helm Chart 设置代理变量
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 保存配置更改。
第 7 章 在 Kubernetes 中使用 TLS 连接配置 RHDH 实例 复制链接链接已复制到粘贴板!
您可以在 Kubernetes 集群中配置带有传输层安全(TLS)连接的 RHDH 实例,如 Azure Red Hat OpenShift (ARO)集群、支持的云供应商中的任何集群,或者具有正确配置自己的集群。传输层安全性(TLS)可确保与其他实体(如第三方应用程序或外部数据库)的 RHDH 实例的安全连接。但是,您必须使用公共证书颁发机构(CA)签名证书来配置 Kubernetes 集群。
先决条件
- 您已使用公共 CA 签名证书设置了 Azure Red Hat OpenShift (ARO)集群。有关获取 CA 证书的更多信息,请参阅您的厂商文档。
您已创建了命名空间并设置对资源具有正确读取权限的服务帐户。
示例:用于基于角色的访问控制的 Kubernetes 清单
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 您已获取与服务帐户关联的 secret 和服务 CA 证书。
您已创建了一些资源并为其添加注解,以便 Kubernetes 插件可以发现这些资源。您可以应用这些 Kubernetes 注解:
-
backstage.io/kubernetes-idto label components -
backstage.io/kubernetes-namespace以标记命名空间
-
流程
在
dynamic-plugins-rhdh.yaml文件中启用 Kubernetes 插件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意backstage-plugin-kubernetes插件 当前还只是一个技术预览。作为替代方案,您可以使用./dynamic-plugins/dist/backstage-plugin-topology-dynamic插件,该插件正式发布(GA)。设置 Kubernetes 集群详情并在
app-config.yaml配置文件中配置 目录同步选项。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes control plane 的基本 URL。您可以运行
kubectl cluster-info命令来获取基本 URL。 - 2
- 将此参数的值设置为
false,以启用 TLS 证书的验证。 - 3
- 可选:管理 ARO 集群的 Kubernetes 仪表板的链接。
- 4
- 可选:使用您在 <
my_product_secrets> secret 中定义的环境变量传递服务帐户令牌。K8S_SERVICE_ACCOUNT_TOKEN - 5
- 使用您在 <
my_product_secrets> secret 中定义的环境变量传递 CA 数据。K8S_CONFIG_CA_DATA
- 保存配置更改。
验证
运行 RHDH 应用程序来导入您的目录:
kubectl -n rhdh-operator get pods -w
kubectl -n rhdh-operator get pods -wCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证 pod 日志是否没有显示您的配置错误。
- 进入 Catalog 并检查 Developer Hub 实例中的组件页面,以验证集群连接以及您的创建的资源是否存在。
如果您遇到连接错误,如证书问题或权限,请在组件页面中选中消息框或查看 pod 的日志。
第 8 章 使用动态插件缓存 复制链接链接已复制到粘贴板!
8.1. 使用动态插件缓存 复制链接链接已复制到粘贴板!
Red Hat Developer Hub (RHDH)中的动态插件缓存通过存储之前安装的插件来增强安装过程并减少平台引导时间。如果配置保持不变,则这个功能会阻止在以后的引导中重新下载插件。
当您启用动态插件缓存时:
-
系统计算每个插件的 YAML 配置的校验和(不包括
pluginConfig)。 -
checksum 存储在插件目录中名为
dynamic-plugin-config.hash的文件中。 - 在启动过程中,如果插件的软件包引用与之前的安装匹配,并且校验和保持不变,则会跳过下载。
- 由于上一次引导而禁用的插件会被自动删除。
要在 RHDH 中启用动态插件缓存,plugins 目录 dynamic-plugins-root 必须是持久性卷。
8.2. 使用 Operator 为动态插件缓存创建 PVC 复制链接链接已复制到粘贴板!
对于基于 operator 的安装,您必须手动创建持久性卷声明(PVC),方法是将默认的 dynamic-plugins-root 卷替换为名为 dynamic-plugins-root 的 PVC。
先决条件
- 已使用 Red Hat Developer Hub Operator 在 OpenShift Container Platform 上安装 Red Hat Developer Hub。
-
已安装 OpenShift CLI(
oc)。
流程
创建持久性卷定义并将其保存到文件中,如
pvc.yaml。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意本例使用
ReadWriteOnce作为访问模式,这可防止多个副本在不同节点间共享 PVC。要在不同节点上运行多个副本,具体取决于您的存储驱动程序,您必须使用一个访问模式,如ReadWriteMany。要将此 PVC 应用到集群,请运行以下命令:
oc apply -f pvc.yaml
oc apply -f pvc.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将默认的
dynamic-plugins-root卷替换为名为dynamic-plugins-root的 PVC。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要避免添加新卷,您必须使用
$patch: replace指令。
8.3. 使用 Helm Chart 为动态插件缓存创建 PVC 复制链接链接已复制到粘贴板!
对于 Helm Chart 安装,如果您需要在 pod 重启后保留动态插件缓存,您必须创建一个持久性卷声明(PVC)并配置 Helm chart 来使用它。
先决条件
- 已使用 Helm Chart 安装 Red Hat Developer Hub。
-
已安装 OpenShift CLI(
oc)。
流程
创建持久性卷定义。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意本例使用
ReadWriteOnce作为访问模式,这可防止多个副本在不同节点间共享 PVC。要在不同节点上运行多个副本,具体取决于您的存储驱动程序,您必须使用一个访问模式,如ReadWriteMany。要将此 PVC 应用到集群,请运行以下命令:
oc apply -f pvc.yaml
oc apply -f pvc.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Helm Chart 配置为使用 PVC。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意当您将 Helm Chart 配置为使用 PVC 时,还必须包括默认 Helm Chart 中定义的
extraVolumes。
8.4. 配置动态插件缓存 复制链接链接已复制到粘贴板!
您可以在 dynamic-plugins.yaml 文件中设置以下可选动态插件缓存参数:
-
forceDownload:将值设置为true以强制重新安装插件,绕过缓存。默认值为false。 PullPolicy:与forceDownload参数类似,并与其他镜像容器平台一致。对于这个键,您可以使用以下值之一:-
Always: 这个值比较远程 registry 中的镜像摘要,并下载工件(如果之前下载了插件)。 IfNotPresent: 如果工件还没有存在于 dynamic-plugins-root 文件夹中,如果没有检查镜像摘要,则下载工件。注意pullPolicy设置也应用于 NPM 下载方法,但Always将下载远程工件,而无需摘要检查。现有的forceDownload选项仍可以正常工作,但pullPolicy选项具有优先权。在以后的 Developer Hub 发行版本中可能会弃用forceDownload选项。
-
在没有摘要检查的情况下下载远程工件的 dynamic-plugins.yaml 文件配置示例:
plugins:
- disabled: false
pullPolicy: Always
package: 'oci://quay.io/example-org/example-plugin:v1.0.0!internal-backstage-plugin-example'
plugins:
- disabled: false
pullPolicy: Always
package: 'oci://quay.io/example-org/example-plugin:v1.0.0!internal-backstage-plugin-example'
第 9 章 为 Secret 和 PVC 配置默认挂载 复制链接链接已复制到粘贴板!
您可以在 Red Hat Developer Hub 部署中配置持久性卷声明(PVC)和 Secret 挂载。使用注解定义自定义挂载路径,并指定要将其挂载到的容器。
9.1. 为 Secret 和 PVC 配置挂载路径 复制链接链接已复制到粘贴板!
默认情况下,挂载路径是 Developer Hub 容器的工作目录。如果没有定义挂载路径,则默认为 /opt/app-root/src。
流程
要指定 PVC 挂载路径,请在配置文件中添加
rhdh.redhat.com/mount-path注解,如下例所示:指定 PVC 挂载的位置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
rhdh.redhat.com/mount-path-
指定 PVC 挂载到哪个挂载路径(本例中为
/mount/path/from/annotation目录)。 - <my_claim>
- 指定要挂载的 PVC。
要指定 Secret 挂载路径,请在配置文件中添加
rhdh.redhat.com/mount-path注解,如下例所示:指定 Secret 挂载的位置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
- <my_secret>
- 指定 Secret 名称。
9.2. 将 Secret 和 PVC 挂载到特定容器 复制链接链接已复制到粘贴板!
默认情况下,Secret 和 PVC 仅挂载到 Red Hat Developer Hub backstage-backend 容器。您可以将 rhdh.redhat.com/containers 注解添加到配置文件中,以指定要挂载到的容器。
流程
要将 Secret 挂载到 所有容器,请在配置文件中将
rhdh.redhat.com/containers注解设置为*:挂载到所有容器的示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要将
rhdh.redhat.com/containers设置为*,将它挂载到部署中的所有容器。要挂载到特定容器,请使用逗号分隔名称:
分离容器列表的示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意此配置将 <
;my_claim> PVC 挂载到init-dynamic-plugins和backstage-backend容器。
第 10 章 启用 Red Hat Developer Hub 插件资产缓存 复制链接链接已复制到粘贴板!
默认情况下,Red Hat Developer Hub 不缓存插件资产。您可以使用 Redis 缓存存储来提高 Developer Hub 性能和可靠性。在 Developer Hub 中配置插件会接收专用缓存连接,这些连接由 Keyv Redis 客户端驱动。
先决条件
- 已安装 Red Hat Developer Hub。
-
您有一个活跃的 Redis 服务器。有关设置外部 Redis 服务器的更多信息,
请参阅官方 Redis 文档。
流程
通过将 Redis 定义为 cache 存储类型并在
app-config.yaml文件中输入 Redis 服务器连接 URL 来启用 Developer Hub 缓存。app-config.yaml文件片段backend: cache: store: redis connection: redis://user:pass@cache.example.com:6379backend: cache: store: redis connection: redis://user:pass@cache.example.com:6379Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过在
app-config.yaml文件中添加HEKETI.cache.ttl设置来启用 Techdocs缓存。此设置指定静态构建资产应保留在缓存中的时间(以毫秒为单位)。app-config.yaml文件片段techdocs: cache: ttl: 3600000techdocs: cache: ttl: 3600000Copy to Clipboard Copied! Toggle word wrap Toggle overflow
另外,还可为支持此功能的不支持插件启用缓存。详情请查看对应的文档。