メインコンテンツまでスキップ

リソースモデル

Router YAML から reference、dependency ordering、owner key、status、event、ledger artifact へつながる routerd resource model

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/statusrouterctl、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 のような仮のグループは使いません。

依存関係

リソースは他のリソースを名前で参照します。 たとえば IPv6DelegatedAddressDHCPv6PrefixDelegation を参照し、DSLiteTunnelDHCPv6InformationDNSResolver の結果を参照します。

参照先がまだ準備できていないと、リソースは Pending のままです。 参照先が整うと AppliedBoundUpInstalledHealthy などの段階へ進みます。

dependsOn

一部のリソースは dependsOn で適用の条件を指定できます。 dependsOn には、参照するリソースとその状態フィールドを明示します。

dependsOn:
- resource: DHCPv6PrefixDelegation/wan-pd
phase: Bound
- resource: Interface/lan
phase: Up

他リソースの状態値を使うときは、通常のフィールドに式を書きません。 deviceFromgatewayFromaddressFromipv4Fromipv6FromprefixFromrdnssFromaddressFrom といった専用フィールドを使います。

deviceFrom:
resource: DSLiteTunnel/ds-lite
field: interface

この形にすることで、検証、計画、イベント購読、コントローラーの調整(リコンサイル)から依存関係が見えるようになります。

所有参照

ownerRefs は、あるリソースが別のリソースに従属することを表します。 親が準備できないとき、子は古くなった構成を出し続けません。 これは、DHCPv6-PD が失われたときに古い LAN IPv6 設定を残さないための重要な仕組みです。 委任されたプレフィックスに依存する LAN IPv6 アドレス、RA、DNS レコード、DS-Lite は、 親が準備できない間は古い状態を出さないようにします。

次に読むもの