Skip to content

Latest commit

 

History

History
436 lines (213 loc) · 18.4 KB

File metadata and controls

436 lines (213 loc) · 18.4 KB

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 The minimum interval that this system is capable of
receiving control packets in milliseconds.
Defaults to 300ms.
Maximum: 60000
Minimum: 10
Optional: {}
transmitInterval integer The minimum transmission interval (less jitter)
that this system wants to use to send BFD control packets in
milliseconds. Defaults to 300ms
Maximum: 60000
Minimum: 10
Optional: {}
detectMultiplier integer Configures the detection multiplier to determine
packet loss. The remote transmission interval will be multiplied
by this value to determine the connection loss detection timer.
Maximum: 255
Minimum: 2
Optional: {}
echoInterval integer Configures the minimal echo receive transmission
interval that this system is capable of handling in milliseconds.
Defaults to 50ms
Maximum: 60000
Minimum: 10
Optional: {}
echoMode boolean Enables or disables the echo transmission mode.
This mode is disabled by default, and not supported on multi
hops setups.
Optional: {}
passiveMode boolean Mark session as passive: a passive session will not
attempt to start the connection and will wait for control packets
from peer before it begins replying.
Optional: {}
minimumTtl integer For multi hop sessions only: configure the minimum
expected TTL for an incoming BFD control packet.
Maximum: 254
Minimum: 1
Optional: {}

EVPNConfig

EVPNConfig contains EVPN-VXLAN configuration for the underlay.

Appears in:

Field Description Default Validation
vtepcidr string VTEPCIDR is CIDR to be used to assign IPs to the local VTEP on each node.
A loopback interface will be created with an IP derived from this CIDR.
Mutually exclusive with vtepInterface.
Optional: {}
vtepInterface string VTEPInterface is the name of an existing interface to use as the VTEP source.
The interface must already have an IP address configured that will be used
as the VTEP IP. Mutually exclusive with vtepcidr.
The ToR must advertise the interface IP into the fabric underlay
(e.g. via redistribute connected) so that the VTEP address is reachable
from other leaves.
MaxLength: 15
Pattern: ^[a-zA-Z][a-zA-Z0-9._-]*$
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 with
the default namespace.
Maximum: 4.294967295e+09
Minimum: 1
Required: {}
hostasn integer HostASN is the expected AS number for a BGP speaking component running in
the 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 the
default network namespace. Either HostASN or HostType must be set.
Enum: [external internal]
Optional: {}
localcidr LocalCIDRConfig LocalCIDR is the CIDR configuration for the veth pair
to connect with the default namespace. The interface under
the 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: {}

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.
spec L2VNISpec
status L2VNIStatus

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: 4.294967295e+09
Minimum: 0
vxlanport integer VXLanPort is the port to be used for VXLan encapsulation. 4789
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 be
enslaved manually (or by some other means). This is useful if another controller
is 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, the
bridge the veths are enslaved to will be configured with these IP addresses, effectively
acting 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.
spec L3PassthroughSpec
status L3PassthroughStatus

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.

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.
spec L3VNISpec
status L3VNIStatus

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
Pattern: ^[a-zA-Z][a-zA-Z0-9_-]*$
Required: {}
vni integer VNI is the VXLan VNI to be used Maximum: 4.294967295e+09
Minimum: 0
Optional: {}
vxlanport integer VXLanPort is the port to be used for VXLan encapsulation. 4789
hostsession HostSession HostSession is the configuration for the host session. Optional: {}
exportRTs string array ExportRTs are the Route Targets to be used for exporting routes.
RouteTarget defines a BGP Extended Community for route filtering.
Optional: {}
importRTs string array ImportRTs are the Route Targets to be used for importing routes.
RouteTarget defines a BGP Extended Community for route filtering.
Optional: {}

L3VNIStatus

L3VNIStatus defines the observed state of L3VNI.

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 pair
to connect with the default namespace. The interface under
the 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 pair
to connect with the default namespace. The interface under
the 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.
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 the
same namespace as the perouter daemon. The password is stored in the
secret as the key "password".
Password and PasswordSecret are mutually exclusive.
Optional: {}
holdTime Duration HoldTime is the requested BGP hold time, per RFC4271.
Defaults to 180s.
Optional: {}
keepaliveTime Duration KeepaliveTime is the requested BGP keepalive time, per RFC4271.
Defaults to 60s.
Optional: {}
connectTime Duration Requested BGP connect time, controls how long BGP waits between connection attempts to a neighbor. 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: {}

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.
spec RawFRRConfigSpec
status RawFRRConfigStatus

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 syntax
is performed at admission time; invalid configuration will cause FRR reload failures.
MinLength: 1
Required: {}

RawFRRConfigStatus

RawFRRConfigStatus defines the observed state of RawFRRConfig.

Appears in:

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.
spec UnderlaySpec
status UnderlayStatus

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 neighbors to peer with. MinItems: 1
nics string array Nics is the list of physical nics to move under the PERouter namespace to connect
to external routers. This field is optional when using Multus networks for TOR connectivity.
items:MaxLength: 15
items:Pattern: ^[a-zA-Z][a-zA-Z0-9._-]*$
evpn EVPNConfig

UnderlayStatus

UnderlayStatus defines the observed state of Underlay.

Appears in: