In systemd mode, OpenPERouter is configured via static files on the host instead of Kubernetes Custom Resources. See the Systemd Mode installation guide for deployment instructions.
Node Configuration #
Each node requires a mandatory configuration file at /var/lib/openperouter/node-config.yaml. This file must contain the nodeIndex, a unique integer used for IPAM address allocation from the configured CIDRs:
nodeIndex: 0
logLevel: debug
Each `openpe_*.yaml` file contains the `spec` part of the corresponding Kubernetes Custom Resources. A file can contain any combination of `underlay`, `l3vnis`, `l2vnis`, `bgppassthrough`, and `rawfrrconfigs` fields, where each entry follows the same schema as the `spec` section of the equivalent CR (Underlay, L3VNI, L2VNI, L3Passthrough, RawFRRConfig):
```yaml
underlays:
- asn: 64514
evpn:
vtepCIDR: 100.65.0.0/24
nics:
- eth0
neighbors:
- asn: 64512
address: 192.168.111.1
l3vnis:
- vrf: red
vni: 100
hostSession:
asn: 64514
hostASN: 64515
localCIDR:
ipv4: "192.169.10.0/24"
ipv6: "2001:db8:1::/64"
l2vnis:
- vrf: storage
vni: 300
vxlanport: 4789
hostmaster:
type: linux-bridge
linuxBridge:
name: br-storage
Splitting Configuration Across Files #
Multiple files can coexist in the configs directory. This is useful when nodes share a common base configuration but require different underlays. For example, a shared VNI definition can live in one file while per-node underlay settings go in another:
# openpe_vni.yaml - common across nodes
l3vnis:
- vrf: red
vni: 100
# openpe_underlay.yaml - node-specific
underlays:
- asn: 64514
evpn:
vtepCIDR: 100.65.0.0/24
nics:
- eth0
neighbors:
- asn: 64512
address: 192.168.111.1
Dynamic Reload #
Configuration files are watched for changes and dynamically reloaded at runtime. Updating a file triggers a reconciliation cycle without restarting the service.
Merging with API Server Configuration #
When a kubeconfig is available (exported by the hostbridge pod), configuration from the Kubernetes API server is merged with the file-based configuration. This allows managing part of the configuration via Kubernetes CRs while keeping the base overlay setup in static files that are applied at boot time.