1.2. 使用 Red Hat Developer Hub Operator 使用自定义配置运行 Developer Hub
要使用 Developer Hub Operator 使用自定义配置运行 Red Hat Developer Hub,请创建 Backstage 自定义资源(CR):
- 挂载自定义配置映射中置备的文件。
- 注入自定义 secret 中置备的环境变量。
先决条件
-
通过使用 OpenShift CLI (
oc),您可以访问开发人员权限,可以访问一个旨在包含 Developer Hub 实例的 OpenShift Container Platform 集群。 - 您的管理员已在集群中安装 Red Hat Developer Hub Operator。
-
您已在 <
my-rhdh-project> 项目中置备了自定义配置映射和 secret。 - 您有一个正常工作的默认存储类,如 EBS 存储附加组件,在 EKS 集群中配置。
流程
在
my-rhdh-custom-resource.yaml文件中编写您的 Backstage CR,以使用您的自定义配置映射和 secret。最小
my-rhdh-custom-resource.yaml自定义资源示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 带有动态插件和 RBAC 策略配置映射的
my-rhdh-custom-resource.yaml自定义资源示例,以及外部 PostgreSQL 数据库 secret:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 必填字段
- 不需要字段。您可以创建一个空的 Backstage CR,并使用默认配置运行 Developer Hub。
- 可选字段
spec.application.appConfig.configMaps- 输入您的配置映射名称列表。
在
my-rhdh-app-config配置映射中挂载文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
my-rhdh-app-config和rbac-policies配置映射中挂载文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec.application.extraEnvs.envs(可选)输入不是 secret 的额外环境变量,如 代理环境变量。
注入
HTTP_PROXY、HTTPS_PROXY和NO_PROXY环境变量:Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec.application.extraEnvs.secrets输入环境变量 secret 名称列表。
在 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 在 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. 将额外的文件和环境变量注入 Backstage 容器 复制链接链接已复制到粘贴板!
mountPath 字段指定 ConfigMap 或 Secret 挂载的位置。mount 的行为(无论是包含还是排除 subPath )取决于 key 或 mountPath 字段的规格。
-
如果没有指定
key和mountPath:每个键或值都挂载为带有subPath的文件名或内容。 -
如果使用或不使用
mountPath指定密钥:指定的key或 value 使用subPath挂载。 -
如果只指定
mountPath:包含所有键或值的目录,但没有subPath。 -
如果没有指定
containers字段:卷仅挂载到backstage-backend容器。默认情况下,文件仅挂载到backstage-backend容器。您还可以按名称(如dynamic-plugin-install或selectcustomsidecars)指定其他目标,包括容器列表。
-
OpenShift Container Platform 不会自动更新使用
subPath挂载的卷。默认情况下,RHDH Operator 会监控这些 ConfigMap 或 Secret,并在发生更改时刷新 RHDH Pod。 - 为了安全起见,Red Hat Developer Hub 不授予 Operator Service Account 对 Secret 的读取访问权限。因此,不支持在不指定 mountPath 和 key 的情况下挂载 Secret 的文件。
流程
将配置应用到您的
Backstage 自定义资源(CR)。以下代码块是一个示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
spec.application.extraFiles.mountPath-
如果没有为资源设置特定的
mountPath,则指定文件的默认基本挂载路径(例如 /<default_mount_path>)。 spec.application.extraFiles.configMaps.name-
将 <
configmap_name_all_entries>中的所有条目挂载到默认挂载路径。 spec.application.extraFiles.configMaps.key-
从 ConfigMap 挂载一个指定的键(例如,&
lt;specific_file_key>.txt)。 spec.application.extraFiles.configMaps.containers-
以所有容器(
"*")为目标进行挂载。 spec.application.extraFiles.configMaps.mountPath-
覆盖默认 ConfigMap 条目,并将所有 ConfigMap 条目作为目录挂载到指定路径(例如 /<
custom_cm_mount_path>)。 spec.application.extraFiles.secrets.key- 仅挂载来自 Secret 的特定密钥。
spec.application.extraFiles.secrets.mountPath-
覆盖默认 Secret 条目,并将所有 Secret 条目作为目录挂载到指定路径(例如 /<
custom_secret_mount_path>)。 spec.application.extraFiles.pvcs.name-
将 PVC 挂载到默认挂载路径,并附加 PVC 名称(例如 /<
default_mount_path>/<pvc_name_default_path>)。 spec.application.extraFiles.pvcs.mountPath-
覆盖默认 PVC,并将 PVC 挂载到指定路径(如 /<
custom_pvc_mount_path>)。 spec.application.extraEnvs.configMaps.containers-
将指定的 ConfigMap 键作为环境变量注入所有容器(
"*")。 spec.application.extraEnvs.secrets.name- 将 Secret 中的所有密钥作为环境变量注入到默认容器中。
spec.application.envs.containers- 仅以为静态环境变量注入而列出的容器为目标。
支持以下显式选项:
-
No 或一个空字段:只挂载到
backstage-backend容器。 -
*(星号)作为第一个且唯一的数组元素:挂载到所有容器。 -
显式容器名称,如
install-dynamic-plugins:只挂载到列出的容器。
验证
文件以以下正确的路径和容器目标挂载:
| 资源 | 目标类型 | 路径或名称 | Container (s) |
|---|---|---|---|
|
ConfigMap (& | File |
|
|
|
ConfigMap (& | File |
| All |
|
ConfigMap (& | 目录 |
|
|
|
Secret (& | File |
|
|
|
Secret (& | 目录 |
|
|
|
PVC ( | 目录 |
|
|
|
ConfigMap ( | env Var |
| All |
|
Secret (& | env Var |
|
|
|
CRD ( | env Var |
|
|