カタログが実際に拒否するものを見る
한국어 원문으로 표시합니다.
이 실습은 Backstage 의 진짜 라이브러리에서 돕니다
VM 안에 Backstage 의 카탈로그·설정 라이브러리가 설치돼 있습니다. catalog-info.yaml 을 넣으면 실제로 검증되고, 잘못된 것은 거절되고, 여러 app-config.yaml 이 실제로 병합됩니다.
Backstage 인스턴스를 통째로 띄우지 않습니다 — 그건 수백 MB 와 몇 분의 빌드가 걸립니다. 대신 카탈로그에 넣을 때 쓰는 바로 그 라이브러리를 직접 돌립니다. 검증도 병합도 관계 해석도 진짜입니다.
앞 모듈의 카탈로그 실습은 catalog-info.yaml 을 쓰는 연습까지였습니다. 그 YAML 이 실제로 통과하는지는 확인할 방법이 없었습니다.
처음 뜨는 데 4분쯤 걸립니다(npm install 이 인터넷을 탑니다).
준비된 것
프로젝트 /opt/cba (Backstage 라이브러리 설치됨)
검증 도구 validate-entity <yaml파일>
라이브러리 /opt/cba/lib.js (catalog-model·config·yaml)
단계
- 엔티티 하나를 만들고 검증을 통과시켜
/root/cba/entity.txt에 담으세요. - 잘못된 엔티티가 실제로 거절되는 것을
/root/cba/reject.txt에 담으세요. - 엔티티 참조(
parseEntityRef)로 관계가 어떻게 풀리는지/root/cba/refs.txt에 담으세요. - 소유자·시스템으로 여덟 종류 엔티티를 이어
/root/cba/graph.txt에 담으세요. - 여러
app-config.yaml을 병합해 무엇이 이기는지/root/cba/config.txt에 담으세요. - 환경 변수 치환(
${...})이 어떻게 도는지/root/cba/env.txt에 담으세요. - 카탈로그 전체를 훑어 정합성을 진단해
/root/cba/audit.txt에 담으세요. /root/cba/report.md에valid=,rejected=yes,merge_winner=세 줄과 설명을 쓰세요.
참고
validate-entity good.yaml로 검증합니다. 통과면OK:, 실패면REJECTED:가 나옵니다.- 스크립트는
node script.js로 돌리고, 라이브러리는require('/opt/cba/lib.js')로 씁니다. - 흔한 오해: 스키마가 통과하면 유효하다는 것. 정책(이름 형식·루트 필드)이 더 걸러 냅니다.
- 흔한 오해: 설정은 마지막 파일이 전부를 덮어쓴다는 것. 키 단위로 깊게 병합됩니다.
카탈로그에 넣을 엔티티
엔티티 하나를 만들고 검증을 통과시켜 /root/cba/entity.txt 에 담으세요.
kind·metadata.name·spec 이 필요합니다. Component 는 type·lifecycle·owner 를 요구합니다.
스키마만으로는 부족하다
잘못된 엔티티가 실제로 거절되는 것을 /root/cba/reject.txt 에 담으세요.
이름에 대문자·공백을 넣어 보고, 모르는 루트 필드를 넣어 보세요. 스키마와 정책이 각각 다른 것을 잡습니다.
참조가 관계를 만든다
엔티티 참조(parseEntityRef)로 관계가 어떻게 풀리는지 /root/cba/refs.txt 에 담으세요.
parseEntityRef 로 user:default/jdoe 와 team-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=yes, merge_winner= 세 줄과 설명을 쓰세요.
valid=, rejected=yes, merge_winner= 세 줄과 설명을 쓰세요.