5.5 KiB
5.5 KiB
Component Clarity / Dependency Findings
1. 設定契約ミスマッチ(IAM endpoint 系)
以下は「Nix module で値を注入しても、バイナリ側でそのキーを読まない」ケースです。
結果として IAM 接続先が意図値にならず、127.0.0.1:50051 既定に落ちる箇所が複数あります。
1-1. PrismNet
- module 側:
IAM_ENDPOINTを設定nix/modules/prismnet.nix:105
- binary 側:
config.auth.iam_server_addrを使用prismnet/crates/prismnet-server/src/config.rs:83-89prismnet/crates/prismnet-server/src/main.rs:215-222IAM_ENDPOINT読み取りは存在しない
1-2. PlasmaVMC
- module 側:
IAM_ENDPOINTを設定nix/modules/plasmavmc.nix:97
- binary 側:
config.auth.iam_server_addrを使用plasmavmc/crates/plasmavmc-server/src/config.rs:54-61plasmavmc/crates/plasmavmc-server/src/main.rs:137-141IAM_ENDPOINT読み取りは存在しない
1-3. FiberLB
- module 側:
FIBERLB_IAM_ADDRを設定nix/modules/fiberlb.nix:123
- binary 側:
- IAM 接続先は
config.auth.iam_server_addr fiberlb/crates/fiberlb-server/src/config.rs:78-85fiberlb/crates/fiberlb-server/src/main.rs:180-184- CLI/env 引数に
FIBERLB_IAM_ADDRはない(Args定義に未存在)
- IAM 接続先は
1-4. LightningStor
- module 側:
LIGHTNINGSTOR_IAM_ADDRを設定nix/modules/lightningstor.nix:128
- binary 側:
- IAM 接続先は
config.auth.iam_server_addr lightningstor/crates/lightningstor-server/src/config.rs:84-91lightningstor/crates/lightningstor-server/src/main.rs:196-200- CLI/env 引数に
LIGHTNINGSTOR_IAM_ADDRはない
- IAM 接続先は
1-5. FlashDNS
- module 側:
- IAM の option 自体がない(
iamAddrなし) nix/modules/flashdns.nix:7-79
- IAM の option 自体がない(
- binary 側:
auth.iam_server_addr既定127.0.0.1:50051flashdns/crates/flashdns-server/src/config.rs:67-74flashdns/crates/flashdns-server/src/main.rs:196-200- config-rs は
FLASHDNSprefix +__separator flashdns/crates/flashdns-server/src/main.rs:84-86
1-6. CreditService
- module 側:
CREDITSERVICE_IAM_ADDRを設定しないnix/modules/creditservice.nix:80-96
- binary 側:
CREDITSERVICE_IAM_ADDR既定127.0.0.1:50051creditservice/crates/creditservice-server/src/main.rs:61creditservice/crates/creditservice-server/src/main.rs:119-123
補足:
- test-cluster の IAM は
50080を採用している。nix/test-cluster/node01.nix:48-52
- このため上記ミスマッチは、実運用前に通信失敗へ直結しやすい。
2. 設定契約ミスマッチ(非 IAM)
2-1. FiberLB の PrismNet 参照
- module 側:
FIBERLB_PRISMNET_ADDRを設定nix/modules/fiberlb.nix:127
- binary 側:
FIBERLB_PRISMNET_ADDR消費実装なしrgでfiberlb/crates/fiberlb-server/srcに該当なし
2-2. FlashDNS の PrismNet 参照
- module 側:
PRISMNET_ENDPOINTを設定nix/modules/flashdns.nix:111
- binary 側:
PRISMNET_ENDPOINT消費実装なしrgでflashdns/crates/flashdns-server/srcに該当なし
2-3. FlareDB の IAM 参照
- module 側:
FLAREDB_IAM_ENDPOINTを設定nix/modules/flaredb.nix:108
- binary 側:
flaredb-serverに IAM 設定処理なし(該当キー/型なし)flaredb/crates/flaredb-server/src/config/mod.rs:79-103
3. 依存関係宣言と実装の乖離
3-1. NightLight の gRPC ポート宣言と実行実態
- module 側:
grpcPortoption を持ち env 注入しているnix/modules/nightlight.nix:16-20nix/modules/nightlight.nix:90
- 実装側:
- 現状
main.rsは HTTP サーバのみ起動 (axum::serve) nightlight/crates/nightlight-server/src/main.rs:87nightlight/crates/nightlight-server/src/main.rs:102
- 現状
影響:
- module 利用者は gRPC も提供されると誤認しやすい。
4. first-boot automation の構造明確性
- module が helper script path を定義するが、実際に未使用:
nix/modules/first-boot-automation.nix:7-10
services.first-boot-automation.enableを有効化する明示設定が見当たらない:rg -n "first-boot-automation\\.enable"-> no explicit match
- それでも default imports には含まれている:
nix/modules/default.nix:15
影響:
- 「有効運用中の機構なのか、未接続機構なのか」が判別しにくい。
5. テストクラスタでのコンポーネント組み合わせ破綻
node06(gateway) はcreditserviceを有効化するが、flaredbmodule を import しない。nix/test-cluster/node06.nix:8-13nix/test-cluster/node06.nix:70-74
creditservicemodule はconfig.services.flaredbを前提に評価する。nix/modules/creditservice.nix:5
実証:
nix eval ./nix/test-cluster#nixosConfigurations.node06...error: attribute 'flaredb' missing
6. 役割と境界の明確化が必要な領域
- Deployer:
- 実装(
deployer/*)は存在するが、Nix 配線が薄く運用境界が不明瞭。
- 実装(
- Cluster config generator:
plasmacloud-clusterとnix-nosの責務境界が重複。
- first-boot:
- 生成される
cluster-config契約と join 実装の API 契約が一致していない。
- 生成される
推奨:
- サービスごとに「module contract(注入キー)/binary contract(消費キー)」を1つの表に集約し、
CIで diff 検証(未使用キー、未注入キー)を自動検知する。