blob: 00e4329d87bd761cf91321a91a8fe722e8fc79d3 [file] [log] [blame]
From 922898cb67ccedc6f0b67af9b398895d7fb55e56 Mon Sep 17 00:00:00 2001
From: Tim Windelschmidt <tim@monogon.tech>
Date: Sat, 9 Sep 2023 14:22:59 +0200
Subject: [PATCH] reserve metropolis system ports
---
.../core/service/portallocator/controller/repair.go | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/pkg/registry/core/service/portallocator/controller/repair.go b/pkg/registry/core/service/portallocator/controller/repair.go
index 0ec22c55a54..f890b9c133e 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/allocs"
+
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -148,6 +150,16 @@ func (c *Repair) doRunOnce() error {
if err != nil {
return fmt.Errorf("unable to create port allocator: %v", err)
}
+
+ // pretend that metropolis system ports are in use by an actual service
+ for _, p := range allocs.SystemPorts {
+ if err := rebuilt.Allocate(int(p)); err != nil {
+ return fmt.Errorf("unable to allocate metropolis port: %v", err)
+ }
+ // remove it from the old set, so it doesn't appear leaked
+ stored.Release(int(p))
+ }
+
// Check every Service's ports, and rebuild the state as we think it should be.
for i := range list.Items {
svc := &list.Items[i]
--
2.47.1