auto-update crds catalog

This commit is contained in:
Drone Shipper 2024-03-26 12:14:28 +00:00
parent 84920826a5
commit 7546fffa90
11 changed files with 1121 additions and 0 deletions

View File

@ -0,0 +1,90 @@
{
"description": "AddressPool is the Schema for the addresspools API.",
"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": "AddressPoolSpec defines the desired state of AddressPool.",
"properties": {
"addresses": {
"description": "A list of IP address ranges over which MetalLB has authority. You can list multiple ranges in a single pool, they will all share the same settings. Each range can be either a CIDR prefix, or an explicit start-end range of IPs.",
"items": {
"type": "string"
},
"type": "array"
},
"autoAssign": {
"default": true,
"description": "AutoAssign flag used to prevent MetallB from automatic allocation for a pool.",
"type": "boolean"
},
"bgpAdvertisements": {
"description": "When an IP is allocated from this pool, how should it be translated into BGP announcements?",
"items": {
"properties": {
"aggregationLength": {
"default": 32,
"description": "The aggregation-length advertisement option lets you \u201croll up\u201d the /32s into a larger prefix.",
"format": "int32",
"minimum": 1,
"type": "integer"
},
"aggregationLengthV6": {
"default": 128,
"description": "Optional, defaults to 128 (i.e. no aggregation) if not specified.",
"format": "int32",
"type": "integer"
},
"communities": {
"description": "BGP communities",
"items": {
"type": "string"
},
"type": "array"
},
"localPref": {
"description": "BGP LOCAL_PREF attribute which is used by BGP best path algorithm, Path with higher localpref is preferred over one with lower localpref.",
"format": "int32",
"type": "integer"
}
},
"type": "object",
"additionalProperties": false
},
"type": "array"
},
"protocol": {
"description": "Protocol can be used to select how the announcement is done.",
"enum": [
"layer2",
"bgp"
],
"type": "string"
}
},
"required": [
"addresses",
"protocol"
],
"type": "object",
"additionalProperties": false
},
"status": {
"description": "AddressPoolStatus defines the observed state of AddressPool.",
"type": "object"
}
},
"required": [
"spec"
],
"type": "object"
}

View File

@ -0,0 +1,90 @@
{
"description": "AddressPool represents a pool of IP addresses that can be allocated to LoadBalancer services. AddressPool is deprecated and being replaced by IPAddressPool.",
"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": "AddressPoolSpec defines the desired state of AddressPool.",
"properties": {
"addresses": {
"description": "A list of IP address ranges over which MetalLB has authority. You can list multiple ranges in a single pool, they will all share the same settings. Each range can be either a CIDR prefix, or an explicit start-end range of IPs.",
"items": {
"type": "string"
},
"type": "array"
},
"autoAssign": {
"default": true,
"description": "AutoAssign flag used to prevent MetallB from automatic allocation for a pool.",
"type": "boolean"
},
"bgpAdvertisements": {
"description": "Drives how an IP allocated from this pool should translated into BGP announcements.",
"items": {
"properties": {
"aggregationLength": {
"default": 32,
"description": "The aggregation-length advertisement option lets you \u201croll up\u201d the /32s into a larger prefix.",
"format": "int32",
"minimum": 1,
"type": "integer"
},
"aggregationLengthV6": {
"default": 128,
"description": "Optional, defaults to 128 (i.e. no aggregation) if not specified.",
"format": "int32",
"type": "integer"
},
"communities": {
"description": "BGP communities to be associated with the given advertisement.",
"items": {
"type": "string"
},
"type": "array"
},
"localPref": {
"description": "BGP LOCAL_PREF attribute which is used by BGP best path algorithm, Path with higher localpref is preferred over one with lower localpref.",
"format": "int32",
"type": "integer"
}
},
"type": "object",
"additionalProperties": false
},
"type": "array"
},
"protocol": {
"description": "Protocol can be used to select how the announcement is done.",
"enum": [
"layer2",
"bgp"
],
"type": "string"
}
},
"required": [
"addresses",
"protocol"
],
"type": "object",
"additionalProperties": false
},
"status": {
"description": "AddressPoolStatus defines the observed state of AddressPool.",
"type": "object"
}
},
"required": [
"spec"
],
"type": "object"
}

34
metallb.io/all-anyOf.json Normal file
View File

@ -0,0 +1,34 @@
{
"anyOf": [
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/addresspool_v1alpha1.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/addresspool_v1beta1.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/bfdprofile_v1beta1.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/bgpadvertisement_v1beta1.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/bgppeer_v1beta1.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/bgppeer_v1beta2.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/community_v1beta1.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/ipaddresspool_v1beta1.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/l2advertisement_v1beta1.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/all-anyOf.json"
}
]
}

37
metallb.io/all-oneOf.json Normal file
View File

@ -0,0 +1,37 @@
{
"oneOf": [
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/addresspool_v1alpha1.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/addresspool_v1beta1.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/bfdprofile_v1beta1.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/bgpadvertisement_v1beta1.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/bgppeer_v1beta1.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/bgppeer_v1beta2.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/community_v1beta1.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/ipaddresspool_v1beta1.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/l2advertisement_v1beta1.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/all-anyOf.json"
},
{
"$ref": "https://gitea.rknet.org/infra/crds-catalog/raw/branch/catalog/metallb.io/all-oneOf.json"
}
]
}

View File

@ -0,0 +1,71 @@
{
"description": "BFDProfile represents the settings of the bfd session that can be optionally associated with a BGP session.",
"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": "BFDProfileSpec defines the desired state of BFDProfile.",
"properties": {
"detectMultiplier": {
"description": "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.",
"format": "int32",
"maximum": 255,
"minimum": 2,
"type": "integer"
},
"echoInterval": {
"description": "Configures the minimal echo receive transmission interval that this system is capable of handling in milliseconds. Defaults to 50ms",
"format": "int32",
"maximum": 60000,
"minimum": 10,
"type": "integer"
},
"echoMode": {
"description": "Enables or disables the echo transmission mode. This mode is disabled by default, and not supported on multi hops setups.",
"type": "boolean"
},
"minimumTtl": {
"description": "For multi hop sessions only: configure the minimum expected TTL for an incoming BFD control packet.",
"format": "int32",
"maximum": 254,
"minimum": 1,
"type": "integer"
},
"passiveMode": {
"description": "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.",
"type": "boolean"
},
"receiveInterval": {
"description": "The minimum interval that this system is capable of receiving control packets in milliseconds. Defaults to 300ms.",
"format": "int32",
"maximum": 60000,
"minimum": 10,
"type": "integer"
},
"transmitInterval": {
"description": "The minimum transmission interval (less jitter) that this system wants to use to send BFD control packets in milliseconds. Defaults to 300ms",
"format": "int32",
"maximum": 60000,
"minimum": 10,
"type": "integer"
}
},
"type": "object",
"additionalProperties": false
},
"status": {
"description": "BFDProfileStatus defines the observed state of BFDProfile.",
"type": "object"
}
},
"type": "object"
}

View File

@ -0,0 +1,165 @@
{
"description": "BGPAdvertisement allows to advertise the IPs coming from the selected IPAddressPools via BGP, setting the parameters of the BGP Advertisement.",
"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": "BGPAdvertisementSpec defines the desired state of BGPAdvertisement.",
"properties": {
"aggregationLength": {
"default": 32,
"description": "The aggregation-length advertisement option lets you \u201croll up\u201d the /32s into a larger prefix. Defaults to 32. Works for IPv4 addresses.",
"format": "int32",
"minimum": 1,
"type": "integer"
},
"aggregationLengthV6": {
"default": 128,
"description": "The aggregation-length advertisement option lets you \u201croll up\u201d the /128s into a larger prefix. Defaults to 128. Works for IPv6 addresses.",
"format": "int32",
"type": "integer"
},
"communities": {
"description": "The BGP communities to be associated with the announcement. Each item can be a standard community of the form 1234:1234, a large community of the form large:1234:1234:1234 or the name of an alias defined in the Community CRD.",
"items": {
"type": "string"
},
"type": "array"
},
"ipAddressPoolSelectors": {
"description": "A selector for the IPAddressPools which would get advertised via this advertisement. If no IPAddressPool is selected by this or by the list, the advertisement is applied to all the IPAddressPools.",
"items": {
"description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label 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 relates 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. Valid 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, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge 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 map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator 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"
},
"ipAddressPools": {
"description": "The list of IPAddressPools to advertise via this advertisement, selected by name.",
"items": {
"type": "string"
},
"type": "array"
},
"localPref": {
"description": "The BGP LOCAL_PREF attribute which is used by BGP best path algorithm, Path with higher localpref is preferred over one with lower localpref.",
"format": "int32",
"type": "integer"
},
"nodeSelectors": {
"description": "NodeSelectors allows to limit the nodes to announce as next hops for the LoadBalancer IP. When empty, all the nodes having are announced as next hops.",
"items": {
"description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label 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 relates 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. Valid 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, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge 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 map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator 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"
},
"peers": {
"description": "Peers limits the bgppeer to advertise the ips of the selected pools to. When empty, the loadbalancer IP is announced to all the BGPPeers configured.",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object",
"additionalProperties": false
},
"status": {
"description": "BGPAdvertisementStatus defines the observed state of BGPAdvertisement.",
"type": "object"
}
},
"type": "object"
}

View File

@ -0,0 +1,127 @@
{
"description": "BGPPeer is the Schema for the peers API.",
"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": "BGPPeerSpec defines the desired state of Peer.",
"properties": {
"bfdProfile": {
"type": "string"
},
"ebgpMultiHop": {
"description": "EBGP peer is multi-hops away",
"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 selectors.",
"items": {
"properties": {
"matchExpressions": {
"items": {
"properties": {
"key": {
"type": "string"
},
"operator": {
"type": "string"
},
"values": {
"items": {
"type": "string"
},
"minItems": 1,
"type": "array"
}
},
"required": [
"key",
"operator",
"values"
],
"type": "object",
"additionalProperties": false
},
"type": "array"
},
"matchLabels": {
"additionalProperties": {
"type": "string"
},
"type": "object"
}
},
"type": "object",
"additionalProperties": false
},
"type": "array"
},
"password": {
"description": "Authentication password for routers enforcing TCP MD5 authenticated sessions",
"type": "string"
},
"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": {
"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"
}
},
"required": [
"myASN",
"peerASN",
"peerAddress"
],
"type": "object",
"additionalProperties": false
},
"status": {
"description": "BGPPeerStatus defines the observed state of Peer.",
"type": "object"
}
},
"type": "object"
}

View File

@ -0,0 +1,155 @@
{
"description": "BGPPeer is the Schema for the peers API.",
"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": "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"
},
"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 selectors.",
"items": {
"description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label 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 relates 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. Valid 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, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge 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 map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator 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. the secret must be of type \"kubernetes.io/basic-auth\", and created in the same namespace as the MetalLB deployment. The password is stored in the secret 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 a 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"
}

View File

@ -0,0 +1,45 @@
{
"description": "Community is a collection of aliases for communities. Users can define named aliases to be used in the BGPPeer CRD.",
"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": "CommunitySpec defines the desired state of Community.",
"properties": {
"communities": {
"items": {
"properties": {
"name": {
"description": "The name of the alias for the community.",
"type": "string"
},
"value": {
"description": "The BGP community value corresponding to the given name. Can be a standard community of the form 1234:1234 or a large community of the form large:1234:1234:1234.",
"type": "string"
}
},
"type": "object",
"additionalProperties": false
},
"type": "array"
}
},
"type": "object",
"additionalProperties": false
},
"status": {
"description": "CommunityStatus defines the observed state of Community.",
"type": "object"
}
},
"type": "object"
}

View File

@ -0,0 +1,167 @@
{
"description": "IPAddressPool represents a pool of IP addresses that can be allocated to LoadBalancer services.",
"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": "IPAddressPoolSpec defines the desired state of IPAddressPool.",
"properties": {
"addresses": {
"description": "A list of IP address ranges over which MetalLB has authority. You can list multiple ranges in a single pool, they will all share the same settings. Each range can be either a CIDR prefix, or an explicit start-end range of IPs.",
"items": {
"type": "string"
},
"type": "array"
},
"autoAssign": {
"default": true,
"description": "AutoAssign flag used to prevent MetallB from automatic allocation for a pool.",
"type": "boolean"
},
"avoidBuggyIPs": {
"default": false,
"description": "AvoidBuggyIPs prevents addresses ending with .0 and .255 to be used by a pool.",
"type": "boolean"
},
"serviceAllocation": {
"description": "AllocateTo makes ip pool allocation to specific namespace and/or service. The controller will use the pool with lowest value of priority in case of multiple matches. A pool with no priority set will be used only if the pools with priority can't be used. If multiple matching IPAddressPools are available it will check for the availability of IPs sorting the matching IPAddressPools by priority, starting from the highest to the lowest. If multiple IPAddressPools have the same priority, choice will be random.",
"properties": {
"namespaceSelectors": {
"description": "NamespaceSelectors list of label selectors to select namespace(s) for ip pool, an alternative to using namespace list.",
"items": {
"description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label 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 relates 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. Valid 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, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge 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 map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator 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"
},
"namespaces": {
"description": "Namespaces list of namespace(s) on which ip pool can be attached.",
"items": {
"type": "string"
},
"type": "array"
},
"priority": {
"description": "Priority priority given for ip pool while ip allocation on a service.",
"type": "integer"
},
"serviceSelectors": {
"description": "ServiceSelectors list of label selector to select service(s) for which ip pool can be used for ip allocation.",
"items": {
"description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label 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 relates 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. Valid 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, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge 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 map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator 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"
}
},
"type": "object",
"additionalProperties": false
}
},
"required": [
"addresses"
],
"type": "object",
"additionalProperties": false
},
"status": {
"description": "IPAddressPoolStatus defines the observed state of IPAddressPool.",
"type": "object"
}
},
"required": [
"spec"
],
"type": "object"
}

View File

@ -0,0 +1,140 @@
{
"description": "L2Advertisement allows to advertise the LoadBalancer IPs provided by the selected pools via L2.",
"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": "L2AdvertisementSpec defines the desired state of L2Advertisement.",
"properties": {
"interfaces": {
"description": "A list of interfaces to announce from. The LB IP will be announced only from these interfaces. If the field is not set, we advertise from all the interfaces on the host.",
"items": {
"type": "string"
},
"type": "array"
},
"ipAddressPoolSelectors": {
"description": "A selector for the IPAddressPools which would get advertised via this advertisement. If no IPAddressPool is selected by this or by the list, the advertisement is applied to all the IPAddressPools.",
"items": {
"description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label 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 relates 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. Valid 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, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge 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 map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator 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"
},
"ipAddressPools": {
"description": "The list of IPAddressPools to advertise via this advertisement, selected by name.",
"items": {
"type": "string"
},
"type": "array"
},
"nodeSelectors": {
"description": "NodeSelectors allows to limit the nodes to announce as next hops for the LoadBalancer IP. When empty, all the nodes having are announced as next hops.",
"items": {
"description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label 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 relates 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. Valid 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, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge 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 map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator 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"
}
},
"type": "object",
"additionalProperties": false
},
"status": {
"description": "L2AdvertisementStatus defines the observed state of L2Advertisement.",
"type": "object"
}
},
"type": "object"
}