mirror of
https://git.sr.ht/~magic_rb/dotfiles
synced 2024-12-04 05:56:14 +01:00
03b54bd52b
Signed-off-by: magic_rb <magic_rb@redalder.org>
191 lines
10 KiB
Nix
191 lines
10 KiB
Nix
{
|
|
apiVersion = "apiextensions.k8s.io/v1";
|
|
kind = "CustomResourceDefinition";
|
|
metadata = {
|
|
annotations = {"controller-gen.kubebuilder.io/version" = "v0.11.1";};
|
|
creationTimestamp = null;
|
|
name = "bgpadvertisements.metallb.io";
|
|
};
|
|
spec = {
|
|
group = "metallb.io";
|
|
names = {
|
|
kind = "BGPAdvertisement";
|
|
listKind = "BGPAdvertisementList";
|
|
plural = "bgpadvertisements";
|
|
singular = "bgpadvertisement";
|
|
};
|
|
scope = "Namespaced";
|
|
versions = [
|
|
{
|
|
additionalPrinterColumns = [
|
|
{
|
|
jsonPath = ".spec.ipAddressPools";
|
|
name = "IPAddressPools";
|
|
type = "string";
|
|
}
|
|
{
|
|
jsonPath = ".spec.ipAddressPoolSelectors";
|
|
name = "IPAddressPool Selectors";
|
|
type = "string";
|
|
}
|
|
{
|
|
jsonPath = ".spec.peers";
|
|
name = "Peers";
|
|
type = "string";
|
|
}
|
|
{
|
|
jsonPath = ".spec.nodeSelectors";
|
|
name = "Node Selectors";
|
|
priority = 10;
|
|
type = "string";
|
|
}
|
|
];
|
|
name = "v1beta1";
|
|
schema = {
|
|
openAPIV3Schema = {
|
|
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 “roll up” 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 “roll up” 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";
|
|
};
|
|
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";
|
|
};
|
|
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";
|
|
};
|
|
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";
|
|
};
|
|
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";
|
|
};
|
|
status = {
|
|
description = "BGPAdvertisementStatus defines the observed state of BGPAdvertisement.";
|
|
type = "object";
|
|
};
|
|
};
|
|
type = "object";
|
|
};
|
|
};
|
|
served = true;
|
|
storage = true;
|
|
subresources = {status = {};};
|
|
}
|
|
];
|
|
};
|
|
}
|