blob: 89cff4826d8bcab79ba7022f8904f5bd9fe0607e [file] [log] [blame]
Lorenz Brun6211e4d2023-11-14 19:09:40 +01001From b10b2922f0b4fb114b6b535df1ba9fca583c6cf2 Mon Sep 17 00:00:00 2001
2From: Tim Windelschmidt <tim@monogon.tech>
3Date: Sat, 9 Sep 2023 14:22:59 +0200
4Subject: [PATCH 6/6] reserve metropolis system ports
5
6---
7 .../service/portallocator/controller/repair.go | 15 +++++++++++++++
8 1 file changed, 15 insertions(+)
9
Tim Windelschmidte95007b2023-07-17 19:05:30 +020010diff --git a/pkg/registry/core/service/portallocator/controller/repair.go b/pkg/registry/core/service/portallocator/controller/repair.go
Lorenz Brun6211e4d2023-11-14 19:09:40 +010011index 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 Windelschmidte95007b2023-07-17 19:05:30 +020016 "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 Brun6211e4d2023-11-14 19:09:40 +010023@@ -133,6 +136,18 @@ func (c *Repair) doRunOnce() error {
Tim Windelschmidte95007b2023-07-17 19:05:30 +020024 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 Brun6211e4d2023-11-14 19:09:40 +010041 return fmt.Errorf("unable to create port allocator: %v", err)
42--
432.41.0
44