{ "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" }, "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" } }, "required": [ "key", "operator" ], "type": "object", "additionalProperties": false }, "type": "array" }, "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" }