porkadot 0.23.0 → 0.25.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/hack/metallb/crds/kustomization.yaml +5 -0
  3. data/hack/metallb/exclude-l2-config.yaml +8 -0
  4. data/hack/metallb/kustomization.yaml +10 -0
  5. data/hack/update-kubelet-cert-approver.sh +6 -0
  6. data/hack/update-metallb.sh +7 -0
  7. data/lib/porkadot/assets/bootstrap/manifests/kube-apiserver.bootstrap.yaml.erb +1 -1
  8. data/lib/porkadot/assets/etcd/etcd-server.yaml.erb +17 -9
  9. data/lib/porkadot/assets/etcd/etcd.env.erb +4 -0
  10. data/lib/porkadot/assets/etcd/install.sh.erb +1 -0
  11. data/lib/porkadot/assets/etcd.rb +1 -0
  12. data/lib/porkadot/assets/kubelet/config.yaml.erb +1 -39
  13. data/lib/porkadot/assets/kubelet/initiatorname.iscsi.erb +1 -0
  14. data/lib/porkadot/assets/kubelet/kubelet.service.erb +2 -6
  15. data/lib/porkadot/assets/kubelet/metadata.json.erb +5 -0
  16. data/lib/porkadot/assets/{kubelet → kubelet-default}/install-deps.sh.erb +3 -1
  17. data/lib/porkadot/assets/{kubelet → kubelet-default}/install-pkgs.sh.erb +1 -3
  18. data/lib/porkadot/assets/kubelet-default/install.sh.erb +22 -7
  19. data/lib/porkadot/assets/kubelet-default/setup-containerd.sh.erb +22 -0
  20. data/lib/porkadot/assets/kubelet-default/setup-node.sh.erb +16 -0
  21. data/lib/porkadot/assets/kubelet.rb +14 -12
  22. data/lib/porkadot/assets/kubernetes/install.sh.erb +3 -1
  23. data/lib/porkadot/assets/kubernetes/manifests/addons/coredns/coredns.yaml.erb +1 -1
  24. data/lib/porkadot/assets/kubernetes/manifests/addons/coredns/dns-horizontal-autoscaler.yaml.erb +1 -1
  25. data/lib/porkadot/assets/kubernetes/manifests/addons/flannel/flannel.yaml.erb +12 -51
  26. data/lib/porkadot/assets/kubernetes/manifests/addons/kubelet-serving-cert-approver/kustomization.yaml.erb +3 -0
  27. data/lib/porkadot/assets/kubernetes/manifests/addons/kubelet-serving-cert-approver/src.yaml.erb +210 -0
  28. data/lib/porkadot/assets/kubernetes/manifests/addons/metallb/000-metallb.yaml.erb +3 -1
  29. data/lib/porkadot/assets/kubernetes/manifests/addons/metallb/crds.yaml +1272 -0
  30. data/lib/porkadot/assets/kubernetes/manifests/addons/metallb/metallb.config.yaml.erb +1 -12
  31. data/lib/porkadot/assets/kubernetes/manifests/addons/metallb/metallb.yaml.erb +507 -252
  32. data/lib/porkadot/assets/kubernetes/manifests/kube-apiserver.yaml.erb +4 -1
  33. data/lib/porkadot/assets/kubernetes/manifests/kube-controller-manager.yaml.erb +3 -0
  34. data/lib/porkadot/assets/kubernetes/manifests/kube-scheduler.yaml.erb +3 -1
  35. data/lib/porkadot/assets/kubernetes.rb +22 -1
  36. data/lib/porkadot/config.rb +1 -1
  37. data/lib/porkadot/configs/addons.rb +4 -0
  38. data/lib/porkadot/configs/etcd.rb +9 -0
  39. data/lib/porkadot/configs/kubelet.rb +25 -7
  40. data/lib/porkadot/default.yaml +17 -15
  41. data/lib/porkadot/install/bootstrap.rb +1 -1
  42. data/lib/porkadot/install/kubelet.rb +24 -40
  43. data/lib/porkadot/version.rb +1 -1
  44. data/lib/porkadot.rb +1 -0
  45. metadata +17 -7
  46. data/lib/porkadot/assets/kubelet/install.sh.erb +0 -35
  47. data/lib/porkadot/assets/kubelet/setup-containerd.sh.erb +0 -17
  48. data/lib/porkadot/assets/kubernetes/manifests/addons/metallb/metallb.yaml +0 -480
@@ -0,0 +1,1272 @@
1
+ apiVersion: apiextensions.k8s.io/v1
2
+ kind: CustomResourceDefinition
3
+ metadata:
4
+ annotations:
5
+ controller-gen.kubebuilder.io/version: v0.11.1
6
+ name: addresspools.metallb.io
7
+ spec:
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
+ ---
207
+ apiVersion: apiextensions.k8s.io/v1
208
+ kind: CustomResourceDefinition
209
+ metadata:
210
+ annotations:
211
+ controller-gen.kubebuilder.io/version: v0.11.1
212
+ creationTimestamp: null
213
+ name: bfdprofiles.metallb.io
214
+ spec:
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
+ ---
314
+ apiVersion: apiextensions.k8s.io/v1
315
+ kind: CustomResourceDefinition
316
+ metadata:
317
+ annotations:
318
+ controller-gen.kubebuilder.io/version: v0.11.1
319
+ creationTimestamp: null
320
+ name: bgpadvertisements.metallb.io
321
+ spec:
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
+ ---
522
+ apiVersion: apiextensions.k8s.io/v1
523
+ kind: CustomResourceDefinition
524
+ metadata:
525
+ annotations:
526
+ controller-gen.kubebuilder.io/version: v0.11.1
527
+ name: bgppeers.metallb.io
528
+ spec:
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
+ ---
830
+ apiVersion: apiextensions.k8s.io/v1
831
+ kind: CustomResourceDefinition
832
+ metadata:
833
+ annotations:
834
+ controller-gen.kubebuilder.io/version: v0.11.1
835
+ creationTimestamp: null
836
+ name: communities.metallb.io
837
+ spec:
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
+ ---
889
+ apiVersion: apiextensions.k8s.io/v1
890
+ kind: CustomResourceDefinition
891
+ metadata:
892
+ annotations:
893
+ controller-gen.kubebuilder.io/version: v0.11.1
894
+ creationTimestamp: null
895
+ name: ipaddresspools.metallb.io
896
+ spec:
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
+ ---
1094
+ apiVersion: apiextensions.k8s.io/v1
1095
+ kind: CustomResourceDefinition
1096
+ metadata:
1097
+ annotations:
1098
+ controller-gen.kubebuilder.io/version: v0.11.1
1099
+ creationTimestamp: null
1100
+ name: l2advertisements.metallb.io
1101
+ spec:
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: {}