リソースモデル

routerd の設定は、最上位の Router と、その下に並ぶ複数のリソースで構成します。
各リソースは Kubernetes に近い形をとります。
apiVersion: net.routerd.net/v1alpha1
kind: DHCPv6PrefixDelegation
metadata:
name: wan-pd
spec:
interface: wan
共通フィールド
apiVersion: リソースが属する API グループと版です。kind: リソースの種類です。metadata.name: 同じkindの中で一意な名前です。spec: 利用者が宣言する意図です。status: routerd や専用デーモンが観測した状態です。
設定ファイルに書くのは主に spec です。
status は制御 API、状態データベース、デーモンの /v1/status、routerctl、Web 管理画面で確認します。
API グループ
routerd は次の API グループを使います。
| グループ | 用途 |
|---|---|
routerd.net/v1alpha1 | 最上位の Router |
net.routerd.net/v1alpha1 | インターフェース、DHCP、DNS、経路、トンネル、WAN 選択、通信フローログ |
firewall.routerd.net/v1alpha1 | ファイアウォールゾーン、ポリシー、規則、ログ |
system.routerd.net/v1alpha1 | ホスト名、パッケージ、sysctl、ネットワーク引き継ぎ、systemd ユニット、NTP、ログ転送、Web 管理画面 |
plugin.routerd.net/v1alpha1 | 信頼済みローカルプラグイン |
routerd.io のような仮のグループは使いません。
依存関係
リソースは他のリソースを名前で参照します。
たとえば IPv6DelegatedAddress は DHCPv6PrefixDelegation を参照し、DSLiteTunnel は DHCPv6Information や DNSResolver の結果を参照します。
参照先がまだ準備できていないと、リソースは Pending のままです。
参照先が整うと Applied、Bound、Up、Installed、Healthy などの段階へ進みます。
dependsOn
一部のリソースは dependsOn で適用の条件を指定できます。
dependsOn には、参照するリソースとその状態フィールドを明示します。
dependsOn:
- resource: DHCPv6PrefixDelegation/wan-pd
phase: Bound
- resource: Interface/lan
phase: Up
他リソースの状態値を使うときは、通常のフィールドに式を書きません。
deviceFrom、gatewayFrom、addressFrom、ipv4From、ipv6From、
prefixFrom、rdnssFrom、addressFrom といった専用フィールドを使います。
deviceFrom:
resource: DSLiteTunnel/ds-lite
field: interface
この形にすることで、検証、計画、イベント購読、コントローラーの調整(リコンサイル)から依存関係が見えるようになります。
所有参照
ownerRefs は、あるリソースが別のリソースに従属することを表します。
親が準備できないとき、子は古くなった構成を出し続けません。
これは、DHCPv6-PD が失われたときに古い LAN IPv6 設定を残さないための重要な仕組みです。
委任されたプレフィックスに依存する LAN IPv6 アドレス、RA、DNS レコード、DS-Lite は、
親が準備できない間は古い状態を出さないようにします。
次に読むもの
- 適用と生成 — validate、plan、dry-run、serve がリソースグラフをどう使うか
- 状態と所有 — routerd がホスト上の所有物をどう追跡するか
- リソース API リファレンス — 全リソース Kind のフィールドリファレンス