blob: bbcf54e602b5c69e8d2cca852a294610702ebf6e [file] [log] [blame]
Giorgi Lekveishvili725bb392023-05-05 18:24:27 +04001apiVersion: apiextensions.k8s.io/v1
2kind: CustomResourceDefinition
3metadata:
4 annotations:
5 controller-gen.kubebuilder.io/version: v0.11.1
6 name: addresspools.metallb.io
7spec:
8 conversion:
9 strategy: Webhook
10 webhook:
11 clientConfig:
12 caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGWlRDQ0EwMmdBd0lCQWdJVU5GRW1XcTM3MVpKdGkrMmlSQzk1WmpBV1MxZ3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3UWpFTE1Ba0dBMVVFQmhNQ1dGZ3hGVEFUQmdOVkJBY01ERVJsWm1GMWJIUWdRMmwwZVRFY01Cb0dBMVVFDQpDZ3dUUkdWbVlYVnNkQ0JEYjIxd1lXNTVJRXgwWkRBZUZ3MHlNakEzTVRrd09UTXlNek5hRncweU1qQTRNVGd3DQpPVE15TXpOYU1FSXhDekFKQmdOVkJBWVRBbGhZTVJVd0V3WURWUVFIREF4RVpXWmhkV3gwSUVOcGRIa3hIREFhDQpCZ05WQkFvTUUwUmxabUYxYkhRZ1EyOXRjR0Z1ZVNCTWRHUXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDDQpEd0F3Z2dJS0FvSUNBUUNxVFpxMWZRcC9vYkdlenhES0o3OVB3Ny94azJwellualNzMlkzb1ZYSm5sRmM4YjVlDQpma2ZZQnY2bndscW1keW5PL2phWFBaQmRQSS82aFdOUDBkdVhadEtWU0NCUUpyZzEyOGNXb3F0MGNTN3pLb1VpDQpvcU1tQ0QvRXVBeFFNZjhRZDF2c1gvVllkZ0poVTZBRXJLZEpIaXpFOUJtUkNkTDBGMW1OVW55Rk82UnRtWFZUDQpidkxsTDVYeTc2R0FaQVBLOFB4aVlDa0NtbDdxN0VnTWNiOXlLWldCYmlxQ3VkTXE5TGJLNmdKNzF6YkZnSXV4DQo1L1pXK2JraTB2RlplWk9ZODUxb1psckFUNzJvMDI4NHNTWW9uN0pHZVZkY3NoUnh5R1VpSFpSTzdkaXZVTDVTDQpmM2JmSDFYbWY1ZDQzT0NWTWRuUUV2NWVaOG8zeWVLa3ZrbkZQUGVJMU9BbjdGbDlFRVNNR2dhOGFaSG1URSttDQpsLzlMSmdDYjBnQmtPT0M0WnV4bWh2aERKV1EzWnJCS3pMQlNUZXN0NWlLNVlwcXRWVVk2THRyRW9FelVTK1lsDQpwWndXY2VQWHlHeHM5ZURsR3lNVmQraW15Y3NTU1UvVno2Mmx6MnZCS21NTXBkYldDQWhud0RsRTVqU2dyMjRRDQp0eGNXLys2N3d5KzhuQlI3UXdqVTFITndVRjBzeERWdEwrZ1NHVERnSEVZSlhZelYvT05zMy94TkpoVFNPSkxNDQpoeXNVdyttaGdackdhbUdXcHVIVU1DUitvTWJzMTc1UkcrQjJnUFFHVytPTjJnUTRyOXN2b0ZBNHBBQm8xd1dLDQpRYjRhY3pmeVVscElBOVFoSmFsZEY3S3dPSHVlV3gwRUNrNXg0T2tvVDBvWVp0dzFiR0JjRGtaSmF3SURBUUFCDQpvMU13VVRBZEJnTlZIUTRFRmdRVW90UlNIUm9IWTEyRFZ4R0NCdEhpb1g2ZmVFQXdId1lEVlIwakJCZ3dGb0FVDQpvdFJTSFJvSFkxMkRWeEdDQnRIaW9YNmZlRUF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCDQpBUXNGQUFPQ0FnRUFSbkpsWWRjMTFHd0VxWnh6RDF2R3BDR2pDN2VWTlQ3aVY1d3IybXlybHdPYi9aUWFEa0xYDQpvVStaOVVXT1VlSXJTdzUydDdmQUpvVVAwSm5iYkMveVIrU1lqUGhvUXNiVHduOTc2ZldBWTduM3FMOXhCd1Y0DQphek41OXNjeUp0dlhMeUtOL2N5ak1ReDRLajBIMFg0bWJ6bzVZNUtzWWtYVU0vOEFPdWZMcEd0S1NGVGgrSEFDDQpab1Q5YnZHS25adnNHd0tYZFF0Wnh0akhaUjVqK3U3ZGtQOTJBT051RFNabS8rWVV4b2tBK09JbzdSR3BwSHNXDQo1ZTdNY0FTVXRtb1FORXd6dVFoVkJaRWQ1OGtKYjUrV0VWbGNzanlXNnRTbzErZ25tTWNqR1BsMWgxR2hVbjV4DQpFY0lWRnBIWXM5YWo1NmpBSjk1MVQvZjhMaWxmTlVnanBLQ0c1bnl0SUt3emxhOHNtdGlPdm1UNEpYbXBwSkI2DQo4bmdHRVluVjUrUTYwWFJ2OEhSSGp1VG9CRHVhaERrVDA2R1JGODU1d09FR2V4bkZpMXZYWUxLVllWb1V2MXRKDQo4dVdUR1pwNllDSVJldlBqbzg5ZytWTlJSaVFYUThJd0dybXE5c0RoVTlqTjA0SjdVL1RvRDFpNHE3VnlsRUc5DQorV1VGNkNLaEdBeTJIaEhwVncyTGFoOS9lUzdZMUZ1YURrWmhPZG1laG1BOCtqdHNZamJadnR5Mm1SWlF0UUZzDQpUU1VUUjREbUR2bVVPRVRmeStpRHdzK2RkWXVNTnJGeVVYV2dkMnpBQU4ydVl1UHFGY2pRcFNPODFzVTJTU3R3DQoxVzAyeUtYOGJEYmZFdjBzbUh3UzliQnFlSGo5NEM1Mjg0YXpsdTBmaUdpTm1OUEM4ckJLRmhBPQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ==
13 service:
14 name: webhook-service
15 namespace: metallb-system
16 path: /convert
17 conversionReviewVersions:
18 - v1alpha1
19 - v1beta1
20 group: metallb.io
21 names:
22 kind: AddressPool
23 listKind: AddressPoolList
24 plural: addresspools
25 singular: addresspool
26 scope: Namespaced
27 versions:
28 - deprecated: true
29 deprecationWarning: metallb.io v1alpha1 AddressPool is deprecated
30 name: v1alpha1
31 schema:
32 openAPIV3Schema:
33 description: AddressPool is the Schema for the addresspools API.
34 properties:
35 apiVersion:
36 description: 'APIVersion defines the versioned schema of this representation
37 of an object. Servers should convert recognized schemas to the latest
38 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
39 type: string
40 kind:
41 description: 'Kind is a string value representing the REST resource this
42 object represents. Servers may infer this from the endpoint the client
43 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
44 type: string
45 metadata:
46 type: object
47 spec:
48 description: AddressPoolSpec defines the desired state of AddressPool.
49 properties:
50 addresses:
51 description: A list of IP address ranges over which MetalLB has authority.
52 You can list multiple ranges in a single pool, they will all share
53 the same settings. Each range can be either a CIDR prefix, or an
54 explicit start-end range of IPs.
55 items:
56 type: string
57 type: array
58 autoAssign:
59 default: true
60 description: AutoAssign flag used to prevent MetallB from automatic
61 allocation for a pool.
62 type: boolean
63 bgpAdvertisements:
64 description: When an IP is allocated from this pool, how should it
65 be translated into BGP announcements?
66 items:
67 properties:
68 aggregationLength:
69 default: 32
70 description: The aggregation-length advertisement option lets
71 you “roll up” the /32s into a larger prefix.
72 format: int32
73 minimum: 1
74 type: integer
75 aggregationLengthV6:
76 default: 128
77 description: Optional, defaults to 128 (i.e. no aggregation)
78 if not specified.
79 format: int32
80 type: integer
81 communities:
82 description: BGP communities
83 items:
84 type: string
85 type: array
86 localPref:
87 description: BGP LOCAL_PREF attribute which is used by BGP best
88 path algorithm, Path with higher localpref is preferred over
89 one with lower localpref.
90 format: int32
91 type: integer
92 type: object
93 type: array
94 protocol:
95 description: Protocol can be used to select how the announcement is
96 done.
97 enum:
98 - layer2
99 - bgp
100 type: string
101 required:
102 - addresses
103 - protocol
104 type: object
105 status:
106 description: AddressPoolStatus defines the observed state of AddressPool.
107 type: object
108 required:
109 - spec
110 type: object
111 served: true
112 storage: false
113 subresources:
114 status: {}
115 - deprecated: true
116 deprecationWarning: metallb.io v1beta1 AddressPool is deprecated, consider using
117 IPAddressPool
118 name: v1beta1
119 schema:
120 openAPIV3Schema:
121 description: AddressPool represents a pool of IP addresses that can be allocated
122 to LoadBalancer services. AddressPool is deprecated and being replaced by
123 IPAddressPool.
124 properties:
125 apiVersion:
126 description: 'APIVersion defines the versioned schema of this representation
127 of an object. Servers should convert recognized schemas to the latest
128 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
129 type: string
130 kind:
131 description: 'Kind is a string value representing the REST resource this
132 object represents. Servers may infer this from the endpoint the client
133 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
134 type: string
135 metadata:
136 type: object
137 spec:
138 description: AddressPoolSpec defines the desired state of AddressPool.
139 properties:
140 addresses:
141 description: A list of IP address ranges over which MetalLB has authority.
142 You can list multiple ranges in a single pool, they will all share
143 the same settings. Each range can be either a CIDR prefix, or an
144 explicit start-end range of IPs.
145 items:
146 type: string
147 type: array
148 autoAssign:
149 default: true
150 description: AutoAssign flag used to prevent MetallB from automatic
151 allocation for a pool.
152 type: boolean
153 bgpAdvertisements:
154 description: Drives how an IP allocated from this pool should translated
155 into BGP announcements.
156 items:
157 properties:
158 aggregationLength:
159 default: 32
160 description: The aggregation-length advertisement option lets
161 you “roll up” the /32s into a larger prefix.
162 format: int32
163 minimum: 1
164 type: integer
165 aggregationLengthV6:
166 default: 128
167 description: Optional, defaults to 128 (i.e. no aggregation)
168 if not specified.
169 format: int32
170 type: integer
171 communities:
172 description: BGP communities to be associated with the given
173 advertisement.
174 items:
175 type: string
176 type: array
177 localPref:
178 description: BGP LOCAL_PREF attribute which is used by BGP best
179 path algorithm, Path with higher localpref is preferred over
180 one with lower localpref.
181 format: int32
182 type: integer
183 type: object
184 type: array
185 protocol:
186 description: Protocol can be used to select how the announcement is
187 done.
188 enum:
189 - layer2
190 - bgp
191 type: string
192 required:
193 - addresses
194 - protocol
195 type: object
196 status:
197 description: AddressPoolStatus defines the observed state of AddressPool.
198 type: object
199 required:
200 - spec
201 type: object
202 served: true
203 storage: true
204 subresources:
205 status: {}
206---
207apiVersion: apiextensions.k8s.io/v1
208kind: CustomResourceDefinition
209metadata:
210 annotations:
211 controller-gen.kubebuilder.io/version: v0.11.1
212 creationTimestamp: null
213 name: bfdprofiles.metallb.io
214spec:
215 group: metallb.io
216 names:
217 kind: BFDProfile
218 listKind: BFDProfileList
219 plural: bfdprofiles
220 singular: bfdprofile
221 scope: Namespaced
222 versions:
223 - additionalPrinterColumns:
224 - jsonPath: .spec.passiveMode
225 name: Passive Mode
226 type: boolean
227 - jsonPath: .spec.transmitInterval
228 name: Transmit Interval
229 type: integer
230 - jsonPath: .spec.receiveInterval
231 name: Receive Interval
232 type: integer
233 - jsonPath: .spec.detectMultiplier
234 name: Multiplier
235 type: integer
236 name: v1beta1
237 schema:
238 openAPIV3Schema:
239 description: BFDProfile represents the settings of the bfd session that can
240 be optionally associated with a BGP session.
241 properties:
242 apiVersion:
243 description: 'APIVersion defines the versioned schema of this representation
244 of an object. Servers should convert recognized schemas to the latest
245 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
246 type: string
247 kind:
248 description: 'Kind is a string value representing the REST resource this
249 object represents. Servers may infer this from the endpoint the client
250 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
251 type: string
252 metadata:
253 type: object
254 spec:
255 description: BFDProfileSpec defines the desired state of BFDProfile.
256 properties:
257 detectMultiplier:
258 description: Configures the detection multiplier to determine packet
259 loss. The remote transmission interval will be multiplied by this
260 value to determine the connection loss detection timer.
261 format: int32
262 maximum: 255
263 minimum: 2
264 type: integer
265 echoInterval:
266 description: Configures the minimal echo receive transmission interval
267 that this system is capable of handling in milliseconds. Defaults
268 to 50ms
269 format: int32
270 maximum: 60000
271 minimum: 10
272 type: integer
273 echoMode:
274 description: Enables or disables the echo transmission mode. This
275 mode is disabled by default, and not supported on multi hops setups.
276 type: boolean
277 minimumTtl:
278 description: 'For multi hop sessions only: configure the minimum expected
279 TTL for an incoming BFD control packet.'
280 format: int32
281 maximum: 254
282 minimum: 1
283 type: integer
284 passiveMode:
285 description: 'Mark session as passive: a passive session will not
286 attempt to start the connection and will wait for control packets
287 from peer before it begins replying.'
288 type: boolean
289 receiveInterval:
290 description: The minimum interval that this system is capable of receiving
291 control packets in milliseconds. Defaults to 300ms.
292 format: int32
293 maximum: 60000
294 minimum: 10
295 type: integer
296 transmitInterval:
297 description: The minimum transmission interval (less jitter) that
298 this system wants to use to send BFD control packets in milliseconds.
299 Defaults to 300ms
300 format: int32
301 maximum: 60000
302 minimum: 10
303 type: integer
304 type: object
305 status:
306 description: BFDProfileStatus defines the observed state of BFDProfile.
307 type: object
308 type: object
309 served: true
310 storage: true
311 subresources:
312 status: {}
313---
314apiVersion: apiextensions.k8s.io/v1
315kind: CustomResourceDefinition
316metadata:
317 annotations:
318 controller-gen.kubebuilder.io/version: v0.11.1
319 creationTimestamp: null
320 name: bgpadvertisements.metallb.io
321spec:
322 group: metallb.io
323 names:
324 kind: BGPAdvertisement
325 listKind: BGPAdvertisementList
326 plural: bgpadvertisements
327 singular: bgpadvertisement
328 scope: Namespaced
329 versions:
330 - additionalPrinterColumns:
331 - jsonPath: .spec.ipAddressPools
332 name: IPAddressPools
333 type: string
334 - jsonPath: .spec.ipAddressPoolSelectors
335 name: IPAddressPool Selectors
336 type: string
337 - jsonPath: .spec.peers
338 name: Peers
339 type: string
340 - jsonPath: .spec.nodeSelectors
341 name: Node Selectors
342 priority: 10
343 type: string
344 name: v1beta1
345 schema:
346 openAPIV3Schema:
347 description: BGPAdvertisement allows to advertise the IPs coming from the
348 selected IPAddressPools via BGP, setting the parameters of the BGP Advertisement.
349 properties:
350 apiVersion:
351 description: 'APIVersion defines the versioned schema of this representation
352 of an object. Servers should convert recognized schemas to the latest
353 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
354 type: string
355 kind:
356 description: 'Kind is a string value representing the REST resource this
357 object represents. Servers may infer this from the endpoint the client
358 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
359 type: string
360 metadata:
361 type: object
362 spec:
363 description: BGPAdvertisementSpec defines the desired state of BGPAdvertisement.
364 properties:
365 aggregationLength:
366 default: 32
367 description: The aggregation-length advertisement option lets you
368 “roll up” the /32s into a larger prefix. Defaults to 32. Works for
369 IPv4 addresses.
370 format: int32
371 minimum: 1
372 type: integer
373 aggregationLengthV6:
374 default: 128
375 description: The aggregation-length advertisement option lets you
376 “roll up” the /128s into a larger prefix. Defaults to 128. Works
377 for IPv6 addresses.
378 format: int32
379 type: integer
380 communities:
381 description: The BGP communities to be associated with the announcement.
382 Each item can be a community of the form 1234:1234 or the name of
383 an alias defined in the Community CRD.
384 items:
385 type: string
386 type: array
387 ipAddressPoolSelectors:
388 description: A selector for the IPAddressPools which would get advertised
389 via this advertisement. If no IPAddressPool is selected by this
390 or by the list, the advertisement is applied to all the IPAddressPools.
391 items:
392 description: A label selector is a label query over a set of resources.
393 The result of matchLabels and matchExpressions are ANDed. An empty
394 label selector matches all objects. A null label selector matches
395 no objects.
396 properties:
397 matchExpressions:
398 description: matchExpressions is a list of label selector requirements.
399 The requirements are ANDed.
400 items:
401 description: A label selector requirement is a selector that
402 contains values, a key, and an operator that relates the
403 key and values.
404 properties:
405 key:
406 description: key is the label key that the selector applies
407 to.
408 type: string
409 operator:
410 description: operator represents a key's relationship
411 to a set of values. Valid operators are In, NotIn, Exists
412 and DoesNotExist.
413 type: string
414 values:
415 description: values is an array of string values. If the
416 operator is In or NotIn, the values array must be non-empty.
417 If the operator is Exists or DoesNotExist, the values
418 array must be empty. This array is replaced during a
419 strategic merge patch.
420 items:
421 type: string
422 type: array
423 required:
424 - key
425 - operator
426 type: object
427 type: array
428 matchLabels:
429 additionalProperties:
430 type: string
431 description: matchLabels is a map of {key,value} pairs. A single
432 {key,value} in the matchLabels map is equivalent to an element
433 of matchExpressions, whose key field is "key", the operator
434 is "In", and the values array contains only "value". The requirements
435 are ANDed.
436 type: object
437 type: object
438 x-kubernetes-map-type: atomic
439 type: array
440 ipAddressPools:
441 description: The list of IPAddressPools to advertise via this advertisement,
442 selected by name.
443 items:
444 type: string
445 type: array
446 localPref:
447 description: The BGP LOCAL_PREF attribute which is used by BGP best
448 path algorithm, Path with higher localpref is preferred over one
449 with lower localpref.
450 format: int32
451 type: integer
452 nodeSelectors:
453 description: NodeSelectors allows to limit the nodes to announce as
454 next hops for the LoadBalancer IP. When empty, all the nodes having are
455 announced as next hops.
456 items:
457 description: A label selector is a label query over a set of resources.
458 The result of matchLabels and matchExpressions are ANDed. An empty
459 label selector matches all objects. A null label selector matches
460 no objects.
461 properties:
462 matchExpressions:
463 description: matchExpressions is a list of label selector requirements.
464 The requirements are ANDed.
465 items:
466 description: A label selector requirement is a selector that
467 contains values, a key, and an operator that relates the
468 key and values.
469 properties:
470 key:
471 description: key is the label key that the selector applies
472 to.
473 type: string
474 operator:
475 description: operator represents a key's relationship
476 to a set of values. Valid operators are In, NotIn, Exists
477 and DoesNotExist.
478 type: string
479 values:
480 description: values is an array of string values. If the
481 operator is In or NotIn, the values array must be non-empty.
482 If the operator is Exists or DoesNotExist, the values
483 array must be empty. This array is replaced during a
484 strategic merge patch.
485 items:
486 type: string
487 type: array
488 required:
489 - key
490 - operator
491 type: object
492 type: array
493 matchLabels:
494 additionalProperties:
495 type: string
496 description: matchLabels is a map of {key,value} pairs. A single
497 {key,value} in the matchLabels map is equivalent to an element
498 of matchExpressions, whose key field is "key", the operator
499 is "In", and the values array contains only "value". The requirements
500 are ANDed.
501 type: object
502 type: object
503 x-kubernetes-map-type: atomic
504 type: array
505 peers:
506 description: Peers limits the bgppeer to advertise the ips of the
507 selected pools to. When empty, the loadbalancer IP is announced
508 to all the BGPPeers configured.
509 items:
510 type: string
511 type: array
512 type: object
513 status:
514 description: BGPAdvertisementStatus defines the observed state of BGPAdvertisement.
515 type: object
516 type: object
517 served: true
518 storage: true
519 subresources:
520 status: {}
521---
522apiVersion: apiextensions.k8s.io/v1
523kind: CustomResourceDefinition
524metadata:
525 annotations:
526 controller-gen.kubebuilder.io/version: v0.11.1
527 name: bgppeers.metallb.io
528spec:
529 conversion:
530 strategy: Webhook
531 webhook:
532 clientConfig:
533 caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGWlRDQ0EwMmdBd0lCQWdJVU5GRW1XcTM3MVpKdGkrMmlSQzk1WmpBV1MxZ3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3UWpFTE1Ba0dBMVVFQmhNQ1dGZ3hGVEFUQmdOVkJBY01ERVJsWm1GMWJIUWdRMmwwZVRFY01Cb0dBMVVFDQpDZ3dUUkdWbVlYVnNkQ0JEYjIxd1lXNTVJRXgwWkRBZUZ3MHlNakEzTVRrd09UTXlNek5hRncweU1qQTRNVGd3DQpPVE15TXpOYU1FSXhDekFKQmdOVkJBWVRBbGhZTVJVd0V3WURWUVFIREF4RVpXWmhkV3gwSUVOcGRIa3hIREFhDQpCZ05WQkFvTUUwUmxabUYxYkhRZ1EyOXRjR0Z1ZVNCTWRHUXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDDQpEd0F3Z2dJS0FvSUNBUUNxVFpxMWZRcC9vYkdlenhES0o3OVB3Ny94azJwellualNzMlkzb1ZYSm5sRmM4YjVlDQpma2ZZQnY2bndscW1keW5PL2phWFBaQmRQSS82aFdOUDBkdVhadEtWU0NCUUpyZzEyOGNXb3F0MGNTN3pLb1VpDQpvcU1tQ0QvRXVBeFFNZjhRZDF2c1gvVllkZ0poVTZBRXJLZEpIaXpFOUJtUkNkTDBGMW1OVW55Rk82UnRtWFZUDQpidkxsTDVYeTc2R0FaQVBLOFB4aVlDa0NtbDdxN0VnTWNiOXlLWldCYmlxQ3VkTXE5TGJLNmdKNzF6YkZnSXV4DQo1L1pXK2JraTB2RlplWk9ZODUxb1psckFUNzJvMDI4NHNTWW9uN0pHZVZkY3NoUnh5R1VpSFpSTzdkaXZVTDVTDQpmM2JmSDFYbWY1ZDQzT0NWTWRuUUV2NWVaOG8zeWVLa3ZrbkZQUGVJMU9BbjdGbDlFRVNNR2dhOGFaSG1URSttDQpsLzlMSmdDYjBnQmtPT0M0WnV4bWh2aERKV1EzWnJCS3pMQlNUZXN0NWlLNVlwcXRWVVk2THRyRW9FelVTK1lsDQpwWndXY2VQWHlHeHM5ZURsR3lNVmQraW15Y3NTU1UvVno2Mmx6MnZCS21NTXBkYldDQWhud0RsRTVqU2dyMjRRDQp0eGNXLys2N3d5KzhuQlI3UXdqVTFITndVRjBzeERWdEwrZ1NHVERnSEVZSlhZelYvT05zMy94TkpoVFNPSkxNDQpoeXNVdyttaGdackdhbUdXcHVIVU1DUitvTWJzMTc1UkcrQjJnUFFHVytPTjJnUTRyOXN2b0ZBNHBBQm8xd1dLDQpRYjRhY3pmeVVscElBOVFoSmFsZEY3S3dPSHVlV3gwRUNrNXg0T2tvVDBvWVp0dzFiR0JjRGtaSmF3SURBUUFCDQpvMU13VVRBZEJnTlZIUTRFRmdRVW90UlNIUm9IWTEyRFZ4R0NCdEhpb1g2ZmVFQXdId1lEVlIwakJCZ3dGb0FVDQpvdFJTSFJvSFkxMkRWeEdDQnRIaW9YNmZlRUF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCDQpBUXNGQUFPQ0FnRUFSbkpsWWRjMTFHd0VxWnh6RDF2R3BDR2pDN2VWTlQ3aVY1d3IybXlybHdPYi9aUWFEa0xYDQpvVStaOVVXT1VlSXJTdzUydDdmQUpvVVAwSm5iYkMveVIrU1lqUGhvUXNiVHduOTc2ZldBWTduM3FMOXhCd1Y0DQphek41OXNjeUp0dlhMeUtOL2N5ak1ReDRLajBIMFg0bWJ6bzVZNUtzWWtYVU0vOEFPdWZMcEd0S1NGVGgrSEFDDQpab1Q5YnZHS25adnNHd0tYZFF0Wnh0akhaUjVqK3U3ZGtQOTJBT051RFNabS8rWVV4b2tBK09JbzdSR3BwSHNXDQo1ZTdNY0FTVXRtb1FORXd6dVFoVkJaRWQ1OGtKYjUrV0VWbGNzanlXNnRTbzErZ25tTWNqR1BsMWgxR2hVbjV4DQpFY0lWRnBIWXM5YWo1NmpBSjk1MVQvZjhMaWxmTlVnanBLQ0c1bnl0SUt3emxhOHNtdGlPdm1UNEpYbXBwSkI2DQo4bmdHRVluVjUrUTYwWFJ2OEhSSGp1VG9CRHVhaERrVDA2R1JGODU1d09FR2V4bkZpMXZYWUxLVllWb1V2MXRKDQo4dVdUR1pwNllDSVJldlBqbzg5ZytWTlJSaVFYUThJd0dybXE5c0RoVTlqTjA0SjdVL1RvRDFpNHE3VnlsRUc5DQorV1VGNkNLaEdBeTJIaEhwVncyTGFoOS9lUzdZMUZ1YURrWmhPZG1laG1BOCtqdHNZamJadnR5Mm1SWlF0UUZzDQpUU1VUUjREbUR2bVVPRVRmeStpRHdzK2RkWXVNTnJGeVVYV2dkMnpBQU4ydVl1UHFGY2pRcFNPODFzVTJTU3R3DQoxVzAyeUtYOGJEYmZFdjBzbUh3UzliQnFlSGo5NEM1Mjg0YXpsdTBmaUdpTm1OUEM4ckJLRmhBPQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ==
534 service:
535 name: webhook-service
536 namespace: metallb-system
537 path: /convert
538 conversionReviewVersions:
539 - v1beta1
540 - v1beta2
541 group: metallb.io
542 names:
543 kind: BGPPeer
544 listKind: BGPPeerList
545 plural: bgppeers
546 singular: bgppeer
547 scope: Namespaced
548 versions:
549 - additionalPrinterColumns:
550 - jsonPath: .spec.peerAddress
551 name: Address
552 type: string
553 - jsonPath: .spec.peerASN
554 name: ASN
555 type: string
556 - jsonPath: .spec.bfdProfile
557 name: BFD Profile
558 type: string
559 - jsonPath: .spec.ebgpMultiHop
560 name: Multi Hops
561 type: string
562 name: v1beta1
563 schema:
564 openAPIV3Schema:
565 description: BGPPeer is the Schema for the peers API.
566 properties:
567 apiVersion:
568 description: 'APIVersion defines the versioned schema of this representation
569 of an object. Servers should convert recognized schemas to the latest
570 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
571 type: string
572 kind:
573 description: 'Kind is a string value representing the REST resource this
574 object represents. Servers may infer this from the endpoint the client
575 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
576 type: string
577 metadata:
578 type: object
579 spec:
580 description: BGPPeerSpec defines the desired state of Peer.
581 properties:
582 bfdProfile:
583 type: string
584 ebgpMultiHop:
585 description: EBGP peer is multi-hops away
586 type: boolean
587 holdTime:
588 description: Requested BGP hold time, per RFC4271.
589 type: string
590 keepaliveTime:
591 description: Requested BGP keepalive time, per RFC4271.
592 type: string
593 myASN:
594 description: AS number to use for the local end of the session.
595 format: int32
596 maximum: 4294967295
597 minimum: 0
598 type: integer
599 nodeSelectors:
600 description: Only connect to this peer on nodes that match one of
601 these selectors.
602 items:
603 properties:
604 matchExpressions:
605 items:
606 properties:
607 key:
608 type: string
609 operator:
610 type: string
611 values:
612 items:
613 type: string
614 minItems: 1
615 type: array
616 required:
617 - key
618 - operator
619 - values
620 type: object
621 type: array
622 matchLabels:
623 additionalProperties:
624 type: string
625 type: object
626 type: object
627 type: array
628 password:
629 description: Authentication password for routers enforcing TCP MD5
630 authenticated sessions
631 type: string
632 peerASN:
633 description: AS number to expect from the remote end of the session.
634 format: int32
635 maximum: 4294967295
636 minimum: 0
637 type: integer
638 peerAddress:
639 description: Address to dial when establishing the session.
640 type: string
641 peerPort:
642 description: Port to dial when establishing the session.
643 maximum: 16384
644 minimum: 0
645 type: integer
646 routerID:
647 description: BGP router ID to advertise to the peer
648 type: string
649 sourceAddress:
650 description: Source address to use when establishing the session.
651 type: string
652 required:
653 - myASN
654 - peerASN
655 - peerAddress
656 type: object
657 status:
658 description: BGPPeerStatus defines the observed state of Peer.
659 type: object
660 type: object
661 served: true
662 storage: false
663 subresources:
664 status: {}
665 - additionalPrinterColumns:
666 - jsonPath: .spec.peerAddress
667 name: Address
668 type: string
669 - jsonPath: .spec.peerASN
670 name: ASN
671 type: string
672 - jsonPath: .spec.bfdProfile
673 name: BFD Profile
674 type: string
675 - jsonPath: .spec.ebgpMultiHop
676 name: Multi Hops
677 type: string
678 name: v1beta2
679 schema:
680 openAPIV3Schema:
681 description: BGPPeer is the Schema for the peers API.
682 properties:
683 apiVersion:
684 description: 'APIVersion defines the versioned schema of this representation
685 of an object. Servers should convert recognized schemas to the latest
686 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
687 type: string
688 kind:
689 description: 'Kind is a string value representing the REST resource this
690 object represents. Servers may infer this from the endpoint the client
691 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
692 type: string
693 metadata:
694 type: object
695 spec:
696 description: BGPPeerSpec defines the desired state of Peer.
697 properties:
698 bfdProfile:
699 description: The name of the BFD Profile to be used for the BFD session
700 associated to the BGP session. If not set, the BFD session won't
701 be set up.
702 type: string
703 ebgpMultiHop:
704 description: To set if the BGPPeer is multi-hops away. Needed for
705 FRR mode only.
706 type: boolean
707 holdTime:
708 description: Requested BGP hold time, per RFC4271.
709 type: string
710 keepaliveTime:
711 description: Requested BGP keepalive time, per RFC4271.
712 type: string
713 myASN:
714 description: AS number to use for the local end of the session.
715 format: int32
716 maximum: 4294967295
717 minimum: 0
718 type: integer
719 nodeSelectors:
720 description: Only connect to this peer on nodes that match one of
721 these selectors.
722 items:
723 description: A label selector is a label query over a set of resources.
724 The result of matchLabels and matchExpressions are ANDed. An empty
725 label selector matches all objects. A null label selector matches
726 no objects.
727 properties:
728 matchExpressions:
729 description: matchExpressions is a list of label selector requirements.
730 The requirements are ANDed.
731 items:
732 description: A label selector requirement is a selector that
733 contains values, a key, and an operator that relates the
734 key and values.
735 properties:
736 key:
737 description: key is the label key that the selector applies
738 to.
739 type: string
740 operator:
741 description: operator represents a key's relationship
742 to a set of values. Valid operators are In, NotIn, Exists
743 and DoesNotExist.
744 type: string
745 values:
746 description: values is an array of string values. If the
747 operator is In or NotIn, the values array must be non-empty.
748 If the operator is Exists or DoesNotExist, the values
749 array must be empty. This array is replaced during a
750 strategic merge patch.
751 items:
752 type: string
753 type: array
754 required:
755 - key
756 - operator
757 type: object
758 type: array
759 matchLabels:
760 additionalProperties:
761 type: string
762 description: matchLabels is a map of {key,value} pairs. A single
763 {key,value} in the matchLabels map is equivalent to an element
764 of matchExpressions, whose key field is "key", the operator
765 is "In", and the values array contains only "value". The requirements
766 are ANDed.
767 type: object
768 type: object
769 x-kubernetes-map-type: atomic
770 type: array
771 password:
772 description: Authentication password for routers enforcing TCP MD5
773 authenticated sessions
774 type: string
775 passwordSecret:
776 description: passwordSecret is name of the authentication secret for
777 BGP Peer. the secret must be of type "kubernetes.io/basic-auth",
778 and created in the same namespace as the MetalLB deployment. The
779 password is stored in the secret as the key "password".
780 properties:
781 name:
782 description: name is unique within a namespace to reference a
783 secret resource.
784 type: string
785 namespace:
786 description: namespace defines the space within which the secret
787 name must be unique.
788 type: string
789 type: object
790 x-kubernetes-map-type: atomic
791 peerASN:
792 description: AS number to expect from the remote end of the session.
793 format: int32
794 maximum: 4294967295
795 minimum: 0
796 type: integer
797 peerAddress:
798 description: Address to dial when establishing the session.
799 type: string
800 peerPort:
801 default: 179
802 description: Port to dial when establishing the session.
803 maximum: 16384
804 minimum: 0
805 type: integer
806 routerID:
807 description: BGP router ID to advertise to the peer
808 type: string
809 sourceAddress:
810 description: Source address to use when establishing the session.
811 type: string
812 vrf:
813 description: To set if we want to peer with the BGPPeer using an interface
814 belonging to a host vrf
815 type: string
816 required:
817 - myASN
818 - peerASN
819 - peerAddress
820 type: object
821 status:
822 description: BGPPeerStatus defines the observed state of Peer.
823 type: object
824 type: object
825 served: true
826 storage: true
827 subresources:
828 status: {}
829---
830apiVersion: apiextensions.k8s.io/v1
831kind: CustomResourceDefinition
832metadata:
833 annotations:
834 controller-gen.kubebuilder.io/version: v0.11.1
835 creationTimestamp: null
836 name: communities.metallb.io
837spec:
838 group: metallb.io
839 names:
840 kind: Community
841 listKind: CommunityList
842 plural: communities
843 singular: community
844 scope: Namespaced
845 versions:
846 - name: v1beta1
847 schema:
848 openAPIV3Schema:
849 description: Community is a collection of aliases for communities. Users can
850 define named aliases to be used in the BGPPeer CRD.
851 properties:
852 apiVersion:
853 description: 'APIVersion defines the versioned schema of this representation
854 of an object. Servers should convert recognized schemas to the latest
855 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
856 type: string
857 kind:
858 description: 'Kind is a string value representing the REST resource this
859 object represents. Servers may infer this from the endpoint the client
860 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
861 type: string
862 metadata:
863 type: object
864 spec:
865 description: CommunitySpec defines the desired state of Community.
866 properties:
867 communities:
868 items:
869 properties:
870 name:
871 description: The name of the alias for the community.
872 type: string
873 value:
874 description: The BGP community value corresponding to the given
875 name.
876 type: string
877 type: object
878 type: array
879 type: object
880 status:
881 description: CommunityStatus defines the observed state of Community.
882 type: object
883 type: object
884 served: true
885 storage: true
886 subresources:
887 status: {}
888---
889apiVersion: apiextensions.k8s.io/v1
890kind: CustomResourceDefinition
891metadata:
892 annotations:
893 controller-gen.kubebuilder.io/version: v0.11.1
894 creationTimestamp: null
895 name: ipaddresspools.metallb.io
896spec:
897 group: metallb.io
898 names:
899 kind: IPAddressPool
900 listKind: IPAddressPoolList
901 plural: ipaddresspools
902 singular: ipaddresspool
903 scope: Namespaced
904 versions:
905 - additionalPrinterColumns:
906 - jsonPath: .spec.autoAssign
907 name: Auto Assign
908 type: boolean
909 - jsonPath: .spec.avoidBuggyIPs
910 name: Avoid Buggy IPs
911 type: boolean
912 - jsonPath: .spec.addresses
913 name: Addresses
914 type: string
915 name: v1beta1
916 schema:
917 openAPIV3Schema:
918 description: IPAddressPool represents a pool of IP addresses that can be allocated
919 to LoadBalancer services.
920 properties:
921 apiVersion:
922 description: 'APIVersion defines the versioned schema of this representation
923 of an object. Servers should convert recognized schemas to the latest
924 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
925 type: string
926 kind:
927 description: 'Kind is a string value representing the REST resource this
928 object represents. Servers may infer this from the endpoint the client
929 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
930 type: string
931 metadata:
932 type: object
933 spec:
934 description: IPAddressPoolSpec defines the desired state of IPAddressPool.
935 properties:
936 addresses:
937 description: A list of IP address ranges over which MetalLB has authority.
938 You can list multiple ranges in a single pool, they will all share
939 the same settings. Each range can be either a CIDR prefix, or an
940 explicit start-end range of IPs.
941 items:
942 type: string
943 type: array
944 autoAssign:
945 default: true
946 description: AutoAssign flag used to prevent MetallB from automatic
947 allocation for a pool.
948 type: boolean
949 avoidBuggyIPs:
950 default: false
951 description: AvoidBuggyIPs prevents addresses ending with .0 and .255
952 to be used by a pool.
953 type: boolean
954 serviceAllocation:
955 description: AllocateTo makes ip pool allocation to specific namespace
956 and/or service. The controller will use the pool with lowest value
957 of priority in case of multiple matches. A pool with no priority
958 set will be used only if the pools with priority can't be used.
959 If multiple matching IPAddressPools are available it will check
960 for the availability of IPs sorting the matching IPAddressPools
961 by priority, starting from the highest to the lowest. If multiple
962 IPAddressPools have the same priority, choice will be random.
963 properties:
964 namespaceSelectors:
965 description: NamespaceSelectors list of label selectors to select
966 namespace(s) for ip pool, an alternative to using namespace
967 list.
968 items:
969 description: A label selector is a label query over a set of
970 resources. The result of matchLabels and matchExpressions
971 are ANDed. An empty label selector matches all objects. A
972 null label selector matches no objects.
973 properties:
974 matchExpressions:
975 description: matchExpressions is a list of label selector
976 requirements. The requirements are ANDed.
977 items:
978 description: A label selector requirement is a selector
979 that contains values, a key, and an operator that relates
980 the key and values.
981 properties:
982 key:
983 description: key is the label key that the selector
984 applies to.
985 type: string
986 operator:
987 description: operator represents a key's relationship
988 to a set of values. Valid operators are In, NotIn,
989 Exists and DoesNotExist.
990 type: string
991 values:
992 description: values is an array of string values.
993 If the operator is In or NotIn, the values array
994 must be non-empty. If the operator is Exists or
995 DoesNotExist, the values array must be empty. This
996 array is replaced during a strategic merge patch.
997 items:
998 type: string
999 type: array
1000 required:
1001 - key
1002 - operator
1003 type: object
1004 type: array
1005 matchLabels:
1006 additionalProperties:
1007 type: string
1008 description: matchLabels is a map of {key,value} pairs.
1009 A single {key,value} in the matchLabels map is equivalent
1010 to an element of matchExpressions, whose key field is
1011 "key", the operator is "In", and the values array contains
1012 only "value". The requirements are ANDed.
1013 type: object
1014 type: object
1015 x-kubernetes-map-type: atomic
1016 type: array
1017 namespaces:
1018 description: Namespaces list of namespace(s) on which ip pool
1019 can be attached.
1020 items:
1021 type: string
1022 type: array
1023 priority:
1024 description: Priority priority given for ip pool while ip allocation
1025 on a service.
1026 type: integer
1027 serviceSelectors:
1028 description: ServiceSelectors list of label selector to select
1029 service(s) for which ip pool can be used for ip allocation.
1030 items:
1031 description: A label selector is a label query over a set of
1032 resources. The result of matchLabels and matchExpressions
1033 are ANDed. An empty label selector matches all objects. A
1034 null label selector matches no objects.
1035 properties:
1036 matchExpressions:
1037 description: matchExpressions is a list of label selector
1038 requirements. The requirements are ANDed.
1039 items:
1040 description: A label selector requirement is a selector
1041 that contains values, a key, and an operator that relates
1042 the key and values.
1043 properties:
1044 key:
1045 description: key is the label key that the selector
1046 applies to.
1047 type: string
1048 operator:
1049 description: operator represents a key's relationship
1050 to a set of values. Valid operators are In, NotIn,
1051 Exists and DoesNotExist.
1052 type: string
1053 values:
1054 description: values is an array of string values.
1055 If the operator is In or NotIn, the values array
1056 must be non-empty. If the operator is Exists or
1057 DoesNotExist, the values array must be empty. This
1058 array is replaced during a strategic merge patch.
1059 items:
1060 type: string
1061 type: array
1062 required:
1063 - key
1064 - operator
1065 type: object
1066 type: array
1067 matchLabels:
1068 additionalProperties:
1069 type: string
1070 description: matchLabels is a map of {key,value} pairs.
1071 A single {key,value} in the matchLabels map is equivalent
1072 to an element of matchExpressions, whose key field is
1073 "key", the operator is "In", and the values array contains
1074 only "value". The requirements are ANDed.
1075 type: object
1076 type: object
1077 x-kubernetes-map-type: atomic
1078 type: array
1079 type: object
1080 required:
1081 - addresses
1082 type: object
1083 status:
1084 description: IPAddressPoolStatus defines the observed state of IPAddressPool.
1085 type: object
1086 required:
1087 - spec
1088 type: object
1089 served: true
1090 storage: true
1091 subresources:
1092 status: {}
1093---
1094apiVersion: apiextensions.k8s.io/v1
1095kind: CustomResourceDefinition
1096metadata:
1097 annotations:
1098 controller-gen.kubebuilder.io/version: v0.11.1
1099 creationTimestamp: null
1100 name: l2advertisements.metallb.io
1101spec:
1102 group: metallb.io
1103 names:
1104 kind: L2Advertisement
1105 listKind: L2AdvertisementList
1106 plural: l2advertisements
1107 singular: l2advertisement
1108 scope: Namespaced
1109 versions:
1110 - additionalPrinterColumns:
1111 - jsonPath: .spec.ipAddressPools
1112 name: IPAddressPools
1113 type: string
1114 - jsonPath: .spec.ipAddressPoolSelectors
1115 name: IPAddressPool Selectors
1116 type: string
1117 - jsonPath: .spec.interfaces
1118 name: Interfaces
1119 type: string
1120 - jsonPath: .spec.nodeSelectors
1121 name: Node Selectors
1122 priority: 10
1123 type: string
1124 name: v1beta1
1125 schema:
1126 openAPIV3Schema:
1127 description: L2Advertisement allows to advertise the LoadBalancer IPs provided
1128 by the selected pools via L2.
1129 properties:
1130 apiVersion:
1131 description: 'APIVersion defines the versioned schema of this representation
1132 of an object. Servers should convert recognized schemas to the latest
1133 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
1134 type: string
1135 kind:
1136 description: 'Kind is a string value representing the REST resource this
1137 object represents. Servers may infer this from the endpoint the client
1138 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
1139 type: string
1140 metadata:
1141 type: object
1142 spec:
1143 description: L2AdvertisementSpec defines the desired state of L2Advertisement.
1144 properties:
1145 interfaces:
1146 description: A list of interfaces to announce from. The LB IP will
1147 be announced only from these interfaces. If the field is not set,
1148 we advertise from all the interfaces on the host.
1149 items:
1150 type: string
1151 type: array
1152 ipAddressPoolSelectors:
1153 description: A selector for the IPAddressPools which would get advertised
1154 via this advertisement. If no IPAddressPool is selected by this
1155 or by the list, the advertisement is applied to all the IPAddressPools.
1156 items:
1157 description: A label selector is a label query over a set of resources.
1158 The result of matchLabels and matchExpressions are ANDed. An empty
1159 label selector matches all objects. A null label selector matches
1160 no objects.
1161 properties:
1162 matchExpressions:
1163 description: matchExpressions is a list of label selector requirements.
1164 The requirements are ANDed.
1165 items:
1166 description: A label selector requirement is a selector that
1167 contains values, a key, and an operator that relates the
1168 key and values.
1169 properties:
1170 key:
1171 description: key is the label key that the selector applies
1172 to.
1173 type: string
1174 operator:
1175 description: operator represents a key's relationship
1176 to a set of values. Valid operators are In, NotIn, Exists
1177 and DoesNotExist.
1178 type: string
1179 values:
1180 description: values is an array of string values. If the
1181 operator is In or NotIn, the values array must be non-empty.
1182 If the operator is Exists or DoesNotExist, the values
1183 array must be empty. This array is replaced during a
1184 strategic merge patch.
1185 items:
1186 type: string
1187 type: array
1188 required:
1189 - key
1190 - operator
1191 type: object
1192 type: array
1193 matchLabels:
1194 additionalProperties:
1195 type: string
1196 description: matchLabels is a map of {key,value} pairs. A single
1197 {key,value} in the matchLabels map is equivalent to an element
1198 of matchExpressions, whose key field is "key", the operator
1199 is "In", and the values array contains only "value". The requirements
1200 are ANDed.
1201 type: object
1202 type: object
1203 x-kubernetes-map-type: atomic
1204 type: array
1205 ipAddressPools:
1206 description: The list of IPAddressPools to advertise via this advertisement,
1207 selected by name.
1208 items:
1209 type: string
1210 type: array
1211 nodeSelectors:
1212 description: NodeSelectors allows to limit the nodes to announce as
1213 next hops for the LoadBalancer IP. When empty, all the nodes having are
1214 announced as next hops.
1215 items:
1216 description: A label selector is a label query over a set of resources.
1217 The result of matchLabels and matchExpressions are ANDed. An empty
1218 label selector matches all objects. A null label selector matches
1219 no objects.
1220 properties:
1221 matchExpressions:
1222 description: matchExpressions is a list of label selector requirements.
1223 The requirements are ANDed.
1224 items:
1225 description: A label selector requirement is a selector that
1226 contains values, a key, and an operator that relates the
1227 key and values.
1228 properties:
1229 key:
1230 description: key is the label key that the selector applies
1231 to.
1232 type: string
1233 operator:
1234 description: operator represents a key's relationship
1235 to a set of values. Valid operators are In, NotIn, Exists
1236 and DoesNotExist.
1237 type: string
1238 values:
1239 description: values is an array of string values. If the
1240 operator is In or NotIn, the values array must be non-empty.
1241 If the operator is Exists or DoesNotExist, the values
1242 array must be empty. This array is replaced during a
1243 strategic merge patch.
1244 items:
1245 type: string
1246 type: array
1247 required:
1248 - key
1249 - operator
1250 type: object
1251 type: array
1252 matchLabels:
1253 additionalProperties:
1254 type: string
1255 description: matchLabels is a map of {key,value} pairs. A single
1256 {key,value} in the matchLabels map is equivalent to an element
1257 of matchExpressions, whose key field is "key", the operator
1258 is "In", and the values array contains only "value". The requirements
1259 are ANDed.
1260 type: object
1261 type: object
1262 x-kubernetes-map-type: atomic
1263 type: array
1264 type: object
1265 status:
1266 description: L2AdvertisementStatus defines the observed state of L2Advertisement.
1267 type: object
1268 type: object
1269 served: true
1270 storage: true
1271 subresources:
1272 status: {}
1273---
1274apiVersion: v1
1275kind: ServiceAccount
1276metadata:
1277 labels:
1278 app: metallb
1279 name: controller
1280 namespace: metallb-system
1281---
1282apiVersion: v1
1283kind: ServiceAccount
1284metadata:
1285 labels:
1286 app: metallb
1287 name: speaker
1288 namespace: metallb-system
1289---
1290apiVersion: rbac.authorization.k8s.io/v1
1291kind: Role
1292metadata:
1293 labels:
1294 app: metallb
1295 name: controller
1296 namespace: metallb-system
1297rules:
1298- apiGroups:
1299 - ""
1300 resources:
1301 - secrets
1302 verbs:
1303 - create
1304 - delete
1305 - get
1306 - list
1307 - patch
1308 - update
1309 - watch
1310- apiGroups:
1311 - ""
1312 resourceNames:
1313 - memberlist
1314 resources:
1315 - secrets
1316 verbs:
1317 - list
1318- apiGroups:
1319 - apps
1320 resourceNames:
1321 - controller
1322 resources:
1323 - deployments
1324 verbs:
1325 - get
1326- apiGroups:
1327 - metallb.io
1328 resources:
1329 - bgppeers
1330 verbs:
1331 - get
1332 - list
1333- apiGroups:
1334 - metallb.io
1335 resources:
1336 - addresspools
1337 verbs:
1338 - get
1339 - list
1340 - watch
1341- apiGroups:
1342 - metallb.io
1343 resources:
1344 - bfdprofiles
1345 verbs:
1346 - get
1347 - list
1348 - watch
1349- apiGroups:
1350 - metallb.io
1351 resources:
1352 - ipaddresspools
1353 verbs:
1354 - get
1355 - list
1356 - watch
1357- apiGroups:
1358 - metallb.io
1359 resources:
1360 - bgpadvertisements
1361 verbs:
1362 - get
1363 - list
1364 - watch
1365- apiGroups:
1366 - metallb.io
1367 resources:
1368 - l2advertisements
1369 verbs:
1370 - get
1371 - list
1372 - watch
1373- apiGroups:
1374 - metallb.io
1375 resources:
1376 - communities
1377 verbs:
1378 - get
1379 - list
1380 - watch
1381---
1382apiVersion: rbac.authorization.k8s.io/v1
1383kind: Role
1384metadata:
1385 labels:
1386 app: metallb
1387 name: pod-lister
1388 namespace: metallb-system
1389rules:
1390- apiGroups:
1391 - ""
1392 resources:
1393 - pods
1394 verbs:
1395 - list
1396- apiGroups:
1397 - ""
1398 resources:
1399 - secrets
1400 verbs:
1401 - get
1402 - list
1403 - watch
1404- apiGroups:
1405 - metallb.io
1406 resources:
1407 - addresspools
1408 verbs:
1409 - get
1410 - list
1411 - watch
1412- apiGroups:
1413 - metallb.io
1414 resources:
1415 - bfdprofiles
1416 verbs:
1417 - get
1418 - list
1419 - watch
1420- apiGroups:
1421 - metallb.io
1422 resources:
1423 - bgppeers
1424 verbs:
1425 - get
1426 - list
1427 - watch
1428- apiGroups:
1429 - metallb.io
1430 resources:
1431 - l2advertisements
1432 verbs:
1433 - get
1434 - list
1435 - watch
1436- apiGroups:
1437 - metallb.io
1438 resources:
1439 - bgpadvertisements
1440 verbs:
1441 - get
1442 - list
1443 - watch
1444- apiGroups:
1445 - metallb.io
1446 resources:
1447 - ipaddresspools
1448 verbs:
1449 - get
1450 - list
1451 - watch
1452- apiGroups:
1453 - metallb.io
1454 resources:
1455 - communities
1456 verbs:
1457 - get
1458 - list
1459 - watch
1460---
1461apiVersion: rbac.authorization.k8s.io/v1
1462kind: ClusterRole
1463metadata:
1464 labels:
1465 app: metallb
1466 name: metallb-system:controller
1467rules:
1468- apiGroups:
1469 - ""
1470 resources:
1471 - services
1472 - namespaces
1473 verbs:
1474 - get
1475 - list
1476 - watch
1477- apiGroups:
1478 - ""
1479 resources:
1480 - services/status
1481 verbs:
1482 - update
1483- apiGroups:
1484 - ""
1485 resources:
1486 - events
1487 verbs:
1488 - create
1489 - patch
1490- apiGroups:
1491 - policy
1492 resourceNames:
1493 - controller
1494 resources:
1495 - podsecuritypolicies
1496 verbs:
1497 - use
1498- apiGroups:
1499 - admissionregistration.k8s.io
1500 resourceNames:
1501 - metallb-webhook-configuration
1502 resources:
1503 - validatingwebhookconfigurations
1504 - mutatingwebhookconfigurations
1505 verbs:
1506 - create
1507 - delete
1508 - get
1509 - list
1510 - patch
1511 - update
1512 - watch
1513- apiGroups:
1514 - admissionregistration.k8s.io
1515 resources:
1516 - validatingwebhookconfigurations
1517 - mutatingwebhookconfigurations
1518 verbs:
1519 - list
1520 - watch
1521- apiGroups:
1522 - apiextensions.k8s.io
1523 resourceNames:
1524 - addresspools.metallb.io
1525 - bfdprofiles.metallb.io
1526 - bgpadvertisements.metallb.io
1527 - bgppeers.metallb.io
1528 - ipaddresspools.metallb.io
1529 - l2advertisements.metallb.io
1530 - communities.metallb.io
1531 resources:
1532 - customresourcedefinitions
1533 verbs:
1534 - create
1535 - delete
1536 - get
1537 - list
1538 - patch
1539 - update
1540 - watch
1541- apiGroups:
1542 - apiextensions.k8s.io
1543 resources:
1544 - customresourcedefinitions
1545 verbs:
1546 - list
1547 - watch
1548---
1549apiVersion: rbac.authorization.k8s.io/v1
1550kind: ClusterRole
1551metadata:
1552 labels:
1553 app: metallb
1554 name: metallb-system:speaker
1555rules:
1556- apiGroups:
1557 - ""
1558 resources:
1559 - services
1560 - endpoints
1561 - nodes
1562 - namespaces
1563 verbs:
1564 - get
1565 - list
1566 - watch
1567- apiGroups:
1568 - discovery.k8s.io
1569 resources:
1570 - endpointslices
1571 verbs:
1572 - get
1573 - list
1574 - watch
1575- apiGroups:
1576 - ""
1577 resources:
1578 - events
1579 verbs:
1580 - create
1581 - patch
1582- apiGroups:
1583 - policy
1584 resourceNames:
1585 - speaker
1586 resources:
1587 - podsecuritypolicies
1588 verbs:
1589 - use
1590---
1591apiVersion: rbac.authorization.k8s.io/v1
1592kind: RoleBinding
1593metadata:
1594 labels:
1595 app: metallb
1596 name: controller
1597 namespace: metallb-system
1598roleRef:
1599 apiGroup: rbac.authorization.k8s.io
1600 kind: Role
1601 name: controller
1602subjects:
1603- kind: ServiceAccount
1604 name: controller
1605 namespace: metallb-system
1606---
1607apiVersion: rbac.authorization.k8s.io/v1
1608kind: RoleBinding
1609metadata:
1610 labels:
1611 app: metallb
1612 name: pod-lister
1613 namespace: metallb-system
1614roleRef:
1615 apiGroup: rbac.authorization.k8s.io
1616 kind: Role
1617 name: pod-lister
1618subjects:
1619- kind: ServiceAccount
1620 name: speaker
1621 namespace: metallb-system
1622---
1623apiVersion: rbac.authorization.k8s.io/v1
1624kind: ClusterRoleBinding
1625metadata:
1626 labels:
1627 app: metallb
1628 name: metallb-system:controller
1629roleRef:
1630 apiGroup: rbac.authorization.k8s.io
1631 kind: ClusterRole
1632 name: metallb-system:controller
1633subjects:
1634- kind: ServiceAccount
1635 name: controller
1636 namespace: metallb-system
1637---
1638apiVersion: rbac.authorization.k8s.io/v1
1639kind: ClusterRoleBinding
1640metadata:
1641 labels:
1642 app: metallb
1643 name: metallb-system:speaker
1644roleRef:
1645 apiGroup: rbac.authorization.k8s.io
1646 kind: ClusterRole
1647 name: metallb-system:speaker
1648subjects:
1649- kind: ServiceAccount
1650 name: speaker
1651 namespace: metallb-system
1652---
1653apiVersion: v1
1654kind: Secret
1655metadata:
1656 name: webhook-server-cert
1657 namespace: metallb-system
1658---
1659apiVersion: v1
1660kind: Service
1661metadata:
1662 name: webhook-service
1663 namespace: metallb-system
1664spec:
1665 ports:
1666 - port: 443
1667 targetPort: 9443
1668 selector:
1669 component: controller
1670---
1671apiVersion: apps/v1
1672kind: Deployment
1673metadata:
1674 labels:
1675 app: metallb
1676 component: controller
1677 name: controller
1678 namespace: metallb-system
1679spec:
1680 revisionHistoryLimit: 3
1681 selector:
1682 matchLabels:
1683 app: metallb
1684 component: controller
1685 template:
1686 metadata:
1687 annotations:
1688 prometheus.io/port: "7472"
1689 prometheus.io/scrape: "true"
1690 labels:
1691 app: metallb
1692 component: controller
1693 spec:
1694 containers:
1695 - args:
1696 - --port=7472
1697 - --log-level=info
1698 env:
1699 - name: METALLB_ML_SECRET_NAME
1700 value: memberlist
1701 - name: METALLB_DEPLOYMENT
1702 value: controller
1703 image: quay.io/metallb/controller:v0.13.9
1704 livenessProbe:
1705 failureThreshold: 3
1706 httpGet:
1707 path: /metrics
1708 port: monitoring
1709 initialDelaySeconds: 10
1710 periodSeconds: 10
1711 successThreshold: 1
1712 timeoutSeconds: 1
1713 name: controller
1714 ports:
1715 - containerPort: 7472
1716 name: monitoring
1717 - containerPort: 9443
1718 name: webhook-server
1719 protocol: TCP
1720 readinessProbe:
1721 failureThreshold: 3
1722 httpGet:
1723 path: /metrics
1724 port: monitoring
1725 initialDelaySeconds: 10
1726 periodSeconds: 10
1727 successThreshold: 1
1728 timeoutSeconds: 1
1729 securityContext:
1730 allowPrivilegeEscalation: false
1731 capabilities:
1732 drop:
1733 - all
1734 readOnlyRootFilesystem: true
1735 volumeMounts:
1736 - mountPath: /tmp/k8s-webhook-server/serving-certs
1737 name: cert
1738 readOnly: true
1739 nodeSelector:
1740 kubernetes.io/os: linux
1741 securityContext:
1742 fsGroup: 65534
1743 runAsNonRoot: true
1744 runAsUser: 65534
1745 serviceAccountName: controller
1746 terminationGracePeriodSeconds: 0
1747 volumes:
1748 - name: cert
1749 secret:
1750 defaultMode: 420
1751 secretName: webhook-server-cert
1752---
1753apiVersion: apps/v1
1754kind: DaemonSet
1755metadata:
1756 labels:
1757 app: metallb
1758 component: speaker
1759 name: speaker
1760 namespace: metallb-system
1761spec:
1762 selector:
1763 matchLabels:
1764 app: metallb
1765 component: speaker
1766 template:
1767 metadata:
1768 annotations:
1769 prometheus.io/port: "7472"
1770 prometheus.io/scrape: "true"
1771 labels:
1772 app: metallb
1773 component: speaker
1774 spec:
1775 containers:
1776 - args:
1777 - --port=7472
1778 - --log-level=info
1779 env:
1780 - name: METALLB_NODE_NAME
1781 valueFrom:
1782 fieldRef:
1783 fieldPath: spec.nodeName
1784 - name: METALLB_HOST
1785 valueFrom:
1786 fieldRef:
1787 fieldPath: status.hostIP
1788 - name: METALLB_ML_BIND_ADDR
1789 valueFrom:
1790 fieldRef:
1791 fieldPath: status.podIP
1792 - name: METALLB_ML_LABELS
1793 value: app=metallb,component=speaker
1794 - name: METALLB_ML_SECRET_KEY_PATH
1795 value: /etc/ml_secret_key
1796 image: quay.io/metallb/speaker:v0.13.9
1797 livenessProbe:
1798 failureThreshold: 3
1799 httpGet:
1800 path: /metrics
1801 port: monitoring
1802 initialDelaySeconds: 10
1803 periodSeconds: 10
1804 successThreshold: 1
1805 timeoutSeconds: 1
1806 name: speaker
1807 ports:
1808 - containerPort: 7472
1809 name: monitoring
1810 - containerPort: 7946
1811 name: memberlist-tcp
1812 - containerPort: 7946
1813 name: memberlist-udp
1814 protocol: UDP
1815 readinessProbe:
1816 failureThreshold: 3
1817 httpGet:
1818 path: /metrics
1819 port: monitoring
1820 initialDelaySeconds: 10
1821 periodSeconds: 10
1822 successThreshold: 1
1823 timeoutSeconds: 1
1824 securityContext:
1825 allowPrivilegeEscalation: false
1826 capabilities:
1827 add:
1828 - NET_RAW
1829 drop:
1830 - ALL
1831 readOnlyRootFilesystem: true
1832 volumeMounts:
1833 - mountPath: /etc/ml_secret_key
1834 name: memberlist
1835 readOnly: true
1836 hostNetwork: true
1837 nodeSelector:
1838 kubernetes.io/os: linux
1839 serviceAccountName: speaker
1840 terminationGracePeriodSeconds: 2
1841 tolerations:
1842 - effect: NoSchedule
1843 key: node-role.kubernetes.io/master
1844 operator: Exists
1845 - effect: NoSchedule
1846 key: node-role.kubernetes.io/control-plane
1847 operator: Exists
1848 volumes:
1849 - name: memberlist
1850 secret:
1851 defaultMode: 420
1852 secretName: memberlist
1853---
1854apiVersion: admissionregistration.k8s.io/v1
1855kind: ValidatingWebhookConfiguration
1856metadata:
1857 creationTimestamp: null
1858 name: metallb-webhook-configuration
1859webhooks:
1860- admissionReviewVersions:
1861 - v1
1862 clientConfig:
1863 service:
1864 name: webhook-service
1865 namespace: metallb-system
1866 path: /validate-metallb-io-v1beta2-bgppeer
1867 failurePolicy: Fail
1868 name: bgppeersvalidationwebhook.metallb.io
1869 rules:
1870 - apiGroups:
1871 - metallb.io
1872 apiVersions:
1873 - v1beta2
1874 operations:
1875 - CREATE
1876 - UPDATE
1877 resources:
1878 - bgppeers
1879 sideEffects: None
1880- admissionReviewVersions:
1881 - v1
1882 clientConfig:
1883 service:
1884 name: webhook-service
1885 namespace: metallb-system
1886 path: /validate-metallb-io-v1beta1-addresspool
1887 failurePolicy: Fail
1888 name: addresspoolvalidationwebhook.metallb.io
1889 rules:
1890 - apiGroups:
1891 - metallb.io
1892 apiVersions:
1893 - v1beta1
1894 operations:
1895 - CREATE
1896 - UPDATE
1897 resources:
1898 - addresspools
1899 sideEffects: None
1900- admissionReviewVersions:
1901 - v1
1902 clientConfig:
1903 service:
1904 name: webhook-service
1905 namespace: metallb-system
1906 path: /validate-metallb-io-v1beta1-bfdprofile
1907 failurePolicy: Fail
1908 name: bfdprofilevalidationwebhook.metallb.io
1909 rules:
1910 - apiGroups:
1911 - metallb.io
1912 apiVersions:
1913 - v1beta1
1914 operations:
1915 - CREATE
1916 - DELETE
1917 resources:
1918 - bfdprofiles
1919 sideEffects: None
1920- admissionReviewVersions:
1921 - v1
1922 clientConfig:
1923 service:
1924 name: webhook-service
1925 namespace: metallb-system
1926 path: /validate-metallb-io-v1beta1-bgpadvertisement
1927 failurePolicy: Fail
1928 name: bgpadvertisementvalidationwebhook.metallb.io
1929 rules:
1930 - apiGroups:
1931 - metallb.io
1932 apiVersions:
1933 - v1beta1
1934 operations:
1935 - CREATE
1936 - UPDATE
1937 resources:
1938 - bgpadvertisements
1939 sideEffects: None
1940- admissionReviewVersions:
1941 - v1
1942 clientConfig:
1943 service:
1944 name: webhook-service
1945 namespace: metallb-system
1946 path: /validate-metallb-io-v1beta1-community
1947 failurePolicy: Fail
1948 name: communityvalidationwebhook.metallb.io
1949 rules:
1950 - apiGroups:
1951 - metallb.io
1952 apiVersions:
1953 - v1beta1
1954 operations:
1955 - CREATE
1956 - UPDATE
1957 resources:
1958 - communities
1959 sideEffects: None
1960- admissionReviewVersions:
1961 - v1
1962 clientConfig:
1963 service:
1964 name: webhook-service
1965 namespace: metallb-system
1966 path: /validate-metallb-io-v1beta1-ipaddresspool
1967 failurePolicy: Fail
1968 name: ipaddresspoolvalidationwebhook.metallb.io
1969 rules:
1970 - apiGroups:
1971 - metallb.io
1972 apiVersions:
1973 - v1beta1
1974 operations:
1975 - CREATE
1976 - UPDATE
1977 resources:
1978 - ipaddresspools
1979 sideEffects: None
1980- admissionReviewVersions:
1981 - v1
1982 clientConfig:
1983 service:
1984 name: webhook-service
1985 namespace: metallb-system
1986 path: /validate-metallb-io-v1beta1-l2advertisement
1987 failurePolicy: Fail
1988 name: l2advertisementvalidationwebhook.metallb.io
1989 rules:
1990 - apiGroups:
1991 - metallb.io
1992 apiVersions:
1993 - v1beta1
1994 operations:
1995 - CREATE
1996 - UPDATE
1997 resources:
1998 - l2advertisements
1999 sideEffects: None
2000
2001# apiVersion: apiextensions.k8s.io/v1
2002# kind: CustomResourceDefinition
2003# metadata:
2004# annotations:
2005# controller-gen.kubebuilder.io/version: v0.11.1
2006# name: addresspools.metallb.io
2007# spec:
2008# conversion:
2009# strategy: Webhook
2010# webhook:
2011# clientConfig:
2012# caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGWlRDQ0EwMmdBd0lCQWdJVU5GRW1XcTM3MVpKdGkrMmlSQzk1WmpBV1MxZ3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3UWpFTE1Ba0dBMVVFQmhNQ1dGZ3hGVEFUQmdOVkJBY01ERVJsWm1GMWJIUWdRMmwwZVRFY01Cb0dBMVVFDQpDZ3dUUkdWbVlYVnNkQ0JEYjIxd1lXNTVJRXgwWkRBZUZ3MHlNakEzTVRrd09UTXlNek5hRncweU1qQTRNVGd3DQpPVE15TXpOYU1FSXhDekFKQmdOVkJBWVRBbGhZTVJVd0V3WURWUVFIREF4RVpXWmhkV3gwSUVOcGRIa3hIREFhDQpCZ05WQkFvTUUwUmxabUYxYkhRZ1EyOXRjR0Z1ZVNCTWRHUXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDDQpEd0F3Z2dJS0FvSUNBUUNxVFpxMWZRcC9vYkdlenhES0o3OVB3Ny94azJwellualNzMlkzb1ZYSm5sRmM4YjVlDQpma2ZZQnY2bndscW1keW5PL2phWFBaQmRQSS82aFdOUDBkdVhadEtWU0NCUUpyZzEyOGNXb3F0MGNTN3pLb1VpDQpvcU1tQ0QvRXVBeFFNZjhRZDF2c1gvVllkZ0poVTZBRXJLZEpIaXpFOUJtUkNkTDBGMW1OVW55Rk82UnRtWFZUDQpidkxsTDVYeTc2R0FaQVBLOFB4aVlDa0NtbDdxN0VnTWNiOXlLWldCYmlxQ3VkTXE5TGJLNmdKNzF6YkZnSXV4DQo1L1pXK2JraTB2RlplWk9ZODUxb1psckFUNzJvMDI4NHNTWW9uN0pHZVZkY3NoUnh5R1VpSFpSTzdkaXZVTDVTDQpmM2JmSDFYbWY1ZDQzT0NWTWRuUUV2NWVaOG8zeWVLa3ZrbkZQUGVJMU9BbjdGbDlFRVNNR2dhOGFaSG1URSttDQpsLzlMSmdDYjBnQmtPT0M0WnV4bWh2aERKV1EzWnJCS3pMQlNUZXN0NWlLNVlwcXRWVVk2THRyRW9FelVTK1lsDQpwWndXY2VQWHlHeHM5ZURsR3lNVmQraW15Y3NTU1UvVno2Mmx6MnZCS21NTXBkYldDQWhud0RsRTVqU2dyMjRRDQp0eGNXLys2N3d5KzhuQlI3UXdqVTFITndVRjBzeERWdEwrZ1NHVERnSEVZSlhZelYvT05zMy94TkpoVFNPSkxNDQpoeXNVdyttaGdackdhbUdXcHVIVU1DUitvTWJzMTc1UkcrQjJnUFFHVytPTjJnUTRyOXN2b0ZBNHBBQm8xd1dLDQpRYjRhY3pmeVVscElBOVFoSmFsZEY3S3dPSHVlV3gwRUNrNXg0T2tvVDBvWVp0dzFiR0JjRGtaSmF3SURBUUFCDQpvMU13VVRBZEJnTlZIUTRFRmdRVW90UlNIUm9IWTEyRFZ4R0NCdEhpb1g2ZmVFQXdId1lEVlIwakJCZ3dGb0FVDQpvdFJTSFJvSFkxMkRWeEdDQnRIaW9YNmZlRUF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCDQpBUXNGQUFPQ0FnRUFSbkpsWWRjMTFHd0VxWnh6RDF2R3BDR2pDN2VWTlQ3aVY1d3IybXlybHdPYi9aUWFEa0xYDQpvVStaOVVXT1VlSXJTdzUydDdmQUpvVVAwSm5iYkMveVIrU1lqUGhvUXNiVHduOTc2ZldBWTduM3FMOXhCd1Y0DQphek41OXNjeUp0dlhMeUtOL2N5ak1ReDRLajBIMFg0bWJ6bzVZNUtzWWtYVU0vOEFPdWZMcEd0S1NGVGgrSEFDDQpab1Q5YnZHS25adnNHd0tYZFF0Wnh0akhaUjVqK3U3ZGtQOTJBT051RFNabS8rWVV4b2tBK09JbzdSR3BwSHNXDQo1ZTdNY0FTVXRtb1FORXd6dVFoVkJaRWQ1OGtKYjUrV0VWbGNzanlXNnRTbzErZ25tTWNqR1BsMWgxR2hVbjV4DQpFY0lWRnBIWXM5YWo1NmpBSjk1MVQvZjhMaWxmTlVnanBLQ0c1bnl0SUt3emxhOHNtdGlPdm1UNEpYbXBwSkI2DQo4bmdHRVluVjUrUTYwWFJ2OEhSSGp1VG9CRHVhaERrVDA2R1JGODU1d09FR2V4bkZpMXZYWUxLVllWb1V2MXRKDQo4dVdUR1pwNllDSVJldlBqbzg5ZytWTlJSaVFYUThJd0dybXE5c0RoVTlqTjA0SjdVL1RvRDFpNHE3VnlsRUc5DQorV1VGNkNLaEdBeTJIaEhwVncyTGFoOS9lUzdZMUZ1YURrWmhPZG1laG1BOCtqdHNZamJadnR5Mm1SWlF0UUZzDQpUU1VUUjREbUR2bVVPRVRmeStpRHdzK2RkWXVNTnJGeVVYV2dkMnpBQU4ydVl1UHFGY2pRcFNPODFzVTJTU3R3DQoxVzAyeUtYOGJEYmZFdjBzbUh3UzliQnFlSGo5NEM1Mjg0YXpsdTBmaUdpTm1OUEM4ckJLRmhBPQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ==
2013# service:
2014# name: webhook-service
2015# namespace: {{ .Release.Namespace }}
2016# path: /convert
2017# conversionReviewVersions:
2018# - v1alpha1
2019# - v1beta1
2020# group: metallb.io
2021# names:
2022# kind: AddressPool
2023# listKind: AddressPoolList
2024# plural: addresspools
2025# singular: addresspool
2026# scope: Namespaced
2027# versions:
2028# - deprecated: true
2029# deprecationWarning: metallb.io v1alpha1 AddressPool is deprecated
2030# name: v1alpha1
2031# schema:
2032# openAPIV3Schema:
2033# description: AddressPool is the Schema for the addresspools API.
2034# properties:
2035# apiVersion:
2036# description: 'APIVersion defines the versioned schema of this representation
2037# of an object. Servers should convert recognized schemas to the latest
2038# internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
2039# type: string
2040# kind:
2041# description: 'Kind is a string value representing the REST resource this
2042# object represents. Servers may infer this from the endpoint the client
2043# submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
2044# type: string
2045# metadata:
2046# type: object
2047# spec:
2048# description: AddressPoolSpec defines the desired state of AddressPool.
2049# properties:
2050# addresses:
2051# description: A list of IP address ranges over which MetalLB has authority.
2052# You can list multiple ranges in a single pool, they will all share
2053# the same settings. Each range can be either a CIDR prefix, or an
2054# explicit start-end range of IPs.
2055# items:
2056# type: string
2057# type: array
2058# autoAssign:
2059# default: true
2060# description: AutoAssign flag used to prevent MetallB from automatic
2061# allocation for a pool.
2062# type: boolean
2063# bgpAdvertisements:
2064# description: When an IP is allocated from this pool, how should it
2065# be translated into BGP announcements?
2066# items:
2067# properties:
2068# aggregationLength:
2069# default: 32
2070# description: The aggregation-length advertisement option lets
2071# you “roll up” the /32s into a larger prefix.
2072# format: int32
2073# minimum: 1
2074# type: integer
2075# aggregationLengthV6:
2076# default: 128
2077# description: Optional, defaults to 128 (i.e. no aggregation)
2078# if not specified.
2079# format: int32
2080# type: integer
2081# communities:
2082# description: BGP communities
2083# items:
2084# type: string
2085# type: array
2086# localPref:
2087# description: BGP LOCAL_PREF attribute which is used by BGP best
2088# path algorithm, Path with higher localpref is preferred over
2089# one with lower localpref.
2090# format: int32
2091# type: integer
2092# type: object
2093# type: array
2094# protocol:
2095# description: Protocol can be used to select how the announcement is
2096# done.
2097# enum:
2098# - layer2
2099# - bgp
2100# type: string
2101# required:
2102# - addresses
2103# - protocol
2104# type: object
2105# status:
2106# description: AddressPoolStatus defines the observed state of AddressPool.
2107# type: object
2108# required:
2109# - spec
2110# type: object
2111# served: true
2112# storage: false
2113# subresources:
2114# status: {}
2115# - deprecated: true
2116# deprecationWarning: metallb.io v1beta1 AddressPool is deprecated, consider using
2117# IPAddressPool
2118# name: v1beta1
2119# schema:
2120# openAPIV3Schema:
2121# description: AddressPool represents a pool of IP addresses that can be allocated
2122# to LoadBalancer services. AddressPool is deprecated and being replaced by
2123# IPAddressPool.
2124# properties:
2125# apiVersion:
2126# description: 'APIVersion defines the versioned schema of this representation
2127# of an object. Servers should convert recognized schemas to the latest
2128# internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
2129# type: string
2130# kind:
2131# description: 'Kind is a string value representing the REST resource this
2132# object represents. Servers may infer this from the endpoint the client
2133# submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
2134# type: string
2135# metadata:
2136# type: object
2137# spec:
2138# description: AddressPoolSpec defines the desired state of AddressPool.
2139# properties:
2140# addresses:
2141# description: A list of IP address ranges over which MetalLB has authority.
2142# You can list multiple ranges in a single pool, they will all share
2143# the same settings. Each range can be either a CIDR prefix, or an
2144# explicit start-end range of IPs.
2145# items:
2146# type: string
2147# type: array
2148# autoAssign:
2149# default: true
2150# description: AutoAssign flag used to prevent MetallB from automatic
2151# allocation for a pool.
2152# type: boolean
2153# bgpAdvertisements:
2154# description: Drives how an IP allocated from this pool should translated
2155# into BGP announcements.
2156# items:
2157# properties:
2158# aggregationLength:
2159# default: 32
2160# description: The aggregation-length advertisement option lets
2161# you “roll up” the /32s into a larger prefix.
2162# format: int32
2163# minimum: 1
2164# type: integer
2165# aggregationLengthV6:
2166# default: 128
2167# description: Optional, defaults to 128 (i.e. no aggregation)
2168# if not specified.
2169# format: int32
2170# type: integer
2171# communities:
2172# description: BGP communities to be associated with the given
2173# advertisement.
2174# items:
2175# type: string
2176# type: array
2177# localPref:
2178# description: BGP LOCAL_PREF attribute which is used by BGP best
2179# path algorithm, Path with higher localpref is preferred over
2180# one with lower localpref.
2181# format: int32
2182# type: integer
2183# type: object
2184# type: array
2185# protocol:
2186# description: Protocol can be used to select how the announcement is
2187# done.
2188# enum:
2189# - layer2
2190# - bgp
2191# type: string
2192# required:
2193# - addresses
2194# - protocol
2195# type: object
2196# status:
2197# description: AddressPoolStatus defines the observed state of AddressPool.
2198# type: object
2199# required:
2200# - spec
2201# type: object
2202# served: true
2203# storage: true
2204# subresources:
2205# status: {}
2206# ---
2207# apiVersion: apiextensions.k8s.io/v1
2208# kind: CustomResourceDefinition
2209# metadata:
2210# annotations:
2211# controller-gen.kubebuilder.io/version: v0.11.1
2212# creationTimestamp: null
2213# name: bfdprofiles.metallb.io
2214# spec:
2215# group: metallb.io
2216# names:
2217# kind: BFDProfile
2218# listKind: BFDProfileList
2219# plural: bfdprofiles
2220# singular: bfdprofile
2221# scope: Namespaced
2222# versions:
2223# - additionalPrinterColumns:
2224# - jsonPath: .spec.passiveMode
2225# name: Passive Mode
2226# type: boolean
2227# - jsonPath: .spec.transmitInterval
2228# name: Transmit Interval
2229# type: integer
2230# - jsonPath: .spec.receiveInterval
2231# name: Receive Interval
2232# type: integer
2233# - jsonPath: .spec.detectMultiplier
2234# name: Multiplier
2235# type: integer
2236# name: v1beta1
2237# schema:
2238# openAPIV3Schema:
2239# description: BFDProfile represents the settings of the bfd session that can
2240# be optionally associated with a BGP session.
2241# properties:
2242# apiVersion:
2243# description: 'APIVersion defines the versioned schema of this representation
2244# of an object. Servers should convert recognized schemas to the latest
2245# internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
2246# type: string
2247# kind:
2248# description: 'Kind is a string value representing the REST resource this
2249# object represents. Servers may infer this from the endpoint the client
2250# submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
2251# type: string
2252# metadata:
2253# type: object
2254# spec:
2255# description: BFDProfileSpec defines the desired state of BFDProfile.
2256# properties:
2257# detectMultiplier:
2258# description: Configures the detection multiplier to determine packet
2259# loss. The remote transmission interval will be multiplied by this
2260# value to determine the connection loss detection timer.
2261# format: int32
2262# maximum: 255
2263# minimum: 2
2264# type: integer
2265# echoInterval:
2266# description: Configures the minimal echo receive transmission interval
2267# that this system is capable of handling in milliseconds. Defaults
2268# to 50ms
2269# format: int32
2270# maximum: 60000
2271# minimum: 10
2272# type: integer
2273# echoMode:
2274# description: Enables or disables the echo transmission mode. This
2275# mode is disabled by default, and not supported on multi hops setups.
2276# type: boolean
2277# minimumTtl:
2278# description: 'For multi hop sessions only: configure the minimum expected
2279# TTL for an incoming BFD control packet.'
2280# format: int32
2281# maximum: 254
2282# minimum: 1
2283# type: integer
2284# passiveMode:
2285# description: 'Mark session as passive: a passive session will not
2286# attempt to start the connection and will wait for control packets
2287# from peer before it begins replying.'
2288# type: boolean
2289# receiveInterval:
2290# description: The minimum interval that this system is capable of receiving
2291# control packets in milliseconds. Defaults to 300ms.
2292# format: int32
2293# maximum: 60000
2294# minimum: 10
2295# type: integer
2296# transmitInterval:
2297# description: The minimum transmission interval (less jitter) that
2298# this system wants to use to send BFD control packets in milliseconds.
2299# Defaults to 300ms
2300# format: int32
2301# maximum: 60000
2302# minimum: 10
2303# type: integer
2304# type: object
2305# status:
2306# description: BFDProfileStatus defines the observed state of BFDProfile.
2307# type: object
2308# type: object
2309# served: true
2310# storage: true
2311# subresources:
2312# status: {}
2313# ---
2314# apiVersion: apiextensions.k8s.io/v1
2315# kind: CustomResourceDefinition
2316# metadata:
2317# annotations:
2318# controller-gen.kubebuilder.io/version: v0.11.1
2319# creationTimestamp: null
2320# name: bgpadvertisements.metallb.io
2321# spec:
2322# group: metallb.io
2323# names:
2324# kind: BGPAdvertisement
2325# listKind: BGPAdvertisementList
2326# plural: bgpadvertisements
2327# singular: bgpadvertisement
2328# scope: Namespaced
2329# versions:
2330# - additionalPrinterColumns:
2331# - jsonPath: .spec.ipAddressPools
2332# name: IPAddressPools
2333# type: string
2334# - jsonPath: .spec.ipAddressPoolSelectors
2335# name: IPAddressPool Selectors
2336# type: string
2337# - jsonPath: .spec.peers
2338# name: Peers
2339# type: string
2340# - jsonPath: .spec.nodeSelectors
2341# name: Node Selectors
2342# priority: 10
2343# type: string
2344# name: v1beta1
2345# schema:
2346# openAPIV3Schema:
2347# description: BGPAdvertisement allows to advertise the IPs coming from the
2348# selected IPAddressPools via BGP, setting the parameters of the BGP Advertisement.
2349# properties:
2350# apiVersion:
2351# description: 'APIVersion defines the versioned schema of this representation
2352# of an object. Servers should convert recognized schemas to the latest
2353# internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
2354# type: string
2355# kind:
2356# description: 'Kind is a string value representing the REST resource this
2357# object represents. Servers may infer this from the endpoint the client
2358# submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
2359# type: string
2360# metadata:
2361# type: object
2362# spec:
2363# description: BGPAdvertisementSpec defines the desired state of BGPAdvertisement.
2364# properties:
2365# aggregationLength:
2366# default: 32
2367# description: The aggregation-length advertisement option lets you
2368# “roll up” the /32s into a larger prefix. Defaults to 32. Works for
2369# IPv4 addresses.
2370# format: int32
2371# minimum: 1
2372# type: integer
2373# aggregationLengthV6:
2374# default: 128
2375# description: The aggregation-length advertisement option lets you
2376# “roll up” the /128s into a larger prefix. Defaults to 128. Works
2377# for IPv6 addresses.
2378# format: int32
2379# type: integer
2380# communities:
2381# description: The BGP communities to be associated with the announcement.
2382# Each item can be a community of the form 1234:1234 or the name of
2383# an alias defined in the Community CRD.
2384# items:
2385# type: string
2386# type: array
2387# ipAddressPoolSelectors:
2388# description: A selector for the IPAddressPools which would get advertised
2389# via this advertisement. If no IPAddressPool is selected by this
2390# or by the list, the advertisement is applied to all the IPAddressPools.
2391# items:
2392# description: A label selector is a label query over a set of resources.
2393# The result of matchLabels and matchExpressions are ANDed. An empty
2394# label selector matches all objects. A null label selector matches
2395# no objects.
2396# properties:
2397# matchExpressions:
2398# description: matchExpressions is a list of label selector requirements.
2399# The requirements are ANDed.
2400# items:
2401# description: A label selector requirement is a selector that
2402# contains values, a key, and an operator that relates the
2403# key and values.
2404# properties:
2405# key:
2406# description: key is the label key that the selector applies
2407# to.
2408# type: string
2409# operator:
2410# description: operator represents a key's relationship
2411# to a set of values. Valid operators are In, NotIn, Exists
2412# and DoesNotExist.
2413# type: string
2414# values:
2415# description: values is an array of string values. If the
2416# operator is In or NotIn, the values array must be non-empty.
2417# If the operator is Exists or DoesNotExist, the values
2418# array must be empty. This array is replaced during a
2419# strategic merge patch.
2420# items:
2421# type: string
2422# type: array
2423# required:
2424# - key
2425# - operator
2426# type: object
2427# type: array
2428# matchLabels:
2429# additionalProperties:
2430# type: string
2431# description: matchLabels is a map of {key,value} pairs. A single
2432# {key,value} in the matchLabels map is equivalent to an element
2433# of matchExpressions, whose key field is "key", the operator
2434# is "In", and the values array contains only "value". The requirements
2435# are ANDed.
2436# type: object
2437# type: object
2438# x-kubernetes-map-type: atomic
2439# type: array
2440# ipAddressPools:
2441# description: The list of IPAddressPools to advertise via this advertisement,
2442# selected by name.
2443# items:
2444# type: string
2445# type: array
2446# localPref:
2447# description: The BGP LOCAL_PREF attribute which is used by BGP best
2448# path algorithm, Path with higher localpref is preferred over one
2449# with lower localpref.
2450# format: int32
2451# type: integer
2452# nodeSelectors:
2453# description: NodeSelectors allows to limit the nodes to announce as
2454# next hops for the LoadBalancer IP. When empty, all the nodes having are
2455# announced as next hops.
2456# items:
2457# description: A label selector is a label query over a set of resources.
2458# The result of matchLabels and matchExpressions are ANDed. An empty
2459# label selector matches all objects. A null label selector matches
2460# no objects.
2461# properties:
2462# matchExpressions:
2463# description: matchExpressions is a list of label selector requirements.
2464# The requirements are ANDed.
2465# items:
2466# description: A label selector requirement is a selector that
2467# contains values, a key, and an operator that relates the
2468# key and values.
2469# properties:
2470# key:
2471# description: key is the label key that the selector applies
2472# to.
2473# type: string
2474# operator:
2475# description: operator represents a key's relationship
2476# to a set of values. Valid operators are In, NotIn, Exists
2477# and DoesNotExist.
2478# type: string
2479# values:
2480# description: values is an array of string values. If the
2481# operator is In or NotIn, the values array must be non-empty.
2482# If the operator is Exists or DoesNotExist, the values
2483# array must be empty. This array is replaced during a
2484# strategic merge patch.
2485# items:
2486# type: string
2487# type: array
2488# required:
2489# - key
2490# - operator
2491# type: object
2492# type: array
2493# matchLabels:
2494# additionalProperties:
2495# type: string
2496# description: matchLabels is a map of {key,value} pairs. A single
2497# {key,value} in the matchLabels map is equivalent to an element
2498# of matchExpressions, whose key field is "key", the operator
2499# is "In", and the values array contains only "value". The requirements
2500# are ANDed.
2501# type: object
2502# type: object
2503# x-kubernetes-map-type: atomic
2504# type: array
2505# peers:
2506# description: Peers limits the bgppeer to advertise the ips of the
2507# selected pools to. When empty, the loadbalancer IP is announced
2508# to all the BGPPeers configured.
2509# items:
2510# type: string
2511# type: array
2512# type: object
2513# status:
2514# description: BGPAdvertisementStatus defines the observed state of BGPAdvertisement.
2515# type: object
2516# type: object
2517# served: true
2518# storage: true
2519# subresources:
2520# status: {}
2521# ---
2522# apiVersion: apiextensions.k8s.io/v1
2523# kind: CustomResourceDefinition
2524# metadata:
2525# annotations:
2526# controller-gen.kubebuilder.io/version: v0.11.1
2527# name: bgppeers.metallb.io
2528# spec:
2529# conversion:
2530# strategy: Webhook
2531# webhook:
2532# clientConfig:
2533# caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGWlRDQ0EwMmdBd0lCQWdJVU5GRW1XcTM3MVpKdGkrMmlSQzk1WmpBV1MxZ3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3UWpFTE1Ba0dBMVVFQmhNQ1dGZ3hGVEFUQmdOVkJBY01ERVJsWm1GMWJIUWdRMmwwZVRFY01Cb0dBMVVFDQpDZ3dUUkdWbVlYVnNkQ0JEYjIxd1lXNTVJRXgwWkRBZUZ3MHlNakEzTVRrd09UTXlNek5hRncweU1qQTRNVGd3DQpPVE15TXpOYU1FSXhDekFKQmdOVkJBWVRBbGhZTVJVd0V3WURWUVFIREF4RVpXWmhkV3gwSUVOcGRIa3hIREFhDQpCZ05WQkFvTUUwUmxabUYxYkhRZ1EyOXRjR0Z1ZVNCTWRHUXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDDQpEd0F3Z2dJS0FvSUNBUUNxVFpxMWZRcC9vYkdlenhES0o3OVB3Ny94azJwellualNzMlkzb1ZYSm5sRmM4YjVlDQpma2ZZQnY2bndscW1keW5PL2phWFBaQmRQSS82aFdOUDBkdVhadEtWU0NCUUpyZzEyOGNXb3F0MGNTN3pLb1VpDQpvcU1tQ0QvRXVBeFFNZjhRZDF2c1gvVllkZ0poVTZBRXJLZEpIaXpFOUJtUkNkTDBGMW1OVW55Rk82UnRtWFZUDQpidkxsTDVYeTc2R0FaQVBLOFB4aVlDa0NtbDdxN0VnTWNiOXlLWldCYmlxQ3VkTXE5TGJLNmdKNzF6YkZnSXV4DQo1L1pXK2JraTB2RlplWk9ZODUxb1psckFUNzJvMDI4NHNTWW9uN0pHZVZkY3NoUnh5R1VpSFpSTzdkaXZVTDVTDQpmM2JmSDFYbWY1ZDQzT0NWTWRuUUV2NWVaOG8zeWVLa3ZrbkZQUGVJMU9BbjdGbDlFRVNNR2dhOGFaSG1URSttDQpsLzlMSmdDYjBnQmtPT0M0WnV4bWh2aERKV1EzWnJCS3pMQlNUZXN0NWlLNVlwcXRWVVk2THRyRW9FelVTK1lsDQpwWndXY2VQWHlHeHM5ZURsR3lNVmQraW15Y3NTU1UvVno2Mmx6MnZCS21NTXBkYldDQWhud0RsRTVqU2dyMjRRDQp0eGNXLys2N3d5KzhuQlI3UXdqVTFITndVRjBzeERWdEwrZ1NHVERnSEVZSlhZelYvT05zMy94TkpoVFNPSkxNDQpoeXNVdyttaGdackdhbUdXcHVIVU1DUitvTWJzMTc1UkcrQjJnUFFHVytPTjJnUTRyOXN2b0ZBNHBBQm8xd1dLDQpRYjRhY3pmeVVscElBOVFoSmFsZEY3S3dPSHVlV3gwRUNrNXg0T2tvVDBvWVp0dzFiR0JjRGtaSmF3SURBUUFCDQpvMU13VVRBZEJnTlZIUTRFRmdRVW90UlNIUm9IWTEyRFZ4R0NCdEhpb1g2ZmVFQXdId1lEVlIwakJCZ3dGb0FVDQpvdFJTSFJvSFkxMkRWeEdDQnRIaW9YNmZlRUF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCDQpBUXNGQUFPQ0FnRUFSbkpsWWRjMTFHd0VxWnh6RDF2R3BDR2pDN2VWTlQ3aVY1d3IybXlybHdPYi9aUWFEa0xYDQpvVStaOVVXT1VlSXJTdzUydDdmQUpvVVAwSm5iYkMveVIrU1lqUGhvUXNiVHduOTc2ZldBWTduM3FMOXhCd1Y0DQphek41OXNjeUp0dlhMeUtOL2N5ak1ReDRLajBIMFg0bWJ6bzVZNUtzWWtYVU0vOEFPdWZMcEd0S1NGVGgrSEFDDQpab1Q5YnZHS25adnNHd0tYZFF0Wnh0akhaUjVqK3U3ZGtQOTJBT051RFNabS8rWVV4b2tBK09JbzdSR3BwSHNXDQo1ZTdNY0FTVXRtb1FORXd6dVFoVkJaRWQ1OGtKYjUrV0VWbGNzanlXNnRTbzErZ25tTWNqR1BsMWgxR2hVbjV4DQpFY0lWRnBIWXM5YWo1NmpBSjk1MVQvZjhMaWxmTlVnanBLQ0c1bnl0SUt3emxhOHNtdGlPdm1UNEpYbXBwSkI2DQo4bmdHRVluVjUrUTYwWFJ2OEhSSGp1VG9CRHVhaERrVDA2R1JGODU1d09FR2V4bkZpMXZYWUxLVllWb1V2MXRKDQo4dVdUR1pwNllDSVJldlBqbzg5ZytWTlJSaVFYUThJd0dybXE5c0RoVTlqTjA0SjdVL1RvRDFpNHE3VnlsRUc5DQorV1VGNkNLaEdBeTJIaEhwVncyTGFoOS9lUzdZMUZ1YURrWmhPZG1laG1BOCtqdHNZamJadnR5Mm1SWlF0UUZzDQpUU1VUUjREbUR2bVVPRVRmeStpRHdzK2RkWXVNTnJGeVVYV2dkMnpBQU4ydVl1UHFGY2pRcFNPODFzVTJTU3R3DQoxVzAyeUtYOGJEYmZFdjBzbUh3UzliQnFlSGo5NEM1Mjg0YXpsdTBmaUdpTm1OUEM4ckJLRmhBPQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ==
2534# service:
2535# name: webhook-service
2536# namespace: {{ .Release.Namespace }}
2537# path: /convert
2538# conversionReviewVersions:
2539# - v1beta1
2540# - v1beta2
2541# group: metallb.io
2542# names:
2543# kind: BGPPeer
2544# listKind: BGPPeerList
2545# plural: bgppeers
2546# singular: bgppeer
2547# scope: Namespaced
2548# versions:
2549# - additionalPrinterColumns:
2550# - jsonPath: .spec.peerAddress
2551# name: Address
2552# type: string
2553# - jsonPath: .spec.peerASN
2554# name: ASN
2555# type: string
2556# - jsonPath: .spec.bfdProfile
2557# name: BFD Profile
2558# type: string
2559# - jsonPath: .spec.ebgpMultiHop
2560# name: Multi Hops
2561# type: string
2562# name: v1beta1
2563# schema:
2564# openAPIV3Schema:
2565# description: BGPPeer is the Schema for the peers API.
2566# properties:
2567# apiVersion:
2568# description: 'APIVersion defines the versioned schema of this representation
2569# of an object. Servers should convert recognized schemas to the latest
2570# internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
2571# type: string
2572# kind:
2573# description: 'Kind is a string value representing the REST resource this
2574# object represents. Servers may infer this from the endpoint the client
2575# submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
2576# type: string
2577# metadata:
2578# type: object
2579# spec:
2580# description: BGPPeerSpec defines the desired state of Peer.
2581# properties:
2582# bfdProfile:
2583# type: string
2584# ebgpMultiHop:
2585# description: EBGP peer is multi-hops away
2586# type: boolean
2587# holdTime:
2588# description: Requested BGP hold time, per RFC4271.
2589# type: string
2590# keepaliveTime:
2591# description: Requested BGP keepalive time, per RFC4271.
2592# type: string
2593# myASN:
2594# description: AS number to use for the local end of the session.
2595# format: int32
2596# maximum: 4294967295
2597# minimum: 0
2598# type: integer
2599# nodeSelectors:
2600# description: Only connect to this peer on nodes that match one of
2601# these selectors.
2602# items:
2603# properties:
2604# matchExpressions:
2605# items:
2606# properties:
2607# key:
2608# type: string
2609# operator:
2610# type: string
2611# values:
2612# items:
2613# type: string
2614# minItems: 1
2615# type: array
2616# required:
2617# - key
2618# - operator
2619# - values
2620# type: object
2621# type: array
2622# matchLabels:
2623# additionalProperties:
2624# type: string
2625# type: object
2626# type: object
2627# type: array
2628# password:
2629# description: Authentication password for routers enforcing TCP MD5
2630# authenticated sessions
2631# type: string
2632# peerASN:
2633# description: AS number to expect from the remote end of the session.
2634# format: int32
2635# maximum: 4294967295
2636# minimum: 0
2637# type: integer
2638# peerAddress:
2639# description: Address to dial when establishing the session.
2640# type: string
2641# peerPort:
2642# description: Port to dial when establishing the session.
2643# maximum: 16384
2644# minimum: 0
2645# type: integer
2646# routerID:
2647# description: BGP router ID to advertise to the peer
2648# type: string
2649# sourceAddress:
2650# description: Source address to use when establishing the session.
2651# type: string
2652# required:
2653# - myASN
2654# - peerASN
2655# - peerAddress
2656# type: object
2657# status:
2658# description: BGPPeerStatus defines the observed state of Peer.
2659# type: object
2660# type: object
2661# served: true
2662# storage: false
2663# subresources:
2664# status: {}
2665# - additionalPrinterColumns:
2666# - jsonPath: .spec.peerAddress
2667# name: Address
2668# type: string
2669# - jsonPath: .spec.peerASN
2670# name: ASN
2671# type: string
2672# - jsonPath: .spec.bfdProfile
2673# name: BFD Profile
2674# type: string
2675# - jsonPath: .spec.ebgpMultiHop
2676# name: Multi Hops
2677# type: string
2678# name: v1beta2
2679# schema:
2680# openAPIV3Schema:
2681# description: BGPPeer is the Schema for the peers API.
2682# properties:
2683# apiVersion:
2684# description: 'APIVersion defines the versioned schema of this representation
2685# of an object. Servers should convert recognized schemas to the latest
2686# internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
2687# type: string
2688# kind:
2689# description: 'Kind is a string value representing the REST resource this
2690# object represents. Servers may infer this from the endpoint the client
2691# submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
2692# type: string
2693# metadata:
2694# type: object
2695# spec:
2696# description: BGPPeerSpec defines the desired state of Peer.
2697# properties:
2698# bfdProfile:
2699# description: The name of the BFD Profile to be used for the BFD session
2700# associated to the BGP session. If not set, the BFD session won't
2701# be set up.
2702# type: string
2703# ebgpMultiHop:
2704# description: To set if the BGPPeer is multi-hops away. Needed for
2705# FRR mode only.
2706# type: boolean
2707# holdTime:
2708# description: Requested BGP hold time, per RFC4271.
2709# type: string
2710# keepaliveTime:
2711# description: Requested BGP keepalive time, per RFC4271.
2712# type: string
2713# myASN:
2714# description: AS number to use for the local end of the session.
2715# format: int32
2716# maximum: 4294967295
2717# minimum: 0
2718# type: integer
2719# nodeSelectors:
2720# description: Only connect to this peer on nodes that match one of
2721# these selectors.
2722# items:
2723# description: A label selector is a label query over a set of resources.
2724# The result of matchLabels and matchExpressions are ANDed. An empty
2725# label selector matches all objects. A null label selector matches
2726# no objects.
2727# properties:
2728# matchExpressions:
2729# description: matchExpressions is a list of label selector requirements.
2730# The requirements are ANDed.
2731# items:
2732# description: A label selector requirement is a selector that
2733# contains values, a key, and an operator that relates the
2734# key and values.
2735# properties:
2736# key:
2737# description: key is the label key that the selector applies
2738# to.
2739# type: string
2740# operator:
2741# description: operator represents a key's relationship
2742# to a set of values. Valid operators are In, NotIn, Exists
2743# and DoesNotExist.
2744# type: string
2745# values:
2746# description: values is an array of string values. If the
2747# operator is In or NotIn, the values array must be non-empty.
2748# If the operator is Exists or DoesNotExist, the values
2749# array must be empty. This array is replaced during a
2750# strategic merge patch.
2751# items:
2752# type: string
2753# type: array
2754# required:
2755# - key
2756# - operator
2757# type: object
2758# type: array
2759# matchLabels:
2760# additionalProperties:
2761# type: string
2762# description: matchLabels is a map of {key,value} pairs. A single
2763# {key,value} in the matchLabels map is equivalent to an element
2764# of matchExpressions, whose key field is "key", the operator
2765# is "In", and the values array contains only "value". The requirements
2766# are ANDed.
2767# type: object
2768# type: object
2769# x-kubernetes-map-type: atomic
2770# type: array
2771# password:
2772# description: Authentication password for routers enforcing TCP MD5
2773# authenticated sessions
2774# type: string
2775# passwordSecret:
2776# description: passwordSecret is name of the authentication secret for
2777# BGP Peer. the secret must be of type "kubernetes.io/basic-auth",
2778# and created in the same namespace as the MetalLB deployment. The
2779# password is stored in the secret as the key "password".
2780# properties:
2781# name:
2782# description: name is unique within a namespace to reference a
2783# secret resource.
2784# type: string
2785# namespace:
2786# description: namespace defines the space within which the secret
2787# name must be unique.
2788# type: string
2789# type: object
2790# x-kubernetes-map-type: atomic
2791# peerASN:
2792# description: AS number to expect from the remote end of the session.
2793# format: int32
2794# maximum: 4294967295
2795# minimum: 0
2796# type: integer
2797# peerAddress:
2798# description: Address to dial when establishing the session.
2799# type: string
2800# peerPort:
2801# default: 179
2802# description: Port to dial when establishing the session.
2803# maximum: 16384
2804# minimum: 0
2805# type: integer
2806# routerID:
2807# description: BGP router ID to advertise to the peer
2808# type: string
2809# sourceAddress:
2810# description: Source address to use when establishing the session.
2811# type: string
2812# vrf:
2813# description: To set if we want to peer with the BGPPeer using an interface
2814# belonging to a host vrf
2815# type: string
2816# required:
2817# - myASN
2818# - peerASN
2819# - peerAddress
2820# type: object
2821# status:
2822# description: BGPPeerStatus defines the observed state of Peer.
2823# type: object
2824# type: object
2825# served: true
2826# storage: true
2827# subresources:
2828# status: {}
2829# ---
2830# apiVersion: apiextensions.k8s.io/v1
2831# kind: CustomResourceDefinition
2832# metadata:
2833# annotations:
2834# controller-gen.kubebuilder.io/version: v0.11.1
2835# creationTimestamp: null
2836# name: communities.metallb.io
2837# spec:
2838# group: metallb.io
2839# names:
2840# kind: Community
2841# listKind: CommunityList
2842# plural: communities
2843# singular: community
2844# scope: Namespaced
2845# versions:
2846# - name: v1beta1
2847# schema:
2848# openAPIV3Schema:
2849# description: Community is a collection of aliases for communities. Users can
2850# define named aliases to be used in the BGPPeer CRD.
2851# properties:
2852# apiVersion:
2853# description: 'APIVersion defines the versioned schema of this representation
2854# of an object. Servers should convert recognized schemas to the latest
2855# internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
2856# type: string
2857# kind:
2858# description: 'Kind is a string value representing the REST resource this
2859# object represents. Servers may infer this from the endpoint the client
2860# submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
2861# type: string
2862# metadata:
2863# type: object
2864# spec:
2865# description: CommunitySpec defines the desired state of Community.
2866# properties:
2867# communities:
2868# items:
2869# properties:
2870# name:
2871# description: The name of the alias for the community.
2872# type: string
2873# value:
2874# description: The BGP community value corresponding to the given
2875# name.
2876# type: string
2877# type: object
2878# type: array
2879# type: object
2880# status:
2881# description: CommunityStatus defines the observed state of Community.
2882# type: object
2883# type: object
2884# served: true
2885# storage: true
2886# subresources:
2887# status: {}
2888# ---
2889# apiVersion: apiextensions.k8s.io/v1
2890# kind: CustomResourceDefinition
2891# metadata:
2892# annotations:
2893# controller-gen.kubebuilder.io/version: v0.11.1
2894# creationTimestamp: null
2895# name: ipaddresspools.metallb.io
2896# spec:
2897# group: metallb.io
2898# names:
2899# kind: IPAddressPool
2900# listKind: IPAddressPoolList
2901# plural: ipaddresspools
2902# singular: ipaddresspool
2903# scope: Namespaced
2904# versions:
2905# - additionalPrinterColumns:
2906# - jsonPath: .spec.autoAssign
2907# name: Auto Assign
2908# type: boolean
2909# - jsonPath: .spec.avoidBuggyIPs
2910# name: Avoid Buggy IPs
2911# type: boolean
2912# - jsonPath: .spec.addresses
2913# name: Addresses
2914# type: string
2915# name: v1beta1
2916# schema:
2917# openAPIV3Schema:
2918# description: IPAddressPool represents a pool of IP addresses that can be allocated
2919# to LoadBalancer services.
2920# properties:
2921# apiVersion:
2922# description: 'APIVersion defines the versioned schema of this representation
2923# of an object. Servers should convert recognized schemas to the latest
2924# internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
2925# type: string
2926# kind:
2927# description: 'Kind is a string value representing the REST resource this
2928# object represents. Servers may infer this from the endpoint the client
2929# submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
2930# type: string
2931# metadata:
2932# type: object
2933# spec:
2934# description: IPAddressPoolSpec defines the desired state of IPAddressPool.
2935# properties:
2936# addresses:
2937# description: A list of IP address ranges over which MetalLB has authority.
2938# You can list multiple ranges in a single pool, they will all share
2939# the same settings. Each range can be either a CIDR prefix, or an
2940# explicit start-end range of IPs.
2941# items:
2942# type: string
2943# type: array
2944# autoAssign:
2945# default: true
2946# description: AutoAssign flag used to prevent MetallB from automatic
2947# allocation for a pool.
2948# type: boolean
2949# avoidBuggyIPs:
2950# default: false
2951# description: AvoidBuggyIPs prevents addresses ending with .0 and .255
2952# to be used by a pool.
2953# type: boolean
2954# serviceAllocation:
2955# description: AllocateTo makes ip pool allocation to specific namespace
2956# and/or service. The controller will use the pool with lowest value
2957# of priority in case of multiple matches. A pool with no priority
2958# set will be used only if the pools with priority can't be used.
2959# If multiple matching IPAddressPools are available it will check
2960# for the availability of IPs sorting the matching IPAddressPools
2961# by priority, starting from the highest to the lowest. If multiple
2962# IPAddressPools have the same priority, choice will be random.
2963# properties:
2964# namespaceSelectors:
2965# description: NamespaceSelectors list of label selectors to select
2966# namespace(s) for ip pool, an alternative to using namespace
2967# list.
2968# items:
2969# description: A label selector is a label query over a set of
2970# resources. The result of matchLabels and matchExpressions
2971# are ANDed. An empty label selector matches all objects. A
2972# null label selector matches no objects.
2973# properties:
2974# matchExpressions:
2975# description: matchExpressions is a list of label selector
2976# requirements. The requirements are ANDed.
2977# items:
2978# description: A label selector requirement is a selector
2979# that contains values, a key, and an operator that relates
2980# the key and values.
2981# properties:
2982# key:
2983# description: key is the label key that the selector
2984# applies to.
2985# type: string
2986# operator:
2987# description: operator represents a key's relationship
2988# to a set of values. Valid operators are In, NotIn,
2989# Exists and DoesNotExist.
2990# type: string
2991# values:
2992# description: values is an array of string values.
2993# If the operator is In or NotIn, the values array
2994# must be non-empty. If the operator is Exists or
2995# DoesNotExist, the values array must be empty. This
2996# array is replaced during a strategic merge patch.
2997# items:
2998# type: string
2999# type: array
3000# required:
3001# - key
3002# - operator
3003# type: object
3004# type: array
3005# matchLabels:
3006# additionalProperties:
3007# type: string
3008# description: matchLabels is a map of {key,value} pairs.
3009# A single {key,value} in the matchLabels map is equivalent
3010# to an element of matchExpressions, whose key field is
3011# "key", the operator is "In", and the values array contains
3012# only "value". The requirements are ANDed.
3013# type: object
3014# type: object
3015# x-kubernetes-map-type: atomic
3016# type: array
3017# namespaces:
3018# description: Namespaces list of namespace(s) on which ip pool
3019# can be attached.
3020# items:
3021# type: string
3022# type: array
3023# priority:
3024# description: Priority priority given for ip pool while ip allocation
3025# on a service.
3026# type: integer
3027# serviceSelectors:
3028# description: ServiceSelectors list of label selector to select
3029# service(s) for which ip pool can be used for ip allocation.
3030# items:
3031# description: A label selector is a label query over a set of
3032# resources. The result of matchLabels and matchExpressions
3033# are ANDed. An empty label selector matches all objects. A
3034# null label selector matches no objects.
3035# properties:
3036# matchExpressions:
3037# description: matchExpressions is a list of label selector
3038# requirements. The requirements are ANDed.
3039# items:
3040# description: A label selector requirement is a selector
3041# that contains values, a key, and an operator that relates
3042# the key and values.
3043# properties:
3044# key:
3045# description: key is the label key that the selector
3046# applies to.
3047# type: string
3048# operator:
3049# description: operator represents a key's relationship
3050# to a set of values. Valid operators are In, NotIn,
3051# Exists and DoesNotExist.
3052# type: string
3053# values:
3054# description: values is an array of string values.
3055# If the operator is In or NotIn, the values array
3056# must be non-empty. If the operator is Exists or
3057# DoesNotExist, the values array must be empty. This
3058# array is replaced during a strategic merge patch.
3059# items:
3060# type: string
3061# type: array
3062# required:
3063# - key
3064# - operator
3065# type: object
3066# type: array
3067# matchLabels:
3068# additionalProperties:
3069# type: string
3070# description: matchLabels is a map of {key,value} pairs.
3071# A single {key,value} in the matchLabels map is equivalent
3072# to an element of matchExpressions, whose key field is
3073# "key", the operator is "In", and the values array contains
3074# only "value". The requirements are ANDed.
3075# type: object
3076# type: object
3077# x-kubernetes-map-type: atomic
3078# type: array
3079# type: object
3080# required:
3081# - addresses
3082# type: object
3083# status:
3084# description: IPAddressPoolStatus defines the observed state of IPAddressPool.
3085# type: object
3086# required:
3087# - spec
3088# type: object
3089# served: true
3090# storage: true
3091# subresources:
3092# status: {}
3093# ---
3094# apiVersion: apiextensions.k8s.io/v1
3095# kind: CustomResourceDefinition
3096# metadata:
3097# annotations:
3098# controller-gen.kubebuilder.io/version: v0.11.1
3099# creationTimestamp: null
3100# name: l2advertisements.metallb.io
3101# spec:
3102# group: metallb.io
3103# names:
3104# kind: L2Advertisement
3105# listKind: L2AdvertisementList
3106# plural: l2advertisements
3107# singular: l2advertisement
3108# scope: Namespaced
3109# versions:
3110# - additionalPrinterColumns:
3111# - jsonPath: .spec.ipAddressPools
3112# name: IPAddressPools
3113# type: string
3114# - jsonPath: .spec.ipAddressPoolSelectors
3115# name: IPAddressPool Selectors
3116# type: string
3117# - jsonPath: .spec.interfaces
3118# name: Interfaces
3119# type: string
3120# - jsonPath: .spec.nodeSelectors
3121# name: Node Selectors
3122# priority: 10
3123# type: string
3124# name: v1beta1
3125# schema:
3126# openAPIV3Schema:
3127# description: L2Advertisement allows to advertise the LoadBalancer IPs provided
3128# by the selected pools via L2.
3129# properties:
3130# apiVersion:
3131# description: 'APIVersion defines the versioned schema of this representation
3132# of an object. Servers should convert recognized schemas to the latest
3133# internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
3134# type: string
3135# kind:
3136# description: 'Kind is a string value representing the REST resource this
3137# object represents. Servers may infer this from the endpoint the client
3138# submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
3139# type: string
3140# metadata:
3141# type: object
3142# spec:
3143# description: L2AdvertisementSpec defines the desired state of L2Advertisement.
3144# properties:
3145# interfaces:
3146# description: A list of interfaces to announce from. The LB IP will
3147# be announced only from these interfaces. If the field is not set,
3148# we advertise from all the interfaces on the host.
3149# items:
3150# type: string
3151# type: array
3152# ipAddressPoolSelectors:
3153# description: A selector for the IPAddressPools which would get advertised
3154# via this advertisement. If no IPAddressPool is selected by this
3155# or by the list, the advertisement is applied to all the IPAddressPools.
3156# items:
3157# description: A label selector is a label query over a set of resources.
3158# The result of matchLabels and matchExpressions are ANDed. An empty
3159# label selector matches all objects. A null label selector matches
3160# no objects.
3161# properties:
3162# matchExpressions:
3163# description: matchExpressions is a list of label selector requirements.
3164# The requirements are ANDed.
3165# items:
3166# description: A label selector requirement is a selector that
3167# contains values, a key, and an operator that relates the
3168# key and values.
3169# properties:
3170# key:
3171# description: key is the label key that the selector applies
3172# to.
3173# type: string
3174# operator:
3175# description: operator represents a key's relationship
3176# to a set of values. Valid operators are In, NotIn, Exists
3177# and DoesNotExist.
3178# type: string
3179# values:
3180# description: values is an array of string values. If the
3181# operator is In or NotIn, the values array must be non-empty.
3182# If the operator is Exists or DoesNotExist, the values
3183# array must be empty. This array is replaced during a
3184# strategic merge patch.
3185# items:
3186# type: string
3187# type: array
3188# required:
3189# - key
3190# - operator
3191# type: object
3192# type: array
3193# matchLabels:
3194# additionalProperties:
3195# type: string
3196# description: matchLabels is a map of {key,value} pairs. A single
3197# {key,value} in the matchLabels map is equivalent to an element
3198# of matchExpressions, whose key field is "key", the operator
3199# is "In", and the values array contains only "value". The requirements
3200# are ANDed.
3201# type: object
3202# type: object
3203# x-kubernetes-map-type: atomic
3204# type: array
3205# ipAddressPools:
3206# description: The list of IPAddressPools to advertise via this advertisement,
3207# selected by name.
3208# items:
3209# type: string
3210# type: array
3211# nodeSelectors:
3212# description: NodeSelectors allows to limit the nodes to announce as
3213# next hops for the LoadBalancer IP. When empty, all the nodes having are
3214# announced as next hops.
3215# items:
3216# description: A label selector is a label query over a set of resources.
3217# The result of matchLabels and matchExpressions are ANDed. An empty
3218# label selector matches all objects. A null label selector matches
3219# no objects.
3220# properties:
3221# matchExpressions:
3222# description: matchExpressions is a list of label selector requirements.
3223# The requirements are ANDed.
3224# items:
3225# description: A label selector requirement is a selector that
3226# contains values, a key, and an operator that relates the
3227# key and values.
3228# properties:
3229# key:
3230# description: key is the label key that the selector applies
3231# to.
3232# type: string
3233# operator:
3234# description: operator represents a key's relationship
3235# to a set of values. Valid operators are In, NotIn, Exists
3236# and DoesNotExist.
3237# type: string
3238# values:
3239# description: values is an array of string values. If the
3240# operator is In or NotIn, the values array must be non-empty.
3241# If the operator is Exists or DoesNotExist, the values
3242# array must be empty. This array is replaced during a
3243# strategic merge patch.
3244# items:
3245# type: string
3246# type: array
3247# required:
3248# - key
3249# - operator
3250# type: object
3251# type: array
3252# matchLabels:
3253# additionalProperties:
3254# type: string
3255# description: matchLabels is a map of {key,value} pairs. A single
3256# {key,value} in the matchLabels map is equivalent to an element
3257# of matchExpressions, whose key field is "key", the operator
3258# is "In", and the values array contains only "value". The requirements
3259# are ANDed.
3260# type: object
3261# type: object
3262# x-kubernetes-map-type: atomic
3263# type: array
3264# type: object
3265# status:
3266# description: L2AdvertisementStatus defines the observed state of L2Advertisement.
3267# type: object
3268# type: object
3269# served: true
3270# storage: true
3271# subresources:
3272# status: {}
3273# ---
3274# apiVersion: v1
3275# kind: ServiceAccount
3276# metadata:
3277# labels:
3278# app: metallb
3279# name: controller
3280# namespace: {{ .Release.Namespace }}
3281# ---
3282# apiVersion: v1
3283# kind: ServiceAccount
3284# metadata:
3285# labels:
3286# app: metallb
3287# name: speaker
3288# namespace: {{ .Release.Namespace }}
3289# ---
3290# apiVersion: rbac.authorization.k8s.io/v1
3291# kind: Role
3292# metadata:
3293# labels:
3294# app: metallb
3295# name: controller
3296# namespace: {{ .Release.Namespace }}
3297# rules:
3298# - apiGroups:
3299# - ""
3300# resources:
3301# - secrets
3302# verbs:
3303# - create
3304# - delete
3305# - get
3306# - list
3307# - patch
3308# - update
3309# - watch
3310# - apiGroups:
3311# - ""
3312# resourceNames:
3313# - memberlist
3314# resources:
3315# - secrets
3316# verbs:
3317# - list
3318# - apiGroups:
3319# - apps
3320# resourceNames:
3321# - controller
3322# resources:
3323# - deployments
3324# verbs:
3325# - get
3326# - apiGroups:
3327# - metallb.io
3328# resources:
3329# - bgppeers
3330# verbs:
3331# - get
3332# - list
3333# - apiGroups:
3334# - metallb.io
3335# resources:
3336# - addresspools
3337# verbs:
3338# - get
3339# - list
3340# - watch
3341# - apiGroups:
3342# - metallb.io
3343# resources:
3344# - bfdprofiles
3345# verbs:
3346# - get
3347# - list
3348# - watch
3349# - apiGroups:
3350# - metallb.io
3351# resources:
3352# - ipaddresspools
3353# verbs:
3354# - get
3355# - list
3356# - watch
3357# - apiGroups:
3358# - metallb.io
3359# resources:
3360# - bgpadvertisements
3361# verbs:
3362# - get
3363# - list
3364# - watch
3365# - apiGroups:
3366# - metallb.io
3367# resources:
3368# - l2advertisements
3369# verbs:
3370# - get
3371# - list
3372# - watch
3373# - apiGroups:
3374# - metallb.io
3375# resources:
3376# - communities
3377# verbs:
3378# - get
3379# - list
3380# - watch
3381# ---
3382# apiVersion: rbac.authorization.k8s.io/v1
3383# kind: Role
3384# metadata:
3385# labels:
3386# app: metallb
3387# name: pod-lister
3388# namespace: {{ .Release.Namespace }}
3389# rules:
3390# - apiGroups:
3391# - ""
3392# resources:
3393# - pods
3394# verbs:
3395# - list
3396# - apiGroups:
3397# - ""
3398# resources:
3399# - secrets
3400# verbs:
3401# - get
3402# - list
3403# - watch
3404# - apiGroups:
3405# - metallb.io
3406# resources:
3407# - addresspools
3408# verbs:
3409# - get
3410# - list
3411# - watch
3412# - apiGroups:
3413# - metallb.io
3414# resources:
3415# - bfdprofiles
3416# verbs:
3417# - get
3418# - list
3419# - watch
3420# - apiGroups:
3421# - metallb.io
3422# resources:
3423# - bgppeers
3424# verbs:
3425# - get
3426# - list
3427# - watch
3428# - apiGroups:
3429# - metallb.io
3430# resources:
3431# - l2advertisements
3432# verbs:
3433# - get
3434# - list
3435# - watch
3436# - apiGroups:
3437# - metallb.io
3438# resources:
3439# - bgpadvertisements
3440# verbs:
3441# - get
3442# - list
3443# - watch
3444# - apiGroups:
3445# - metallb.io
3446# resources:
3447# - ipaddresspools
3448# verbs:
3449# - get
3450# - list
3451# - watch
3452# - apiGroups:
3453# - metallb.io
3454# resources:
3455# - communities
3456# verbs:
3457# - get
3458# - list
3459# - watch
3460# ---
3461# apiVersion: rbac.authorization.k8s.io/v1
3462# kind: ClusterRole
3463# metadata:
3464# labels:
3465# app: metallb
3466# name: metallb-system:controller
3467# rules:
3468# - apiGroups:
3469# - ""
3470# resources:
3471# - services
3472# - namespaces
3473# verbs:
3474# - get
3475# - list
3476# - watch
3477# - apiGroups:
3478# - ""
3479# resources:
3480# - services/status
3481# verbs:
3482# - update
3483# - apiGroups:
3484# - ""
3485# resources:
3486# - events
3487# verbs:
3488# - create
3489# - patch
3490# - apiGroups:
3491# - policy
3492# resourceNames:
3493# - controller
3494# resources:
3495# - podsecuritypolicies
3496# verbs:
3497# - use
3498# - apiGroups:
3499# - admissionregistration.k8s.io
3500# resourceNames:
3501# - metallb-webhook-configuration
3502# resources:
3503# - validatingwebhookconfigurations
3504# - mutatingwebhookconfigurations
3505# verbs:
3506# - create
3507# - delete
3508# - get
3509# - list
3510# - patch
3511# - update
3512# - watch
3513# - apiGroups:
3514# - admissionregistration.k8s.io
3515# resources:
3516# - validatingwebhookconfigurations
3517# - mutatingwebhookconfigurations
3518# verbs:
3519# - list
3520# - watch
3521# - apiGroups:
3522# - apiextensions.k8s.io
3523# resourceNames:
3524# - addresspools.metallb.io
3525# - bfdprofiles.metallb.io
3526# - bgpadvertisements.metallb.io
3527# - bgppeers.metallb.io
3528# - ipaddresspools.metallb.io
3529# - l2advertisements.metallb.io
3530# - communities.metallb.io
3531# resources:
3532# - customresourcedefinitions
3533# verbs:
3534# - create
3535# - delete
3536# - get
3537# - list
3538# - patch
3539# - update
3540# - watch
3541# - apiGroups:
3542# - apiextensions.k8s.io
3543# resources:
3544# - customresourcedefinitions
3545# verbs:
3546# - list
3547# - watch
3548# ---
3549# apiVersion: rbac.authorization.k8s.io/v1
3550# kind: ClusterRole
3551# metadata:
3552# labels:
3553# app: metallb
3554# name: metallb-system:speaker
3555# rules:
3556# - apiGroups:
3557# - ""
3558# resources:
3559# - services
3560# - endpoints
3561# - nodes
3562# - namespaces
3563# verbs:
3564# - get
3565# - list
3566# - watch
3567# - apiGroups:
3568# - discovery.k8s.io
3569# resources:
3570# - endpointslices
3571# verbs:
3572# - get
3573# - list
3574# - watch
3575# - apiGroups:
3576# - ""
3577# resources:
3578# - events
3579# verbs:
3580# - create
3581# - patch
3582# - apiGroups:
3583# - policy
3584# resourceNames:
3585# - speaker
3586# resources:
3587# - podsecuritypolicies
3588# verbs:
3589# - use
3590# ---
3591# apiVersion: rbac.authorization.k8s.io/v1
3592# kind: RoleBinding
3593# metadata:
3594# labels:
3595# app: metallb
3596# name: controller
3597# namespace: {{ .Release.Namespace }}
3598# roleRef:
3599# apiGroup: rbac.authorization.k8s.io
3600# kind: Role
3601# name: controller
3602# subjects:
3603# - kind: ServiceAccount
3604# name: controller
3605# namespace: {{ .Release.Namespace }}
3606# ---
3607# apiVersion: rbac.authorization.k8s.io/v1
3608# kind: RoleBinding
3609# metadata:
3610# labels:
3611# app: metallb
3612# name: pod-lister
3613# namespace: {{ .Release.Namespace }}
3614# roleRef:
3615# apiGroup: rbac.authorization.k8s.io
3616# kind: Role
3617# name: pod-lister
3618# subjects:
3619# - kind: ServiceAccount
3620# name: speaker
3621# namespace: {{ .Release.Namespace }}
3622# ---
3623# apiVersion: rbac.authorization.k8s.io/v1
3624# kind: ClusterRoleBinding
3625# metadata:
3626# labels:
3627# app: metallb
3628# name: metallb-system:controller
3629# roleRef:
3630# apiGroup: rbac.authorization.k8s.io
3631# kind: ClusterRole
3632# name: metallb-system:controller
3633# subjects:
3634# - kind: ServiceAccount
3635# name: controller
3636# namespace: {{ .Release.Namespace }}
3637# ---
3638# apiVersion: rbac.authorization.k8s.io/v1
3639# kind: ClusterRoleBinding
3640# metadata:
3641# labels:
3642# app: metallb
3643# name: metallb-system:speaker
3644# roleRef:
3645# apiGroup: rbac.authorization.k8s.io
3646# kind: ClusterRole
3647# name: metallb-system:speaker
3648# subjects:
3649# - kind: ServiceAccount
3650# name: speaker
3651# namespace: {{ .Release.Namespace }}
3652# ---
3653# apiVersion: v1
3654# kind: Secret
3655# metadata:
3656# name: webhook-server-cert
3657# namespace: {{ .Release.Namespace }}
3658# ---
3659# apiVersion: v1
3660# kind: Service
3661# metadata:
3662# name: webhook-service
3663# namespace: {{ .Release.Namespace }}
3664# spec:
3665# ports:
3666# - port: 443
3667# targetPort: 9443
3668# selector:
3669# component: controller
3670# ---
3671# apiVersion: apps/v1
3672# kind: Deployment
3673# metadata:
3674# labels:
3675# app: metallb
3676# component: controller
3677# name: controller
3678# namespace: {{ .Release.Namespace }}
3679# spec:
3680# revisionHistoryLimit: 3
3681# selector:
3682# matchLabels:
3683# app: metallb
3684# component: controller
3685# template:
3686# metadata:
3687# annotations:
3688# prometheus.io/port: "7472"
3689# prometheus.io/scrape: "true"
3690# labels:
3691# app: metallb
3692# component: controller
3693# spec:
3694# containers:
3695# - args:
3696# - --port=7472
3697# - --log-level={{ .Values.controller.logLevel }}
3698# env:
3699# - name: METALLB_ML_SECRET_NAME
3700# value: memberlist
3701# - name: METALLB_DEPLOYMENT
3702# value: controller
3703# image: {{ .Values.controller.image.repository }}:{{ .Values.controller.image.tag }}
3704# imagePullPolicy: {{ .Values.controller.image.pullPolicy }}
3705# livenessProbe:
3706# failureThreshold: 3
3707# httpGet:
3708# path: /metrics
3709# port: monitoring
3710# initialDelaySeconds: 10
3711# periodSeconds: 10
3712# successThreshold: 1
3713# timeoutSeconds: 1
3714# name: controller
3715# ports:
3716# - containerPort: 7472
3717# name: monitoring
3718# - containerPort: 9443
3719# name: webhook-server
3720# protocol: TCP
3721# readinessProbe:
3722# failureThreshold: 3
3723# httpGet:
3724# path: /metrics
3725# port: monitoring
3726# initialDelaySeconds: 10
3727# periodSeconds: 10
3728# successThreshold: 1
3729# timeoutSeconds: 1
3730# securityContext:
3731# allowPrivilegeEscalation: false
3732# capabilities:
3733# drop:
3734# - all
3735# readOnlyRootFilesystem: true
3736# volumeMounts:
3737# - mountPath: /tmp/k8s-webhook-server/serving-certs
3738# name: cert
3739# readOnly: true
3740# nodeSelector:
3741# kubernetes.io/os: linux
3742# securityContext:
3743# fsGroup: 65534
3744# runAsNonRoot: true
3745# runAsUser: 65534
3746# serviceAccountName: controller
3747# terminationGracePeriodSeconds: 0
3748# volumes:
3749# - name: cert
3750# secret:
3751# defaultMode: 420
3752# secretName: webhook-server-cert
3753# ---
3754# apiVersion: apps/v1
3755# kind: DaemonSet
3756# metadata:
3757# labels:
3758# app: metallb
3759# component: speaker
3760# name: speaker
3761# namespace: {{ .Release.Namespace }}
3762# spec:
3763# selector:
3764# matchLabels:
3765# app: metallb
3766# component: speaker
3767# template:
3768# metadata:
3769# annotations:
3770# prometheus.io/port: "7472"
3771# prometheus.io/scrape: "true"
3772# labels:
3773# app: metallb
3774# component: speaker
3775# spec:
3776# containers:
3777# - args:
3778# - --port=7472
3779# - --log-level={{ .Values.controller.logLevel }}
3780# env:
3781# - name: METALLB_NODE_NAME
3782# valueFrom:
3783# fieldRef:
3784# fieldPath: spec.nodeName
3785# - name: METALLB_HOST
3786# valueFrom:
3787# fieldRef:
3788# fieldPath: status.hostIP
3789# - name: METALLB_ML_BIND_ADDR
3790# valueFrom:
3791# fieldRef:
3792# fieldPath: status.podIP
3793# - name: METALLB_ML_LABELS
3794# value: app=metallb,component=speaker
3795# - name: METALLB_ML_SECRET_KEY_PATH
3796# value: /etc/ml_secret_key
3797# image: {{ .Values.speaker.image.repository }}:{{ .Values.speaker.image.tag }}
3798# imagePullPolicy: {{ .Values.speaker.image.pullPolicy }}
3799# livenessProbe:
3800# failureThreshold: 3
3801# httpGet:
3802# path: /metrics
3803# port: monitoring
3804# initialDelaySeconds: 10
3805# periodSeconds: 10
3806# successThreshold: 1
3807# timeoutSeconds: 1
3808# name: speaker
3809# ports:
3810# - containerPort: 7472
3811# name: monitoring
3812# - containerPort: 7946
3813# name: memberlist-tcp
3814# - containerPort: 7946
3815# name: memberlist-udp
3816# protocol: UDP
3817# readinessProbe:
3818# failureThreshold: 3
3819# httpGet:
3820# path: /metrics
3821# port: monitoring
3822# initialDelaySeconds: 10
3823# periodSeconds: 10
3824# successThreshold: 1
3825# timeoutSeconds: 1
3826# securityContext:
3827# allowPrivilegeEscalation: false
3828# capabilities:
3829# add:
3830# - NET_RAW
3831# drop:
3832# - ALL
3833# readOnlyRootFilesystem: true
3834# volumeMounts:
3835# - mountPath: /etc/ml_secret_key
3836# name: memberlist
3837# readOnly: true
3838# hostNetwork: true
3839# nodeSelector:
3840# kubernetes.io/os: linux
3841# serviceAccountName: speaker
3842# terminationGracePeriodSeconds: 2
3843# tolerations:
3844# - effect: NoSchedule
3845# key: node-role.kubernetes.io/master
3846# operator: Exists
3847# - effect: NoSchedule
3848# key: node-role.kubernetes.io/control-plane
3849# operator: Exists
3850# volumes:
3851# - name: memberlist
3852# secret:
3853# defaultMode: 420
3854# secretName: memberlist
3855# ---
3856# apiVersion: admissionregistration.k8s.io/v1
3857# kind: ValidatingWebhookConfiguration
3858# metadata:
3859# creationTimestamp: null
3860# name: metallb-webhook-configuration
3861# webhooks:
3862# - admissionReviewVersions:
3863# - v1
3864# clientConfig:
3865# service:
3866# name: webhook-service
3867# namespace: {{ .Release.Namespace }}
3868# path: /validate-metallb-io-v1beta2-bgppeer
3869# failurePolicy: Fail
3870# name: bgppeersvalidationwebhook.metallb.io
3871# rules:
3872# - apiGroups:
3873# - metallb.io
3874# apiVersions:
3875# - v1beta2
3876# operations:
3877# - CREATE
3878# - UPDATE
3879# resources:
3880# - bgppeers
3881# sideEffects: None
3882# - admissionReviewVersions:
3883# - v1
3884# clientConfig:
3885# service:
3886# name: webhook-service
3887# namespace: {{ .Release.Namespace }}
3888# path: /validate-metallb-io-v1beta1-addresspool
3889# failurePolicy: Fail
3890# name: addresspoolvalidationwebhook.metallb.io
3891# rules:
3892# - apiGroups:
3893# - metallb.io
3894# apiVersions:
3895# - v1beta1
3896# operations:
3897# - CREATE
3898# - UPDATE
3899# resources:
3900# - addresspools
3901# sideEffects: None
3902# - admissionReviewVersions:
3903# - v1
3904# clientConfig:
3905# service:
3906# name: webhook-service
3907# namespace: {{ .Release.Namespace }}
3908# path: /validate-metallb-io-v1beta1-bfdprofile
3909# failurePolicy: Fail
3910# name: bfdprofilevalidationwebhook.metallb.io
3911# rules:
3912# - apiGroups:
3913# - metallb.io
3914# apiVersions:
3915# - v1beta1
3916# operations:
3917# - CREATE
3918# - DELETE
3919# resources:
3920# - bfdprofiles
3921# sideEffects: None
3922# - admissionReviewVersions:
3923# - v1
3924# clientConfig:
3925# service:
3926# name: webhook-service
3927# namespace: {{ .Release.Namespace }}
3928# path: /validate-metallb-io-v1beta1-bgpadvertisement
3929# failurePolicy: Fail
3930# name: bgpadvertisementvalidationwebhook.metallb.io
3931# rules:
3932# - apiGroups:
3933# - metallb.io
3934# apiVersions:
3935# - v1beta1
3936# operations:
3937# - CREATE
3938# - UPDATE
3939# resources:
3940# - bgpadvertisements
3941# sideEffects: None
3942# - admissionReviewVersions:
3943# - v1
3944# clientConfig:
3945# service:
3946# name: webhook-service
3947# namespace: {{ .Release.Namespace }}
3948# path: /validate-metallb-io-v1beta1-community
3949# failurePolicy: Fail
3950# name: communityvalidationwebhook.metallb.io
3951# rules:
3952# - apiGroups:
3953# - metallb.io
3954# apiVersions:
3955# - v1beta1
3956# operations:
3957# - CREATE
3958# - UPDATE
3959# resources:
3960# - communities
3961# sideEffects: None
3962# - admissionReviewVersions:
3963# - v1
3964# clientConfig:
3965# service:
3966# name: webhook-service
3967# namespace: {{ .Release.Namespace }}
3968# path: /validate-metallb-io-v1beta1-ipaddresspool
3969# failurePolicy: Fail
3970# name: ipaddresspoolvalidationwebhook.metallb.io
3971# rules:
3972# - apiGroups:
3973# - metallb.io
3974# apiVersions:
3975# - v1beta1
3976# operations:
3977# - CREATE
3978# - UPDATE
3979# resources:
3980# - ipaddresspools
3981# sideEffects: None
3982# - admissionReviewVersions:
3983# - v1
3984# clientConfig:
3985# service:
3986# name: webhook-service
3987# namespace: {{ .Release.Namespace }}
3988# path: /validate-metallb-io-v1beta1-l2advertisement
3989# failurePolicy: Fail
3990# name: l2advertisementvalidationwebhook.metallb.io
3991# rules:
3992# - apiGroups:
3993# - metallb.io
3994# apiVersions:
3995# - v1beta1
3996# operations:
3997# - CREATE
3998# - UPDATE
3999# resources:
4000# - l2advertisements
4001# sideEffects: None