blob: 1756d7b6398c956ff8d1dd340c4c6ff262ea34e6 [file] [log] [blame] [edit]
diff --git a/pkg/registry/core/service/portallocator/controller/repair.go b/pkg/registry/core/service/portallocator/controller/repair.go
--- a/pkg/registry/core/service/portallocator/controller/repair.go (revision f66044f4361b9f1f96f0053dd46cb7dce5e990a8)
+++ b/pkg/registry/core/service/portallocator/controller/repair.go (revision bdd789d982712179c6a849ceed7f12e063b3fce3)
@@ -21,6 +21,8 @@
"fmt"
"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"
@@ -123,6 +126,18 @@
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)