Distinguish between different unnamed node ports when preserving

Signed-off-by: Scott Seago <sseago@redhat.com>
This commit is contained in:
Scott Seago
2021-08-09 16:27:32 -04:00
parent ed5809b7fc
commit 8d714d38ea
3 changed files with 15 additions and 3 deletions

View File

@@ -0,0 +1 @@
Distinguish between different unnamed node ports when preserving

View File

@@ -83,6 +83,7 @@ func deleteNodePorts(service *corev1api.Service) error {
// to the last-applied-config annotation. We'll retain these values, and
// clear out any other (presumably auto-assigned) NodePort values.
explicitNodePorts := sets.NewString()
unnamedPortInts := sets.NewInt()
lastAppliedConfig, ok := service.Annotations[annotationLastAppliedConfig]
if ok {
appliedServiceUnstructured := new(map[string]interface{})
@@ -123,7 +124,7 @@ func deleteNodePorts(service *corev1api.Service) error {
portName, ok := p["name"]
if !ok {
// unnamed port
explicitNodePorts.Insert("")
unnamedPortInts.Insert(nodePortInt)
} else {
explicitNodePorts.Insert(portName.(string))
}
@@ -135,8 +136,14 @@ func deleteNodePorts(service *corev1api.Service) error {
}
for i, port := range service.Spec.Ports {
if !explicitNodePorts.Has(port.Name) {
service.Spec.Ports[i].NodePort = 0
if port.Name != "" {
if !explicitNodePorts.Has(port.Name) {
service.Spec.Ports[i].NodePort = 0
}
} else {
if !unnamedPortInts.Has(int(port.NodePort)) {
service.Spec.Ports[i].NodePort = 0
}
}
}

View File

@@ -196,6 +196,9 @@ func TestServiceActionExecute(t *testing.T) {
{
NodePort: 8080,
},
{
NodePort: 9090,
},
},
},
},
@@ -212,6 +215,7 @@ func TestServiceActionExecute(t *testing.T) {
{
NodePort: 8080,
},
{},
},
},
},