mirror of
https://git.sr.ht/~magic_rb/dotfiles
synced 2024-12-02 21:16:15 +01:00
03b54bd52b
Signed-off-by: magic_rb <magic_rb@redalder.org>
338 lines
17 KiB
Nix
338 lines
17 KiB
Nix
{
|
|
apiVersion = "apiextensions.k8s.io/v1";
|
|
kind = "CustomResourceDefinition";
|
|
metadata = {
|
|
annotations = {"controller-gen.kubebuilder.io/version" = "v0.11.1";};
|
|
creationTimestamp = null;
|
|
name = "bgppeers.metallb.io";
|
|
};
|
|
spec = {
|
|
conversion = {
|
|
strategy = "Webhook";
|
|
webhook = {
|
|
clientConfig = {
|
|
caBundle = "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGWlRDQ0EwMmdBd0lCQWdJVU5GRW1XcTM3MVpKdGkrMmlSQzk1WmpBV1MxZ3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3UWpFTE1Ba0dBMVVFQmhNQ1dGZ3hGVEFUQmdOVkJBY01ERVJsWm1GMWJIUWdRMmwwZVRFY01Cb0dBMVVFDQpDZ3dUUkdWbVlYVnNkQ0JEYjIxd1lXNTVJRXgwWkRBZUZ3MHlNakEzTVRrd09UTXlNek5hRncweU1qQTRNVGd3DQpPVE15TXpOYU1FSXhDekFKQmdOVkJBWVRBbGhZTVJVd0V3WURWUVFIREF4RVpXWmhkV3gwSUVOcGRIa3hIREFhDQpCZ05WQkFvTUUwUmxabUYxYkhRZ1EyOXRjR0Z1ZVNCTWRHUXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDDQpEd0F3Z2dJS0FvSUNBUUNxVFpxMWZRcC9vYkdlenhES0o3OVB3Ny94azJwellualNzMlkzb1ZYSm5sRmM4YjVlDQpma2ZZQnY2bndscW1keW5PL2phWFBaQmRQSS82aFdOUDBkdVhadEtWU0NCUUpyZzEyOGNXb3F0MGNTN3pLb1VpDQpvcU1tQ0QvRXVBeFFNZjhRZDF2c1gvVllkZ0poVTZBRXJLZEpIaXpFOUJtUkNkTDBGMW1OVW55Rk82UnRtWFZUDQpidkxsTDVYeTc2R0FaQVBLOFB4aVlDa0NtbDdxN0VnTWNiOXlLWldCYmlxQ3VkTXE5TGJLNmdKNzF6YkZnSXV4DQo1L1pXK2JraTB2RlplWk9ZODUxb1psckFUNzJvMDI4NHNTWW9uN0pHZVZkY3NoUnh5R1VpSFpSTzdkaXZVTDVTDQpmM2JmSDFYbWY1ZDQzT0NWTWRuUUV2NWVaOG8zeWVLa3ZrbkZQUGVJMU9BbjdGbDlFRVNNR2dhOGFaSG1URSttDQpsLzlMSmdDYjBnQmtPT0M0WnV4bWh2aERKV1EzWnJCS3pMQlNUZXN0NWlLNVlwcXRWVVk2THRyRW9FelVTK1lsDQpwWndXY2VQWHlHeHM5ZURsR3lNVmQraW15Y3NTU1UvVno2Mmx6MnZCS21NTXBkYldDQWhud0RsRTVqU2dyMjRRDQp0eGNXLys2N3d5KzhuQlI3UXdqVTFITndVRjBzeERWdEwrZ1NHVERnSEVZSlhZelYvT05zMy94TkpoVFNPSkxNDQpoeXNVdyttaGdackdhbUdXcHVIVU1DUitvTWJzMTc1UkcrQjJnUFFHVytPTjJnUTRyOXN2b0ZBNHBBQm8xd1dLDQpRYjRhY3pmeVVscElBOVFoSmFsZEY3S3dPSHVlV3gwRUNrNXg0T2tvVDBvWVp0dzFiR0JjRGtaSmF3SURBUUFCDQpvMU13VVRBZEJnTlZIUTRFRmdRVW90UlNIUm9IWTEyRFZ4R0NCdEhpb1g2ZmVFQXdId1lEVlIwakJCZ3dGb0FVDQpvdFJTSFJvSFkxMkRWeEdDQnRIaW9YNmZlRUF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCDQpBUXNGQUFPQ0FnRUFSbkpsWWRjMTFHd0VxWnh6RDF2R3BDR2pDN2VWTlQ3aVY1d3IybXlybHdPYi9aUWFEa0xYDQpvVStaOVVXT1VlSXJTdzUydDdmQUpvVVAwSm5iYkMveVIrU1lqUGhvUXNiVHduOTc2ZldBWTduM3FMOXhCd1Y0DQphek41OXNjeUp0dlhMeUtOL2N5ak1ReDRLajBIMFg0bWJ6bzVZNUtzWWtYVU0vOEFPdWZMcEd0S1NGVGgrSEFDDQpab1Q5YnZHS25adnNHd0tYZFF0Wnh0akhaUjVqK3U3ZGtQOTJBT051RFNabS8rWVV4b2tBK09JbzdSR3BwSHNXDQo1ZTdNY0FTVXRtb1FORXd6dVFoVkJaRWQ1OGtKYjUrV0VWbGNzanlXNnRTbzErZ25tTWNqR1BsMWgxR2hVbjV4DQpFY0lWRnBIWXM5YWo1NmpBSjk1MVQvZjhMaWxmTlVnanBLQ0c1bnl0SUt3emxhOHNtdGlPdm1UNEpYbXBwSkI2DQo4bmdHRVluVjUrUTYwWFJ2OEhSSGp1VG9CRHVhaERrVDA2R1JGODU1d09FR2V4bkZpMXZYWUxLVllWb1V2MXRKDQo4dVdUR1pwNllDSVJldlBqbzg5ZytWTlJSaVFYUThJd0dybXE5c0RoVTlqTjA0SjdVL1RvRDFpNHE3VnlsRUc5DQorV1VGNkNLaEdBeTJIaEhwVncyTGFoOS9lUzdZMUZ1YURrWmhPZG1laG1BOCtqdHNZamJadnR5Mm1SWlF0UUZzDQpUU1VUUjREbUR2bVVPRVRmeStpRHdzK2RkWXVNTnJGeVVYV2dkMnpBQU4ydVl1UHFGY2pRcFNPODFzVTJTU3R3DQoxVzAyeUtYOGJEYmZFdjBzbUh3UzliQnFlSGo5NEM1Mjg0YXpsdTBmaUdpTm1OUEM4ckJLRmhBPQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ==";
|
|
service = {
|
|
name = "webhook-service";
|
|
namespace = "metallb-system";
|
|
path = "/convert";
|
|
};
|
|
};
|
|
conversionReviewVersions = ["v1beta1" "v1beta2"];
|
|
};
|
|
};
|
|
group = "metallb.io";
|
|
names = {
|
|
kind = "BGPPeer";
|
|
listKind = "BGPPeerList";
|
|
plural = "bgppeers";
|
|
singular = "bgppeer";
|
|
};
|
|
scope = "Namespaced";
|
|
versions = [
|
|
{
|
|
additionalPrinterColumns = [
|
|
{
|
|
jsonPath = ".spec.peerAddress";
|
|
name = "Address";
|
|
type = "string";
|
|
}
|
|
{
|
|
jsonPath = ".spec.peerASN";
|
|
name = "ASN";
|
|
type = "string";
|
|
}
|
|
{
|
|
jsonPath = ".spec.bfdProfile";
|
|
name = "BFD Profile";
|
|
type = "string";
|
|
}
|
|
{
|
|
jsonPath = ".spec.ebgpMultiHop";
|
|
name = "Multi Hops";
|
|
type = "string";
|
|
}
|
|
];
|
|
name = "v1beta1";
|
|
schema = {
|
|
openAPIV3Schema = {
|
|
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";
|
|
};
|
|
type = "array";
|
|
};
|
|
matchLabels = {
|
|
additionalProperties = {type = "string";};
|
|
type = "object";
|
|
};
|
|
};
|
|
type = "object";
|
|
};
|
|
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";
|
|
};
|
|
status = {
|
|
description = "BGPPeerStatus defines the observed state of Peer.";
|
|
type = "object";
|
|
};
|
|
};
|
|
type = "object";
|
|
};
|
|
};
|
|
served = true;
|
|
storage = false;
|
|
subresources = {status = {};};
|
|
}
|
|
{
|
|
additionalPrinterColumns = [
|
|
{
|
|
jsonPath = ".spec.peerAddress";
|
|
name = "Address";
|
|
type = "string";
|
|
}
|
|
{
|
|
jsonPath = ".spec.peerASN";
|
|
name = "ASN";
|
|
type = "string";
|
|
}
|
|
{
|
|
jsonPath = ".spec.bfdProfile";
|
|
name = "BFD Profile";
|
|
type = "string";
|
|
}
|
|
{
|
|
jsonPath = ".spec.ebgpMultiHop";
|
|
name = "Multi Hops";
|
|
type = "string";
|
|
}
|
|
];
|
|
name = "v1beta2";
|
|
schema = {
|
|
openAPIV3Schema = {
|
|
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";
|
|
};
|
|
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";
|
|
};
|
|
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";
|
|
};
|
|
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";
|
|
};
|
|
status = {
|
|
description = "BGPPeerStatus defines the observed state of Peer.";
|
|
type = "object";
|
|
};
|
|
};
|
|
type = "object";
|
|
};
|
|
};
|
|
served = true;
|
|
storage = true;
|
|
subresources = {status = {};};
|
|
}
|
|
];
|
|
};
|
|
}
|