{ "description": "BGPPeer is the Schema for the peers API.", "properties": { "apiVersion": { "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string" }, "kind": { "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "type": "object" }, "spec": { "description": "BGPPeerSpec defines the desired state of Peer.", "properties": { "bfdProfile": { "description": "The name of the BFD Profile to be used for the BFD session associated to the BGP session. If not set, the BFD session won't be set up.", "type": "string" }, "connectTime": { "description": "Requested BGP connect time, controls how long BGP waits between connection attempts to a neighbor.", "type": "string", "x-kubernetes-validations": [ { "message": "connect time should be between 1 seconds to 65535", "rule": "duration(self).getSeconds() >= 1 && duration(self).getSeconds() <= 65535" }, { "message": "connect time should contain a whole number of seconds", "rule": "duration(self).getMilliseconds() % 1000 == 0" } ] }, "disableMP": { "default": false, "description": "To set if we want to disable MP BGP that will separate IPv4 and IPv6 route exchanges into distinct BGP sessions.", "type": "boolean" }, "ebgpMultiHop": { "description": "To set if the BGPPeer is multi-hops away. Needed for FRR mode only.", "type": "boolean" }, "enableGracefulRestart": { "description": "EnableGracefulRestart allows BGP peer to continue to forward data packets along\nknown routes while the routing protocol information is being restored.\nThis field is immutable because it requires restart of the BGP session\nSupported for FRR mode only.", "type": "boolean", "x-kubernetes-validations": [ { "message": "EnableGracefulRestart cannot be changed after creation", "rule": "self == oldSelf" } ] }, "holdTime": { "description": "Requested BGP hold time, per RFC4271.", "type": "string" }, "keepaliveTime": { "description": "Requested BGP keepalive time, per RFC4271.", "type": "string" }, "myASN": { "description": "AS number to use for the local end of the session.", "format": "int32", "maximum": 4294967295, "minimum": 0, "type": "integer" }, "nodeSelectors": { "description": "Only connect to this peer on nodes that match one of these\nselectors.", "items": { "description": "A label selector is a label query over a set of resources. The result of matchLabels and\nmatchExpressions are ANDed. An empty label selector matches all objects. A null\nlabel selector matches no objects.", "properties": { "matchExpressions": { "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": { "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", "properties": { "key": { "description": "key is the label key that the selector applies to.", "type": "string" }, "operator": { "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", "type": "string" }, "values": { "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", "items": { "type": "string" }, "type": "array", "x-kubernetes-list-type": "atomic" } }, "required": [ "key", "operator" ], "type": "object", "additionalProperties": false }, "type": "array", "x-kubernetes-list-type": "atomic" }, "matchLabels": { "additionalProperties": { "type": "string" }, "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", "type": "object" } }, "type": "object", "x-kubernetes-map-type": "atomic", "additionalProperties": false }, "type": "array" }, "password": { "description": "Authentication password for routers enforcing TCP MD5 authenticated sessions", "type": "string" }, "passwordSecret": { "description": "passwordSecret is name of the authentication secret for BGP Peer.\nthe secret must be of type \"kubernetes.io/basic-auth\", and created in the\nsame namespace as the MetalLB deployment. The password is stored in the\nsecret as the key \"password\".", "properties": { "name": { "description": "name is unique within a namespace to reference a secret resource.", "type": "string" }, "namespace": { "description": "namespace defines the space within which the secret name must be unique.", "type": "string" } }, "type": "object", "x-kubernetes-map-type": "atomic", "additionalProperties": false }, "peerASN": { "description": "AS number to expect from the remote end of the session.", "format": "int32", "maximum": 4294967295, "minimum": 0, "type": "integer" }, "peerAddress": { "description": "Address to dial when establishing the session.", "type": "string" }, "peerPort": { "default": 179, "description": "Port to dial when establishing the session.", "maximum": 16384, "minimum": 0, "type": "integer" }, "routerID": { "description": "BGP router ID to advertise to the peer", "type": "string" }, "sourceAddress": { "description": "Source address to use when establishing the session.", "type": "string" }, "vrf": { "description": "To set if we want to peer with the BGPPeer using an interface belonging to\na host vrf", "type": "string" } }, "required": [ "myASN", "peerASN", "peerAddress" ], "type": "object", "additionalProperties": false }, "status": { "description": "BGPPeerStatus defines the observed state of Peer.", "type": "object" } }, "type": "object" }