| Lorenz Brun | 6211e4d | 2023-11-14 19:09:40 +0100 | [diff] [blame] | 1 | From b10b2922f0b4fb114b6b535df1ba9fca583c6cf2 Mon Sep 17 00:00:00 2001 |
| 2 | From: Tim Windelschmidt <tim@monogon.tech> |
| 3 | Date: Sat, 9 Sep 2023 14:22:59 +0200 |
| 4 | Subject: [PATCH 6/6] reserve metropolis system ports |
| 5 | |
| 6 | --- |
| 7 | .../service/portallocator/controller/repair.go | 15 +++++++++++++++ |
| 8 | 1 file changed, 15 insertions(+) |
| 9 | |
| Tim Windelschmidt | e95007b | 2023-07-17 19:05:30 +0200 | [diff] [blame] | 10 | diff --git a/pkg/registry/core/service/portallocator/controller/repair.go b/pkg/registry/core/service/portallocator/controller/repair.go |
| Lorenz Brun | 6211e4d | 2023-11-14 19:09:40 +0100 | [diff] [blame] | 11 | index fa870760490..0f67fe7eb9b 100644 |
| 12 | --- a/pkg/registry/core/service/portallocator/controller/repair.go |
| 13 | +++ b/pkg/registry/core/service/portallocator/controller/repair.go |
| 14 | @@ -22,6 +22,8 @@ import ( |
| 15 | "sync" |
| Tim Windelschmidt | e95007b | 2023-07-17 19:05:30 +0200 | [diff] [blame] | 16 | "time" |
| 17 | |
| 18 | + "source.monogon.dev/metropolis/node" |
| 19 | + |
| 20 | corev1 "k8s.io/api/core/v1" |
| 21 | "k8s.io/apimachinery/pkg/api/errors" |
| 22 | metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" |
| Lorenz Brun | 6211e4d | 2023-11-14 19:09:40 +0100 | [diff] [blame] | 23 | @@ -133,6 +136,18 @@ func (c *Repair) doRunOnce() error { |
| Tim Windelschmidt | e95007b | 2023-07-17 19:05:30 +0200 | [diff] [blame] | 24 | return fmt.Errorf("unable to refresh the port block: %v", err) |
| 25 | } |
| 26 | |
| 27 | + // pretend that metropolis system ports are in use by an actual service |
| 28 | + var metropolisService corev1.Service |
| 29 | + for _, p := range node.SystemPorts { |
| 30 | + metropolisService.Spec.Ports = append(metropolisService.Spec.Ports, corev1.ServicePort{ |
| 31 | + Name: p.String(), |
| 32 | + Protocol: corev1.ProtocolTCP, |
| 33 | + Port: int32(p), |
| 34 | + NodePort: int32(p), |
| 35 | + }) |
| 36 | + } |
| 37 | + list.Items = append(list.Items, metropolisService) |
| 38 | + |
| 39 | rebuilt, err := portallocator.NewInMemory(c.portRange) |
| 40 | if err != nil { |
| Lorenz Brun | 6211e4d | 2023-11-14 19:09:40 +0100 | [diff] [blame] | 41 | return fmt.Errorf("unable to create port allocator: %v", err) |
| 42 | -- |
| 43 | 2.41.0 |
| 44 | |