From cc05577e9a9a0cea835311d0bee7265fb4b26569 Mon Sep 17 00:00:00 2001 From: guofei Date: Wed, 14 Sep 2022 10:24:36 -0700 Subject: [PATCH] fix: Remove all nodePorts in the propagated service manifests --- .../resource_selector.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pkg/controllers/clusterresourceplacement/resource_selector.go b/pkg/controllers/clusterresourceplacement/resource_selector.go index 9089b352e..c42f1319c 100644 --- a/pkg/controllers/clusterresourceplacement/resource_selector.go +++ b/pkg/controllers/clusterresourceplacement/resource_selector.go @@ -320,6 +320,22 @@ func generateManifest(object *unstructured.Unstructured) (*workv1alpha1.Manifest unstructured.RemoveNestedField(object.Object, "spec", "clusterIP") unstructured.RemoveNestedField(object.Object, "spec", "clusterIPs") } + // We should remove all node ports that are assigned by hubcluster if any. + unstructured.RemoveNestedField(object.Object, "spec", "healthCheckNodePort") + + vals, found, err := unstructured.NestedFieldNoCopy(object.Object, "spec", "ports") + if found && err == nil { + if ports, ok := vals.([]interface{}); ok { + for i := range ports { + if each, ok := ports[i].(map[string]interface{}); ok { + delete(each, "nodePort") + } + } + } + } + if err != nil { + return nil, errors.Wrapf(err, "failed to get the ports field in Serivce object, name =%s", object.GetName()) + } } rawContent, err := object.MarshalJSON()