API Reference #
Packages #
openpe.openperouter.github.io/v1alpha1 #
Package v1alpha1 contains API Schema definitions for the openpe v1alpha1 API group.
Resource Types #
BFDSettings #
BFDSettings defines the BFD configuration for a BGP session.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
receiveInterval integer | receiveInterval is the minimum interval that this system is capable ofreceiving control packets in milliseconds.Defaults to 300ms. | Maximum: 60000 Minimum: 10 Optional: {} | |
transmitInterval integer | transmitInterval is the minimum transmission interval (less jitter)that this system wants to use to send BFD control packets inmilliseconds. Defaults to 300ms | Maximum: 60000 Minimum: 10 Optional: {} | |
detectMultiplier integer | detectMultiplier configures the detection multiplier to determinepacket loss. The remote transmission interval will be multipliedby this value to determine the connection loss detection timer. | Maximum: 255 Minimum: 2 Optional: {} | |
echoInterval integer | echoInterval configures the minimal echo receive transmissioninterval that this system is capable of handling in milliseconds.Defaults to 50ms | Maximum: 60000 Minimum: 10 Optional: {} | |
echoMode boolean | echoMode enables or disables the echo transmission mode.This mode is disabled by default, and not supported on multihops setups. | Optional: {} | |
passiveMode boolean | passiveMode marks session as passive: a passive session will notattempt to start the connection and will wait for control packetsfrom peer before it begins replying. | Optional: {} | |
minimumTTL integer | minimumTTL configures, for multi hop sessions only, the minimumexpected TTL for an incoming BFD control packet. | Maximum: 254 Minimum: 1 Optional: {} |
FailedResource #
FailedResource describe failing router API resource
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
kind FailedResourceKind | kind resource type name (e.g.: L3VNI, L2VNI). | Enum: [Underlay L2VNI L3VNI FrrConfiguration L3Passthrough] Required: {} | |
name string | name failed API resource metadata.name. | MaxLength: 253 MinLength: 1 Required: {} | |
reason FailedResourceReason | reason failure reason. | Enum: [ValidationFailed DependencyFailed OverlayAttachmentFailed FrrConfigurationFailed] MaxLength: 100 MinLength: 1 Required: {} | |
message string | message human-readable failure description. | MaxLength: 500 MinLength: 1 Required: {} |
FailedResourceKind #
Underlying type: string
Validation:
- Enum: [Underlay L2VNI L3VNI FrrConfiguration L3Passthrough]
Appears in:
FailedResourceReason #
Underlying type: string
FailedResourceReason machine-readable reason for a failure.
Validation:
- Enum: [ValidationFailed DependencyFailed OverlayAttachmentFailed FrrConfigurationFailed]
- MaxLength: 100
- MinLength: 1
Appears in:
| Field | Description |
|---|---|
ValidationFailed | FailedResourceReasonValidationFailed indicates failed pre-emptive semantic validation(e.g., interface not found, VNI conflict). |
DependencyFailed | FailedResourceReasonDependencyFailed dependent-on resource is not ready(e.g., L2VNI specify an interface managed by failing Underlay resource). |
OverlayAttachmentFailed | FailedResourceReasonOverlayAttachmentFailed provisioning failure at the logical network layer of the router(e.g.: failed to create VRF, move interface to router namespace). |
FrrConfigurationFailed | FailedResourceReasonFrrConfigurationFailed applying FRR configuration failed. |
GracefulRestartConfig #
GracefulRestartConfig holds BGP Graceful Restart parameters. Its presence on the Underlay enables graceful restart.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
restartTimeSeconds integer | restartTimeSeconds is the time in seconds that the restarting routerrequests its peers to preserve routes. Peers will wait this longbefore removing stale routes. | 120 | Maximum: 4095 Minimum: 1 Optional: {} |
stalePathTimeSeconds integer | stalePathTimeSeconds is the time in seconds that stale paths from arestarting peer are retained locally. | 360 | Maximum: 4095 Minimum: 1 Optional: {} |
HostMaster #
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
type string | type of the host interface. Supported values: “linux-bridge”, “ovs-bridge”. | Enum: [linux-bridge ovs-bridge] Required: {} | |
linuxBridge LinuxBridgeConfig | linuxBridge configuration. Must be set when Type is “linux-bridge”. | Optional: {} | |
ovsBridge OVSBridgeConfig | ovsBridge configuration. Must be set when Type is “ovs-bridge”. | Optional: {} |
HostSession #
Host Session represents the leg between the router and the host. A BGP session is established over this leg.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
asn integer | asn is the local AS number to use to establish a BGP session withthe default namespace. | Maximum: 4.294967295e+09 Minimum: 1 Required: {} | |
hostasn integer | hostasn is the expected AS number for a BGP speaking component running inthe default network namespace. Either HostASN or HostType must be set. | Maximum: 4.294967295e+09 Minimum: 1 Optional: {} | |
hosttype string | hosttype is the AS type of the BGP speaking component running in thedefault network namespace. Either HostASN or HostType must be set. | Enum: [external internal] Optional: {} | |
localcidr LocalCIDRConfig | localcidr is the CIDR configuration for the veth pairto connect with the default namespace. The interface underthe PERouter side is going to use the first IP of the cidr on all the nodes.At least one of IPv4 or IPv6 must be provided. | Required: {} |
IPFamily #
Underlying type: string
IPFamily specifies which address families are enabled.
Validation:
- Enum: [ipv4 ipv6 dualstack]
Appears in:
| Field | Description |
|---|---|
ipv4 | |
ipv6 | |
dualstack |
ISISConfig #
ISISConfig contains ISIS configuration for the underlay.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
baseNet ISISNet | baseNet holds the ISIS NET address.The configured Net address is a base address which is offset by the node index of each node.Only accepts the simplified NSAP format with a fixed AreaID length of 3 bytes and a 6 byte SystemID in compliancewith the U.S. GOSIP version 2.0 for a total of 10 bytes. | MaxLength: 25 MinLength: 25 Required: {} | |
features ISISFeature array | features enables ISIS boolean features.Supported features are:advertisePassiveOnly: configures ISIS to advertise only prefixes that belong to passive interfaces. | Enum: [advertisePassiveOnly] MaxItems: 32 MaxLength: 128 MinLength: 1 Optional: {} | |
interfaces ISISInterface array | interfaces holds additional ISIS interface level configuration and / or perinterface overrides. By default, OpenPERouter enables IPv6 on all requiredinterfaces with default settings. | MaxItems: 128 Optional: {} | |
level integer | level configures the ISIS type, system wide. It defaults to level-1-2 unless specified otherwise. | Enum: [1 2] Optional: {} |
ISISFeature #
Underlying type: string
ISISFeature represents a single ISIS feature.
Validation:
- Enum: [advertisePassiveOnly]
- MaxLength: 128
- MinLength: 1
Appears in:
ISISInterface #
ISISInterface holds ISIS interface level configuration.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
name string | name of the interface that these settings shall apply to. | MaxLength: 15 MinLength: 1 Required: {} | |
ipFamily IPFamily | ipFamily configures which address families ISIS is enabled for on this interface. | Enum: [ipv4 ipv6 dualstack] Optional: {} | |
features ISISInterfaceFeature array | features enables ISIS interface boolean features.Supported features are:passive: configures ISIS passive mode on this interface. | Enum: [passive] MaxItems: 32 MaxLength: 128 MinLength: 1 Optional: {} |
ISISInterfaceFeature #
Underlying type: string
ISISInterfaceFeature represents a single ISIS feature of an ISIS interface.
Validation:
- Enum: [passive]
- MaxLength: 128
- MinLength: 1
Appears in:
ISISNet #
Underlying type: string
ISISNet represents a single ISIS NET address. Only accepts the simplified NSAP format with a fixed AreaID length of 3 bytes and a 6 byte SystemID in compliance with the U.S. GOSIP version 2.0 for a total of 10 bytes.
Validation:
- MaxLength: 25
- MinLength: 25
Appears in:
L2VNI #
L2VNI represents a VXLan VNI to receive EVPN type 2 routes from.
| Field | Description | Default | Validation |
|---|---|---|---|
apiVersion string | openpe.openperouter.github.io/v1alpha1 | ||
kind string | L2VNI | ||
metadata ObjectMeta | Refer to Kubernetes API documentation for fields of metadata. | Optional: {} | |
spec L2VNISpec | spec defines the desired state of L2VNI. | Required: {} | |
status L2VNIStatus | status defines the observed state of L2VNI. | Optional: {} |
L2VNISpec #
L2VNISpec defines the desired state of VNI.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
nodeSelector LabelSelector | nodeSelector specifies which nodes this L2VNI applies to.If empty or not specified, applies to all nodes.Multiple L2VNIs can match the same node. | Optional: {} | |
vrf string | vrf is the name of the linux VRF to be used inside the PERouter namespace.The field is optional, if not set it the name of the VNI instance will be used. | MaxLength: 15 Pattern: ^[a-zA-Z][a-zA-Z0-9_-]*$ Optional: {} | |
vni integer | vni is the VXLan VNI to be used | Maximum: 1.6777215e+07 Minimum: 1 Required: {} | |
vxlanport integer | vxlanport is the port to be used for VXLan encapsulation. | 4789 | Optional: {} |
underlayAddressFamily string | underlayAddressFamily selects which VTEP address family to use for this VNI’sVXLAN interface. When omitted, defaults to the available family in the underlay(IPv4 preferred in dual-stack). | Enum: [ipv4 ipv6] Optional: {} | |
hostmaster HostMaster | hostmaster is the interface on the host the veth should be enslaved to.If not set, the host veth will not be enslaved to any interface and it must beenslaved manually (or by some other means). This is useful if another controlleris leveraging the host interface for the VNI. | Optional: {} | |
l2gatewayips string array | l2gatewayips is a list of IP addresses in CIDR notation to be used for the L2 gateway. When this is set, thebridge the veths are enslaved to will be configured with these IP addresses, effectivelyacting as a distributed gateway for the VNI. This allows for dual-stack (IPv4 and IPv6) support.Maximum of 2 addresses are allowed. If 2 addresses are provided, one must be IPv4 and one must be IPv6. | MaxItems: 2 Optional: {} |
L2VNIStatus #
VNIStatus defines the observed state of VNI.
Appears in:
L3Passthrough #
L3Passthrough represents a session with the host which is not encapsulated and takes part to the bgp fabric.
| Field | Description | Default | Validation |
|---|---|---|---|
apiVersion string | openpe.openperouter.github.io/v1alpha1 | ||
kind string | L3Passthrough | ||
metadata ObjectMeta | Refer to Kubernetes API documentation for fields of metadata. | Optional: {} | |
spec L3PassthroughSpec | spec defines the desired state of L3Passthrough. | Required: {} | |
status L3PassthroughStatus | status defines the observed state of L3Passthrough. | Optional: {} |
L3PassthroughSpec #
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
nodeSelector LabelSelector | nodeSelector specifies which nodes this L3Passthrough applies to.If empty or not specified, applies to all nodes.Multiple L3Passthrough with overlapping node selectors will be rejected. | Optional: {} | |
hostsession HostSession | hostsession is the configuration for the host session. | Required: {} |
L3PassthroughStatus #
L3PassthroughStatus defines the observed state of L3Passthrough.
Appears in:
L3VNI #
L3VNI represents a VXLan L3VNI to receive EVPN type 5 routes from.
| Field | Description | Default | Validation |
|---|---|---|---|
apiVersion string | openpe.openperouter.github.io/v1alpha1 | ||
kind string | L3VNI | ||
metadata ObjectMeta | Refer to Kubernetes API documentation for fields of metadata. | Optional: {} | |
spec L3VNISpec | spec defines the desired state of L3VNI. | Required: {} | |
status L3VNIStatus | status defines the observed state of L3VNI. | Optional: {} |
L3VNISpec #
L3VNISpec defines the desired state of VNI.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
nodeSelector LabelSelector | nodeSelector specifies which nodes this L3VNI applies to.If empty or not specified, applies to all nodes.Multiple L3VNIs can match the same node. | Optional: {} | |
vrf string | vrf is the name of the linux VRF to be used inside the PERouter namespace. | MaxLength: 15 MinLength: 1 Pattern: ^[a-zA-Z][a-zA-Z0-9_-]*$ Required: {} | |
vni integer | vni is the VXLan VNI to be used | Maximum: 1.6777215e+07 Minimum: 1 Required: {} | |
vxlanport integer | vxlanport is the port to be used for VXLan encapsulation. | 4789 | Optional: {} |
underlayAddressFamily string | underlayAddressFamily selects which VTEP address family to use for this VNI’sVXLAN interface. When omitted, defaults to the available family in the underlay(IPv4 preferred in dual-stack). | Enum: [ipv4 ipv6] Optional: {} | |
hostsession HostSession | hostsession is the configuration for the host session. | Optional: {} | |
exportRTs RouteTarget array | exportRTs are the Route Targets to be used for exporting routes.RouteTarget defines a BGP Extended Community for route filtering. | MaxItems: 100 MaxLength: 21 Optional: {} | |
importRTs RouteTarget array | importRTs are the Route Targets to be used for importing routes.RouteTarget defines a BGP Extended Community for route filtering. | MaxItems: 100 MaxLength: 21 Optional: {} |
L3VNIStatus #
L3VNIStatus defines the observed state of L3VNI.
Appears in:
L3VPN #
L3VPN represents an SRv6 IP VPN.
| Field | Description | Default | Validation |
|---|---|---|---|
apiVersion string | openpe.openperouter.github.io/v1alpha1 | ||
kind string | L3VPN | ||
metadata ObjectMeta | Refer to Kubernetes API documentation for fields of metadata. | Optional: {} | |
spec L3VPNSpec | spec defines the desired state of L3VPN. | Required: {} | |
status L3VPNStatus | status defines the observed state of L3VPN. | Optional: {} |
L3VPNSpec #
L3VPNSpec defines the desired state of L3VPN.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
nodeSelector LabelSelector | nodeSelector specifies which nodes this L3VPN applies to.If empty or not specified, applies to all nodes.Multiple L3VPNs can match the same node. | Optional: {} | |
vrf string | vrf is the name of the linux VRF to be used inside the PERouter namespace. | MaxLength: 15 MinLength: 1 Pattern: ^[a-zA-Z][a-zA-Z0-9_-]*$ Required: {} | |
exportRTs RouteTarget array | exportRTs are the Route Targets to be used for exporting routes.If no exportRTs are provided, defaults to single export Route Target:. | MaxItems: 100 MaxLength: 21 Optional: {} | |
importRTs RouteTarget array | importRTs are the Route Targets to be used for importing routes.importRTs must always be provided explicitly. | MaxItems: 100 MaxLength: 21 Required: {} | |
rdAssignedNumber integer | rdAssignedNumber sets the Route Distinguisher’s Assigned Number subfield.The Administrator subfield is automatically set to the value of the routerID. OpenPERouter uses Type 1 Route Distinguishers as defined in RFC4364,meaning :. | Maximum: 65535 Minimum: 1 Required: {} | |
hostsession HostSession | hostsession is the configuration for the host session. | Optional: {} |
L3VPNStatus #
L3VPNStatus defines the observed state of L3VPN.
Appears in:
LinuxBridgeConfig #
LinuxBridgeConfig contains configuration for Linux bridge type.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
name string | name of the Linux bridge interface. | MaxLength: 15 Pattern: ^[a-zA-Z][a-zA-Z0-9_-]*$ Optional: {} | |
autoCreate boolean | autoCreate determines if the bridge should be created automatically.When true, the bridge is created with name br-hs-. | false | Optional: {} |
LocalCIDRConfig #
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
ipv4 string | ipv4 is the IPv4 CIDR to be used for the veth pairto connect with the default namespace. The interface underthe PERouter side is going to use the first IP of the cidr on all the nodes. | Optional: {} | |
ipv6 string | ipv6 is the IPv6 CIDR to be used for the veth pairto connect with the default namespace. The interface underthe PERouter side is going to use the first IP of the cidr on all the nodes. | Optional: {} |
Neighbor #
Neighbor represents a BGP Neighbor we want FRR to connect to.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
asn integer | asn is the AS number of the neighbor. Either ASN or Type must be set. | Maximum: 4.294967295e+09 Minimum: 1 Optional: {} | |
type string | type is the AS type of the neighbor. Either ASN or Type must be set. | Enum: [external internal] Optional: {} | |
address string | address is the IP address to establish the session with. The IP addresscan be either IPv4 or IPv6. | MaxLength: 39 MinLength: 1 Optional: {} | |
interface string | interface is the interface name for BGP unnumbered sessions. The session will be established via IPv6 link locals. | MaxLength: 15 MinLength: 1 Optional: {} | |
port integer | port is the port to dial when establishing the session.Defaults to 179. | Maximum: 16384 Minimum: 0 Optional: {} | |
password string | password to be used for establishing the BGP session.Password and PasswordSecret are mutually exclusive. | Optional: {} | |
passwordSecret string | passwordSecret is name of the authentication secret for the neighbor.the secret must be of type “kubernetes.io/basic-auth”, and created in thesame namespace as the perouter daemon. The password is stored in thesecret as the key “password”.Password and PasswordSecret are mutually exclusive. | Optional: {} | |
holdTimeSeconds integer | holdTimeSeconds is the requested BGP hold time in seconds, per RFC4271.Defaults to 180. | Optional: {} | |
keepaliveTimeSeconds integer | keepaliveTimeSeconds is the requested BGP keepalive time in seconds, per RFC4271.Defaults to 60. | Optional: {} | |
connectTimeSeconds integer | connectTimeSeconds controls how long BGP waits between connection attempts to a neighbor, in seconds. | Maximum: 65535 Minimum: 1 Optional: {} | |
ebgpMultiHop boolean | ebgpMultiHop indicates if the BGPPeer is multi-hops away. | Optional: {} | |
bfd BFDSettings | bfd defines the BFD configuration for the BGP session. | Optional: {} | |
addressFamilies NeighborAddressFamily array | addressFamilies specifies the BGP address families that shall be enabledfor this BGP neighbor. evpn and ipv4vpn/ipv6vpn are mutually exclusive.If ipv4vpn or ipv6vpn are set, the update source of this neighbor willbe set to the loopback’s IPv6 address.If addressFamilies is not provided or empty, the following defaults arechosen:For unnumbered neighbors:- ipv4unicast- ipv6unicast if passthrough is configured with IPv6 local CIDR- evpn if L2VNIs or L3VNIs are present.For IPv4 neighbors:- ipv4unicast- ipv6unicast if passthrough is configured with IPv6 local CIDR- evpn if L2VNIs or L3VNIs are present.For IPv6 neighbors:- ipv4unicast if L2VNIs or L3VNIs are present, or if passthrough is configured with IPv4 local CIDR- ipv6unicast- evpn if L2VNIs or L3VNIs are present- ipv4vpn if L3VPNs and SRv6 configuration are present.- ipv6vpn if L3VPNs and SRv6 configuration are present. | MaxItems: 4 Optional: {} |
NeighborAddressFamily #
NeighborAddressFamily represents a single BGP address family configuration for a neighbor.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
type string | type is the address family type. | Enum: [ipv4unicast ipv6unicast evpn ipv4vpn ipv6vpn] MaxLength: 11 MinLength: 1 Required: {} |
NetworkDevice #
NetworkDevice moves an existing host network device into the router netns.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
interfaceName string | interfaceName is the name of the host network device to move intothe router netns. | MaxLength: 15 MinLength: 1 Pattern: ^[a-zA-Z][a-zA-Z0-9._-]*$ Required: {} |
OVSBridgeConfig #
OVSBridgeConfig contains configuration for OVS bridge type.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
name string | name of the OVS bridge interface. | MaxLength: 15 Pattern: ^[a-zA-Z][a-zA-Z0-9_-]*$ Optional: {} | |
autoCreate boolean | autoCreate determines if the OVS bridge should be created automatically.When true, the bridge is created with name br-hs-. | false | Optional: {} |
RawFRRConfig #
RawFRRConfig is the Schema for the rawfrrconfigs API.
| Field | Description | Default | Validation |
|---|---|---|---|
apiVersion string | openpe.openperouter.github.io/v1alpha1 | ||
kind string | RawFRRConfig | ||
metadata ObjectMeta | Refer to Kubernetes API documentation for fields of metadata. | Optional: {} | |
spec RawFRRConfigSpec | spec defines the desired state of RawFRRConfig. | Required: {} | |
status RawFRRConfigStatus | status defines the observed state of RawFRRConfig. | Optional: {} |
RawFRRConfigSpec #
RawFRRConfigSpec defines the desired state of RawFRRConfig.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
nodeSelector LabelSelector | nodeSelector specifies which nodes this RawFRRConfig applies to.If empty or not specified, applies to all nodes. | Optional: {} | |
priority integer | priority controls the ordering of raw config snippets in the rendered FRR configuration.Lower values are rendered first. Snippets with the same priority have undefined order. | 0 | Minimum: 0 Optional: {} |
rawConfig string | rawConfig is the raw FRR configuration text to append to the rendered configuration.WARNING: This feature is intended for advanced use cases. No validation of FRR syntaxis performed at admission time; invalid configuration will cause FRR reload failures. | MinLength: 1 Required: {} |
RawFRRConfigStatus #
RawFRRConfigStatus defines the observed state of RawFRRConfig.
Appears in:
RouteTarget #
Underlying type: string
RouteTarget defines a BGP Extended Community for route filtering.
Validation:
- MaxLength: 21
Appears in:
RouterNodeConfigurationStatus #
RouterNodeConfigurationStatus describes a node router state.
| Field | Description | Default | Validation |
|---|---|---|---|
apiVersion string | openpe.openperouter.github.io/v1alpha1 | ||
kind string | RouterNodeConfigurationStatus | ||
metadata ObjectMeta | Refer to Kubernetes API documentation for fields of metadata. | ||
status RouterNodeConfigurationStatusStatus | status node router configuration status. | Optional: {} |
RouterNodeConfigurationStatusStatus #
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
failedResources FailedResource array | failedResources list of failed configuration resources on the node. | Optional: {} | |
conditions Condition array | conditions list of conditions. | Optional: {} |
SRV6Config #
SRV6Config contains SRV6 configuration for the underlay.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
locator SRV6Locator | locator defines the locator for this SRv6 VPN. | Required: {} |
SRV6Locator #
SRV6Locator holds the configuration of a locator for SRv6.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
basePrefix string | basePrefix is the CIDR to be used for the locator, offset by the router index. | MaxLength: 43 MinLength: 1 Required: {} | |
format string | format specifies the format of the locator. Defaults to usid-f3216 | Enum: [usid-f3216] MaxLength: 40 MinLength: 1 Required: {} |
TunnelEndpointConfig #
TunnelEndpointConfig contains tunnel endpoint configuration for the underlay.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
cidrs string array | cidrs is a list of CIDRs to be used to assign IPs to the local tunnel endpoint oneach node. IPs derived from these CIDRs will be assigned to the local loopback.At least one IPv4 or IPv6 CIDR is required. At most one of each family may be specified. | MaxItems: 2 MinItems: 1 Required: {} |
Underlay #
Underlay is the Schema for the underlays API.
| Field | Description | Default | Validation |
|---|---|---|---|
apiVersion string | openpe.openperouter.github.io/v1alpha1 | ||
kind string | Underlay | ||
metadata ObjectMeta | Refer to Kubernetes API documentation for fields of metadata. | Optional: {} | |
spec UnderlaySpec | spec defines the desired state of Underlay. | Required: {} | |
status UnderlayStatus | status defines the observed state of Underlay. | Optional: {} |
UnderlayInterface #
UnderlayInterface defines how the router obtains a single underlay link. Exactly one of the sub-structs must match the type field. The union is designed to be extended with future modes (e.g. cni) for controller-provisioned interfaces.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
type UnderlayInterfaceType | type selects how the router obtains this underlay link. | Enum: [NetworkDevice] Required: {} | |
networkDevice NetworkDevice | networkDevice moves an existing host network device into the router netns.The device can be of any kind (physical NIC, bridge, macvlan, etc.).Must be set when type is “NetworkDevice”. | Optional: {} |
UnderlayInterfaceType #
Underlying type: string
UnderlayInterfaceType selects how the router obtains an underlay link. It is the discriminator of the UnderlayInterface union and is designed to be extended with future modes (e.g. cni).
Validation:
- Enum: [NetworkDevice]
Appears in:
| Field | Description |
|---|---|
NetworkDevice | UnderlayInterfaceTypeNetworkDevice moves an existing host network deviceinto the router netns. |
UnderlaySpec #
UnderlaySpec defines the desired state of Underlay.
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
nodeSelector LabelSelector | nodeSelector specifies which nodes this Underlay applies to.If empty or not specified, applies to all nodes (backward compatible).Multiple Underlays with overlapping node selectors will be rejected. | Optional: {} | |
asn integer | asn is the local AS number to use for the session with the TOR switch. | Maximum: 4.294967295e+09 Minimum: 1 Required: {} | |
routeridcidr string | routeridcidr is the ipv4 cidr to be used to assign a different routerID on each node. | 10.0.0.0/24 | Optional: {} |
neighbors Neighbor array | neighbors is the list of external BGP neighbors to peer with.Multiple neighbors are supported for connecting to multiple TOR switchesor establishing redundant BGP sessions. Each neighbor address must be unique.At least one neighbor is required. | MaxItems: 128 MinItems: 1 Required: {} | |
interfaces UnderlayInterface array | interfaces is the list of interfaces the router uses for underlayconnectivity. Each entry is a discriminated union describing how theinterface is obtained. At least one interface is required. | MinItems: 1 Required: {} | |
tunnelEndpoint TunnelEndpointConfig | tunnelEndpoint contains tunnel endpoint configuration for the underlay. | Optional: {} | |
gracefulRestart GracefulRestartConfig | gracefulRestart configures BGP Graceful Restart behaviour.When set, FRR advertises GR capability and preserves forwardingstate across restarts so that peers keep stale routes active.Omit to disable graceful restart. | Optional: {} | |
isis ISISConfig | isis holds the ISIS configuration for the underlay. | Optional: {} | |
srv6 SRV6Config | srv6 holds the SRv6 configuration. Requires ISIS or Neighbors configuration. | Optional: {} |
UnderlayStatus #
UnderlayStatus defines the observed state of Underlay.
Appears in: