porkadot 0.23.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: {}