blob: 89cff4826d8bcab79ba7022f8904f5bd9fe0607e [file] [log] [blame]
From b10b2922f0b4fb114b6b535df1ba9fca583c6cf2 Mon Sep 17 00:00:00 2001
From: Tim Windelschmidt <tim@monogon.tech>
Date: Sat, 9 Sep 2023 14:22:59 +0200
Subject: [PATCH 6/6] reserve metropolis system ports
---
.../service/portallocator/controller/repair.go | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/pkg/registry/core/service/portallocator/controller/repair.go b/pkg/registry/core/service/portallocator/controller/repair.go
index fa870760490..0f67fe7eb9b 100644
--- a/pkg/registry/core/service/portallocator/controller/repair.go
+++ b/pkg/registry/core/service/portallocator/controller/repair.go
@@ -22,6 +22,8 @@ import (
"sync"
"time"
+ "source.monogon.dev/metropolis/node"
+
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -133,6 +136,18 @@ func (c *Repair) doRunOnce() error {
return fmt.Errorf("unable to refresh the port block: %v", err)
}
+ // pretend that metropolis system ports are in use by an actual service
+ var metropolisService corev1.Service
+ for _, p := range node.SystemPorts {
+ metropolisService.Spec.Ports = append(metropolisService.Spec.Ports, corev1.ServicePort{
+ Name: p.String(),
+ Protocol: corev1.ProtocolTCP,
+ Port: int32(p),
+ NodePort: int32(p),
+ })
+ }
+ list.Items = append(list.Items, metropolisService)
+
rebuilt, err := portallocator.NewInMemory(c.portRange)
if err != nil {
return fmt.Errorf("unable to create port allocator: %v", err)
--
2.41.0