Skip to content

Commit 693ea8a

Browse files
committed
Build patched MetalLB (#945)
Since it's taking a while for metallb/metallb#2726 to get released, the binaries with the fix are recompiled in-tree. Workaround for #909. (cherry picked from commit 73fdc5d) Signed-off-by: Timofei Larkin <[email protected]>
1 parent 246b5c4 commit 693ea8a

16 files changed

Lines changed: 195 additions & 52 deletions

File tree

‎Makefile‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ build: build-deps
2020
make -C packages/system/kubeovn image
2121
make -C packages/system/kubeovn-webhook image
2222
make -C packages/system/dashboard image
23+
make -C packages/system/metallb image
2324
make -C packages/system/kamaji image
2425
make -C packages/system/bucket image
2526
make -C packages/core/testing image

‎packages/system/metallb/Makefile‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
export NAME=metallb
22
export NAMESPACE=cozy-$(NAME)
33

4+
include ../../../scripts/common-envs.mk
45
include ../../../scripts/package.mk
56

67
update:
@@ -9,3 +10,25 @@ update:
910
helm repo update metallb
1011
helm pull metallb/metallb --untar --untardir charts
1112
rm -rf charts/metallb/charts/frr-k8s
13+
14+
image-controller image-speaker:
15+
$(eval TARGET := $(subst image-,,$@))
16+
$(eval VERSION := $(shell yq '.appVersion' charts/metallb/Chart.yaml))
17+
docker buildx build images/metallb \
18+
--provenance false \
19+
--target $(TARGET) \
20+
--build-arg VERSION=$(VERSION) \
21+
--tag $(REGISTRY)/metallb-$(TARGET):$(VERSION) \
22+
--cache-from type=registry,ref=$(REGISTRY)/metallb-$(TARGET):latest \
23+
--cache-to type=inline \
24+
--metadata-file images/$(TARGET).json \
25+
--push=$(PUSH) \
26+
--label "org.opencontainers.image.source=https://github.com/cozystack/cozystack"
27+
--load=1
28+
REPOSITORY="$(REGISTRY)/metallb-$(TARGET)" \
29+
yq -i '.metallb.$(TARGET).image.repository = strenv(REPOSITORY)' values.yaml
30+
TAG=$(VERSION)@$$(yq e '."containerimage.digest"' images/$(TARGET).json -o json -r) \
31+
yq -i '.metallb.$(TARGET).image.tag = strenv(TAG)' values.yaml
32+
rm -f images/$(TARGET).json
33+
34+
image: image-controller image-speaker
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
dependencies:
22
- name: crds
33
repository: ""
4-
version: 0.14.8
4+
version: 0.14.9
55
- name: frr-k8s
66
repository: https://metallb.github.io/frr-k8s
7-
version: 0.0.14
8-
digest: sha256:8dff488902a5b504a491bbd1a9ab0983a877ff214e163ed74106c73c939a9aa3
9-
generated: "2024-07-23T15:22:40.589621+03:00"
7+
version: 0.0.16
8+
digest: sha256:20d9a53af12c82d35168e7524ae337341b2c7cb43e2169545185f750a718466e
9+
generated: "2024-12-17T15:39:32.082324414+01:00"
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
apiVersion: v2
2-
appVersion: v0.14.8
2+
appVersion: v0.14.9
33
dependencies:
44
- condition: crds.enabled
55
name: crds
66
repository: ""
7-
version: 0.14.8
7+
version: 0.14.9
88
- condition: frrk8s.enabled
99
name: frr-k8s
1010
repository: https://metallb.github.io/frr-k8s
11-
version: 0.0.14
11+
version: 0.0.16
1212
description: A network load-balancer implementation for Kubernetes using standard
1313
routing protocols
1414
home: https://metallb.universe.tf
@@ -18,4 +18,4 @@ name: metallb
1818
sources:
1919
- https://github.com/metallb/metallb
2020
type: application
21-
version: 0.14.8
21+
version: 0.14.9

‎packages/system/metallb/charts/metallb/README.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Kubernetes: `>= 1.19.0-0`
1717
| Repository | Name | Version |
1818
|------------|------|---------|
1919
| | crds | 0.0.0 |
20-
| https://metallb.github.io/frr-k8s | frr-k8s | 0.0.14 |
20+
| https://metallb.github.io/frr-k8s | frr-k8s | 0.0.16 |
2121

2222
## Values
2323

@@ -79,17 +79,17 @@ Kubernetes: `>= 1.19.0-0`
7979
| prometheus.podMonitor.relabelings | list | `[]` | |
8080
| prometheus.prometheusRule.additionalLabels | object | `{}` | |
8181
| prometheus.prometheusRule.addressPoolExhausted.enabled | bool | `true` | |
82-
| prometheus.prometheusRule.addressPoolExhausted.labels.severity | string | `"alert"` | |
82+
| prometheus.prometheusRule.addressPoolExhausted.labels.severity | string | `"critical"` | |
8383
| prometheus.prometheusRule.addressPoolUsage.enabled | bool | `true` | |
8484
| prometheus.prometheusRule.addressPoolUsage.thresholds[0].labels.severity | string | `"warning"` | |
8585
| prometheus.prometheusRule.addressPoolUsage.thresholds[0].percent | int | `75` | |
8686
| prometheus.prometheusRule.addressPoolUsage.thresholds[1].labels.severity | string | `"warning"` | |
8787
| prometheus.prometheusRule.addressPoolUsage.thresholds[1].percent | int | `85` | |
88-
| prometheus.prometheusRule.addressPoolUsage.thresholds[2].labels.severity | string | `"alert"` | |
88+
| prometheus.prometheusRule.addressPoolUsage.thresholds[2].labels.severity | string | `"critical"` | |
8989
| prometheus.prometheusRule.addressPoolUsage.thresholds[2].percent | int | `95` | |
9090
| prometheus.prometheusRule.annotations | object | `{}` | |
9191
| prometheus.prometheusRule.bgpSessionDown.enabled | bool | `true` | |
92-
| prometheus.prometheusRule.bgpSessionDown.labels.severity | string | `"alert"` | |
92+
| prometheus.prometheusRule.bgpSessionDown.labels.severity | string | `"critical"` | |
9393
| prometheus.prometheusRule.configNotLoaded.enabled | bool | `true` | |
9494
| prometheus.prometheusRule.configNotLoaded.labels.severity | string | `"warning"` | |
9595
| prometheus.prometheusRule.enabled | bool | `false` | |
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
apiVersion: v2
2-
appVersion: v0.14.8
2+
appVersion: v0.14.9
33
description: MetalLB CRDs
44
home: https://metallb.universe.tf
55
icon: https://metallb.universe.tf/images/logo/metallb-white.png
66
name: crds
77
sources:
88
- https://github.com/metallb/metallb
99
type: application
10-
version: 0.14.8
10+
version: 0.14.9

‎packages/system/metallb/charts/metallb/charts/crds/templates/crds.yaml‎

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
22
kind: CustomResourceDefinition
33
metadata:
44
annotations:
5-
controller-gen.kubebuilder.io/version: v0.14.0
5+
controller-gen.kubebuilder.io/version: v0.16.3
66
name: bfdprofiles.metallb.io
77
spec:
88
group: metallb.io
@@ -123,7 +123,7 @@ apiVersion: apiextensions.k8s.io/v1
123123
kind: CustomResourceDefinition
124124
metadata:
125125
annotations:
126-
controller-gen.kubebuilder.io/version: v0.14.0
126+
controller-gen.kubebuilder.io/version: v0.16.3
127127
name: bgpadvertisements.metallb.io
128128
spec:
129129
group: metallb.io
@@ -329,7 +329,7 @@ apiVersion: apiextensions.k8s.io/v1
329329
kind: CustomResourceDefinition
330330
metadata:
331331
annotations:
332-
controller-gen.kubebuilder.io/version: v0.14.0
332+
controller-gen.kubebuilder.io/version: v0.16.3
333333
name: bgppeers.metallb.io
334334
spec:
335335
conversion:
@@ -365,6 +365,8 @@ spec:
365365
- jsonPath: .spec.ebgpMultiHop
366366
name: Multi Hops
367367
type: string
368+
deprecated: true
369+
deprecationWarning: v1beta1 is deprecated, please use v1beta2
368370
name: v1beta1
369371
schema:
370372
openAPIV3Schema:
@@ -526,15 +528,26 @@ spec:
526528
default: false
527529
description: To set if we want to disable MP BGP that will separate IPv4 and IPv6 route exchanges into distinct BGP sessions.
528530
type: boolean
531+
dynamicASN:
532+
description: |-
533+
DynamicASN detects the AS number to use for the remote end of the session
534+
without explicitly setting it via the ASN field. Limited to:
535+
internal - if the neighbor's ASN is different than MyASN connection is denied.
536+
external - if the neighbor's ASN is the same as MyASN the connection is denied.
537+
ASN and DynamicASN are mutually exclusive and one of them must be specified.
538+
enum:
539+
- internal
540+
- external
541+
type: string
529542
ebgpMultiHop:
530543
description: To set if the BGPPeer is multi-hops away. Needed for FRR mode only.
531544
type: boolean
532545
enableGracefulRestart:
533546
description: |-
534-
EnableGracefulRestart allows BGP peer to continue to forward data packets along
535-
known routes while the routing protocol information is being restored.
536-
This field is immutable because it requires restart of the BGP session
537-
Supported for FRR mode only.
547+
EnableGracefulRestart allows BGP peer to continue to forward data packets
548+
along known routes while the routing protocol information is being
549+
restored. This field is immutable because it requires restart of the BGP
550+
session. Supported for FRR mode only.
538551
type: boolean
539552
x-kubernetes-validations:
540553
- message: EnableGracefulRestart cannot be changed after creation
@@ -622,7 +635,9 @@ spec:
622635
type: object
623636
x-kubernetes-map-type: atomic
624637
peerASN:
625-
description: AS number to expect from the remote end of the session.
638+
description: |-
639+
AS number to expect from the remote end of the session.
640+
ASN and DynamicASN are mutually exclusive and one of them must be specified.
626641
format: int32
627642
maximum: 4294967295
628643
minimum: 0
@@ -649,7 +664,6 @@ spec:
649664
type: string
650665
required:
651666
- myASN
652-
- peerASN
653667
- peerAddress
654668
type: object
655669
status:
@@ -665,7 +679,7 @@ apiVersion: apiextensions.k8s.io/v1
665679
kind: CustomResourceDefinition
666680
metadata:
667681
annotations:
668-
controller-gen.kubebuilder.io/version: v0.14.0
682+
controller-gen.kubebuilder.io/version: v0.16.3
669683
name: communities.metallb.io
670684
spec:
671685
group: metallb.io
@@ -730,7 +744,7 @@ apiVersion: apiextensions.k8s.io/v1
730744
kind: CustomResourceDefinition
731745
metadata:
732746
annotations:
733-
controller-gen.kubebuilder.io/version: v0.14.0
747+
controller-gen.kubebuilder.io/version: v0.16.3
734748
name: ipaddresspools.metallb.io
735749
spec:
736750
group: metallb.io
@@ -940,7 +954,7 @@ apiVersion: apiextensions.k8s.io/v1
940954
kind: CustomResourceDefinition
941955
metadata:
942956
annotations:
943-
controller-gen.kubebuilder.io/version: v0.14.0
957+
controller-gen.kubebuilder.io/version: v0.16.3
944958
name: l2advertisements.metallb.io
945959
spec:
946960
group: metallb.io
@@ -1120,7 +1134,7 @@ apiVersion: apiextensions.k8s.io/v1
11201134
kind: CustomResourceDefinition
11211135
metadata:
11221136
annotations:
1123-
controller-gen.kubebuilder.io/version: v0.14.0
1137+
controller-gen.kubebuilder.io/version: v0.16.3
11241138
name: servicel2statuses.metallb.io
11251139
spec:
11261140
group: metallb.io

‎packages/system/metallb/charts/metallb/templates/controller.yaml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ spec:
8484
- name: METALLB_DEPLOYMENT
8585
value: {{ template "metallb.fullname" . }}-controller
8686
{{- end }}
87-
{{- if .Values.speaker.frr.enabled }}
87+
{{- if and .Values.speaker.enabled .Values.speaker.frr.enabled }}
8888
- name: METALLB_BGP_TYPE
8989
value: frr
9090
{{- end }}

‎packages/system/metallb/charts/metallb/templates/podmonitor.yaml‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ spec:
3636
relabelings:
3737
{{- toYaml .Values.prometheus.podMonitor.relabelings | nindent 4 }}
3838
{{- end }}
39+
{{- if .Values.speaker.enabled }}
3940
---
4041
apiVersion: monitoring.coreos.com/v1
4142
kind: PodMonitor
@@ -74,6 +75,7 @@ spec:
7475
relabelings:
7576
{{- toYaml .Values.prometheus.podMonitor.relabelings | nindent 4 }}
7677
{{- end }}
78+
{{- end }}
7779
---
7880
{{- if .Values.prometheus.rbacPrometheus }}
7981
apiVersion: rbac.authorization.k8s.io/v1

‎packages/system/metallb/charts/metallb/templates/prometheusrules.yaml‎

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ spec:
1919
{{- if .Values.prometheus.prometheusRule.staleConfig.enabled }}
2020
- alert: MetalLBStaleConfig
2121
annotations:
22-
message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod
23-
}} has a stale config for > 1 minute'`}}
22+
summary: {{`'Stale config on {{ $labels.pod }}'`}}
23+
description: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod }} has a stale config for > 1 minute'`}}
2424
expr: metallb_k8s_client_config_stale_bool{job=~"{{ template "metallb.fullname" . }}.*"} == 1
2525
for: 1m
2626
{{- with .Values.prometheus.prometheusRule.staleConfig.labels }}
@@ -31,8 +31,8 @@ spec:
3131
{{- if .Values.prometheus.prometheusRule.configNotLoaded.enabled }}
3232
- alert: MetalLBConfigNotLoaded
3333
annotations:
34-
message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod
35-
}} has not loaded for > 1 minute'`}}
34+
summary: {{`'Config on {{ $labels.pod }} has not been loaded'`}}
35+
description: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod }} has not loaded for > 1 minute'`}}
3636
expr: metallb_k8s_client_config_loaded_bool{job=~"{{ template "metallb.fullname" . }}.*"} == 0
3737
for: 1m
3838
{{- with .Values.prometheus.prometheusRule.configNotLoaded.labels }}
@@ -43,8 +43,8 @@ spec:
4343
{{- if .Values.prometheus.prometheusRule.addressPoolExhausted.enabled }}
4444
- alert: MetalLBAddressPoolExhausted
4545
annotations:
46-
message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod
47-
}} has exhausted address pool {{ $labels.pool }} for > 1 minute'`}}
46+
summary: {{`'Exhausted address pool on {{ $labels.pod }}'`}}
47+
description: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod }} has exhausted address pool {{ $labels.pool }} for > 1 minute'`}}
4848
expr: metallb_allocator_addresses_in_use_total >= on(pool) metallb_allocator_addresses_total
4949
for: 1m
5050
{{- with .Values.prometheus.prometheusRule.addressPoolExhausted.labels }}
@@ -57,8 +57,8 @@ spec:
5757
{{- range .Values.prometheus.prometheusRule.addressPoolUsage.thresholds }}
5858
- alert: MetalLBAddressPoolUsage{{ .percent }}Percent
5959
annotations:
60-
message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod
61-
}} has address pool {{ $labels.pool }} past `}}{{ .percent }}{{`% usage for > 1 minute'`}}
60+
summary: {{`'Exhausted address pool on {{ $labels.pod }}'`}}
61+
message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod }} has address pool {{ $labels.pool }} past `}}{{ .percent }}{{`% usage for > 1 minute'`}}
6262
expr: ( metallb_allocator_addresses_in_use_total / on(pool) metallb_allocator_addresses_total ) * 100 > {{ .percent }}
6363
{{- with .labels }}
6464
labels:
@@ -69,8 +69,8 @@ spec:
6969
{{- if .Values.prometheus.prometheusRule.bgpSessionDown.enabled }}
7070
- alert: MetalLBBGPSessionDown
7171
annotations:
72-
message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod
73-
}} has BGP session {{ $labels.peer }} down for > 1 minute'`}}
72+
summary: {{`'BGP session down on {{ $labels.pod }}'`}}
73+
message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod }} has BGP session {{ $labels.peer }} down for > 1 minute'`}}
7474
expr: metallb_bgp_session_up{job=~"{{ template "metallb.fullname" . }}.*"} == 0
7575
for: 1m
7676
{{- with .Values.prometheus.prometheusRule.bgpSessionDown.labels }}

0 commit comments

Comments
 (0)