カタログが実際に拒否するものを見る
このラボは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)
ステップ
- エンティティを1つ作成して検証を通過させてください(保存先:
/root/cba/entity.txt)。 - 間違ったエンティティが実際に拒否される様子を記録してください(保存先:
/root/cba/reject.txt)。 - エンティティ参照(
parseEntityRef)で、関係がどのように解決されるかを記録してください(保存先:/root/cba/refs.txt)。 - オーナー・システムで8種類のエンティティをつないで、記録してください(保存先:
/root/cba/graph.txt)。 - 複数の
app-config.yamlをマージして、何が勝つかを記録してください(保存先:/root/cba/config.txt)。 - 環境変数の置換(
${...})がどのように動くかを記録してください(保存先:/root/cba/env.txt)。 - カタログ全体を走査して整合性を診断し、記録してください(保存先:
/root/cba/audit.txt)。 valid=、rejected=yes、merge_winner=の3行と説明を書いてください(保存先:/root/cba/report.md)。
参考
validate-entity good.yamlで検証します。通過ならOK:、失敗ならREJECTED:が出ます。- スクリプトは
node script.jsで動かし、ライブラリはrequire('/opt/cba/lib.js')で使います。 - よくある誤解: スキーマが通過すれば有効だということ。ポリシー(名前の形式・ルートフィールド)が、さらにふるい分けます。
- よくある誤解: 設定は、最後のファイルがすべてを上書きするということ。キー単位で深くマージされます。
カタログに入れるエンティティ
エンティティを1つ作成して検証を通過させてください(保存先: /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がどう補われるかを、見てください。
8種類をつなぐ
オーナー・システムで8種類のエンティティをつないで、記録してください(保存先: /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)。
複数のエンティティをまとめて検証し、通過・拒否・オーナーなしを数えてみてください。
何を学んだか
valid=、rejected=yes、merge_winner=の3行と説明を書いてください(保存先: /root/cba/report.md)。
valid=、rejected=yes、merge_winner=の3行と説明を書いてください。