172 lines
8.0 KiB
JSON
172 lines
8.0 KiB
JSON
|
{
|
||
|
"description": "BGPConfiguration contains the configuration for any BGP routing.",
|
||
|
"properties": {
|
||
|
"apiVersion": {
|
||
|
"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More 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. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
|
||
|
"type": "string"
|
||
|
},
|
||
|
"metadata": {
|
||
|
"type": "object"
|
||
|
},
|
||
|
"spec": {
|
||
|
"description": "BGPConfigurationSpec contains the values of the BGP configuration.",
|
||
|
"properties": {
|
||
|
"asNumber": {
|
||
|
"description": "ASNumber is the default AS number used by a node. [Default: 64512]",
|
||
|
"format": "int32",
|
||
|
"type": "integer"
|
||
|
},
|
||
|
"bindMode": {
|
||
|
"description": "BindMode indicates whether to listen for BGP connections on all addresses (None) or only on the node's canonical IP address Node.Spec.BGP.IPvXAddress (NodeIP). Default behaviour is to listen for BGP connections on all addresses.",
|
||
|
"type": "string"
|
||
|
},
|
||
|
"communities": {
|
||
|
"description": "Communities is a list of BGP community values and their arbitrary names for tagging routes.",
|
||
|
"items": {
|
||
|
"description": "Community contains standard or large community value and its name.",
|
||
|
"properties": {
|
||
|
"name": {
|
||
|
"description": "Name given to community value.",
|
||
|
"type": "string"
|
||
|
},
|
||
|
"value": {
|
||
|
"description": "Value must be of format `aa:nn` or `aa:nn:mm`. For standard community use `aa:nn` format, where `aa` and `nn` are 16 bit number. For large community use `aa:nn:mm` format, where `aa`, `nn` and `mm` are 32 bit number. Where, `aa` is an AS Number, `nn` and `mm` are per-AS identifier.",
|
||
|
"pattern": "^(\\d+):(\\d+)$|^(\\d+):(\\d+):(\\d+)$",
|
||
|
"type": "string"
|
||
|
}
|
||
|
},
|
||
|
"type": "object",
|
||
|
"additionalProperties": false
|
||
|
},
|
||
|
"type": "array"
|
||
|
},
|
||
|
"ignoredInterfaces": {
|
||
|
"description": "IgnoredInterfaces indicates the network interfaces that needs to be excluded when reading device routes.",
|
||
|
"items": {
|
||
|
"type": "string"
|
||
|
},
|
||
|
"type": "array"
|
||
|
},
|
||
|
"listenPort": {
|
||
|
"description": "ListenPort is the port where BGP protocol should listen. Defaults to 179",
|
||
|
"maximum": 65535,
|
||
|
"minimum": 1,
|
||
|
"type": "integer"
|
||
|
},
|
||
|
"logSeverityScreen": {
|
||
|
"description": "LogSeverityScreen is the log severity above which logs are sent to the stdout. [Default: INFO]",
|
||
|
"type": "string"
|
||
|
},
|
||
|
"nodeMeshMaxRestartTime": {
|
||
|
"description": "Time to allow for software restart for node-to-mesh peerings. When specified, this is configured as the graceful restart timeout. When not specified, the BIRD default of 120s is used. This field can only be set on the default BGPConfiguration instance and requires that NodeMesh is enabled",
|
||
|
"type": "string"
|
||
|
},
|
||
|
"nodeMeshPassword": {
|
||
|
"description": "Optional BGP password for full node-to-mesh peerings. This field can only be set on the default BGPConfiguration instance and requires that NodeMesh is enabled",
|
||
|
"properties": {
|
||
|
"secretKeyRef": {
|
||
|
"description": "Selects a key of a secret in the node pod's namespace.",
|
||
|
"properties": {
|
||
|
"key": {
|
||
|
"description": "The key of the secret to select from. Must be a valid secret key.",
|
||
|
"type": "string"
|
||
|
},
|
||
|
"name": {
|
||
|
"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
|
||
|
"type": "string"
|
||
|
},
|
||
|
"optional": {
|
||
|
"description": "Specify whether the Secret or its key must be defined",
|
||
|
"type": "boolean"
|
||
|
}
|
||
|
},
|
||
|
"required": [
|
||
|
"key"
|
||
|
],
|
||
|
"type": "object",
|
||
|
"additionalProperties": false
|
||
|
}
|
||
|
},
|
||
|
"type": "object",
|
||
|
"additionalProperties": false
|
||
|
},
|
||
|
"nodeToNodeMeshEnabled": {
|
||
|
"description": "NodeToNodeMeshEnabled sets whether full node to node BGP mesh is enabled. [Default: true]",
|
||
|
"type": "boolean"
|
||
|
},
|
||
|
"prefixAdvertisements": {
|
||
|
"description": "PrefixAdvertisements contains per-prefix advertisement configuration.",
|
||
|
"items": {
|
||
|
"description": "PrefixAdvertisement configures advertisement properties for the specified CIDR.",
|
||
|
"properties": {
|
||
|
"cidr": {
|
||
|
"description": "CIDR for which properties should be advertised.",
|
||
|
"type": "string"
|
||
|
},
|
||
|
"communities": {
|
||
|
"description": "Communities can be list of either community names already defined in `Specs.Communities` or community value of format `aa:nn` or `aa:nn:mm`. For standard community use `aa:nn` format, where `aa` and `nn` are 16 bit number. For large community use `aa:nn:mm` format, where `aa`, `nn` and `mm` are 32 bit number. Where,`aa` is an AS Number, `nn` and `mm` are per-AS identifier.",
|
||
|
"items": {
|
||
|
"type": "string"
|
||
|
},
|
||
|
"type": "array"
|
||
|
}
|
||
|
},
|
||
|
"type": "object",
|
||
|
"additionalProperties": false
|
||
|
},
|
||
|
"type": "array"
|
||
|
},
|
||
|
"serviceClusterIPs": {
|
||
|
"description": "ServiceClusterIPs are the CIDR blocks from which service cluster IPs are allocated. If specified, Calico will advertise these blocks, as well as any cluster IPs within them.",
|
||
|
"items": {
|
||
|
"description": "ServiceClusterIPBlock represents a single allowed ClusterIP CIDR block.",
|
||
|
"properties": {
|
||
|
"cidr": {
|
||
|
"type": "string"
|
||
|
}
|
||
|
},
|
||
|
"type": "object",
|
||
|
"additionalProperties": false
|
||
|
},
|
||
|
"type": "array"
|
||
|
},
|
||
|
"serviceExternalIPs": {
|
||
|
"description": "ServiceExternalIPs are the CIDR blocks for Kubernetes Service External IPs. Kubernetes Service ExternalIPs will only be advertised if they are within one of these blocks.",
|
||
|
"items": {
|
||
|
"description": "ServiceExternalIPBlock represents a single allowed External IP CIDR block.",
|
||
|
"properties": {
|
||
|
"cidr": {
|
||
|
"type": "string"
|
||
|
}
|
||
|
},
|
||
|
"type": "object",
|
||
|
"additionalProperties": false
|
||
|
},
|
||
|
"type": "array"
|
||
|
},
|
||
|
"serviceLoadBalancerIPs": {
|
||
|
"description": "ServiceLoadBalancerIPs are the CIDR blocks for Kubernetes Service LoadBalancer IPs. Kubernetes Service status.LoadBalancer.Ingress IPs will only be advertised if they are within one of these blocks.",
|
||
|
"items": {
|
||
|
"description": "ServiceLoadBalancerIPBlock represents a single allowed LoadBalancer IP CIDR block.",
|
||
|
"properties": {
|
||
|
"cidr": {
|
||
|
"type": "string"
|
||
|
}
|
||
|
},
|
||
|
"type": "object",
|
||
|
"additionalProperties": false
|
||
|
},
|
||
|
"type": "array"
|
||
|
}
|
||
|
},
|
||
|
"type": "object",
|
||
|
"additionalProperties": false
|
||
|
}
|
||
|
},
|
||
|
"type": "object"
|
||
|
}
|