LabHub
学习 学习路径 课程

CBA — Backstage 认证助理

亲眼看目录真的拒绝掉什么

在 LabHub 中继续学习

本实验使用 Backstage 的真实库运行

VM 中已安装 Backstage 的目录与配置库。 提交 catalog-info.yaml 后,它会被真实验证;错误内容会被拒绝;多个 app-config.yaml 也会被实际合并。

这里不会启动完整的 Backstage 实例——那会占用数百 MB,并需要数分钟 进行构建。我们改为直接运行 Backstage 将实体加入目录时使用的 同一套库。验证、合并和关系解析都是真实行为。

前一模块的目录实验只练习了如何编写 catalog-info.yaml, 却无法确认该 YAML 是否真的能通过验证。

首次启动约需 4 分钟(npm install 需要访问互联网)。

已准备的内容

프로젝트    /opt/cba (Backstage 라이브러리 설치됨)
검증 도구   validate-entity <yaml파일>
라이브러리  /opt/cba/lib.js (catalog-model·config·yaml)

步骤

  1. 创建一个实体并使其通过验证,将结果写入 /root/cba/entity.txt
  2. 让错误实体被真正拒绝,将结果写入 /root/cba/reject.txt
  3. 使用实体引用(parseEntityRef)解析关系,将结果写入 /root/cba/refs.txt
  4. 通过所有者和系统连接八类实体,将结果写入 /root/cba/graph.txt
  5. 合并多个 app-config.yaml,将最终胜出的值写入 /root/cba/config.txt
  6. 观察环境变量替换(${...})的工作方式,将结果写入 /root/cba/env.txt
  7. 扫描整个目录以诊断一致性,将结果写入 /root/cba/audit.txt
  8. /root/cba/report.md 中写入 valid=rejected=yesmerge_winner= 三行及说明。

提示

要加入目录的实体

创建一个实体并使其通过验证,将结果写入 /root/cba/entity.txt

需要 kindmetadata.namespec。Component 还要求 typelifecycleowner

仅有模式验证还不够

让错误实体被真正拒绝,将结果写入 /root/cba/reject.txt

尝试在名称中加入大写字母和空格,再加入未知的根字段。模式和策略会分别捕获不同问题。

引用建立关系

使用实体引用(parseEntityRef)解析关系,将结果写入 /root/cba/refs.txt

parseEntityRef 解析 user:default/jdoeteam-a,观察默认 kind 与 namespace 如何补全。

连接八类实体

通过所有者和系统连接八类实体,将结果写入 /root/cba/graph.txt

创建 Component、API、Resource、System、Domain、Group、User,并通过 owner、system、providesApis 将它们连接起来。

配置会深度合并

合并多个 app-config.yaml,将最终胜出的值写入 /root/cba/config.txt

叠加多个 app-config。后一个文件不会覆盖全部内容,而是按合并。

配置中的环境变量

观察环境变量替换(${...})的工作方式,将结果写入 /root/cba/env.txt

${VAR} 会在加载时替换为环境变量值,从而避免把机密写进文件。

目录会随时间腐化

扫描整个目录以诊断一致性,将结果写入 /root/cba/audit.txt

一次验证多个实体,并统计通过数、拒绝数和无所有者实体数。

总结所学内容

/root/cba/report.md 中写入 valid=rejected=yesmerge_winner= 三行及说明。

写入 valid=rejected=yesmerge_winner= 三行及说明。