From 2e94be815a38431e7072c2a8038a28d67632de9e Mon Sep 17 00:00:00 2001 From: Lan Luo Date: Mon, 13 Dec 2021 17:47:14 +0800 Subject: [PATCH] Remove unnecessary subset info in exported Endpoints Keep IP only to exported Endpoints. Signed-off-by: Lan Luo --- .../controllers/multicluster/common/helper.go | 20 +++++++++++++++++++ .../core/resourceimport_controller.go | 3 ++- .../core/resourceimport_controller_test.go | 9 +++------ .../multicluster/serviceexport_controller.go | 2 +- .../serviceexport_controller_test.go | 4 +++- 5 files changed, 29 insertions(+), 9 deletions(-) diff --git a/multicluster/controllers/multicluster/common/helper.go b/multicluster/controllers/multicluster/common/helper.go index 8aa60c55163..5803e2644b0 100644 --- a/multicluster/controllers/multicluster/common/helper.go +++ b/multicluster/controllers/multicluster/common/helper.go @@ -13,6 +13,8 @@ limitations under the License. package common +import corev1 "k8s.io/api/core/v1" + const ( AntreaMCServiceAnnotation = "multicluster.antrea.io/imported-service" SourceImportAnnotation = "multicluster.antrea.io/resource-import-name" @@ -52,3 +54,21 @@ func RemoveString(slice []string, s string) (result []string) { } return } + +// FilterSubsets keeps IPs only and remove others which are unnecessary information for other member cluster. +func FilterSubsets(subsets []corev1.EndpointSubset) []corev1.EndpointSubset { + newSubsets := []corev1.EndpointSubset{} + for _, s := range subsets { + subset := corev1.EndpointSubset{} + newAddresses := []corev1.EndpointAddress{} + for _, addr := range s.Addresses { + newAddresses = append(newAddresses, corev1.EndpointAddress{ + IP: addr.IP, + }) + } + subset.Addresses = newAddresses + subset.Ports = s.Ports + newSubsets = append(newSubsets, subset) + } + return newSubsets +} diff --git a/multicluster/controllers/multicluster/core/resourceimport_controller.go b/multicluster/controllers/multicluster/core/resourceimport_controller.go index dd1a2b203cf..055271d6f36 100644 --- a/multicluster/controllers/multicluster/core/resourceimport_controller.go +++ b/multicluster/controllers/multicluster/core/resourceimport_controller.go @@ -374,6 +374,7 @@ func getMCServiceImport(resImp *multiclusterv1alpha1.ResourceImport) *k8smcsv1al } func removeLocalSubsets(local []corev1.EndpointSubset, allSubsets []corev1.EndpointSubset) []corev1.EndpointSubset { + filteredLocal := common.FilterSubsets(local) size := len(allSubsets) if size < 1 { return allSubsets @@ -382,7 +383,7 @@ func removeLocalSubsets(local []corev1.EndpointSubset, allSubsets []corev1.Endpo copy(newSubsets, allSubsets) lastIdx := size - 1 for n, r := range newSubsets { - for _, l := range local { + for _, l := range filteredLocal { if apiequality.Semantic.DeepEqual(r, l) { newSubsets[n] = newSubsets[lastIdx] newSubsets[lastIdx] = corev1.EndpointSubset{} diff --git a/multicluster/controllers/multicluster/core/resourceimport_controller_test.go b/multicluster/controllers/multicluster/core/resourceimport_controller_test.go index 8eaaf8ac5b6..6b96fb71085 100644 --- a/multicluster/controllers/multicluster/core/resourceimport_controller_test.go +++ b/multicluster/controllers/multicluster/core/resourceimport_controller_test.go @@ -82,8 +82,7 @@ var ( { Addresses: []corev1.EndpointAddress{ { - IP: "192.168.17.11", - Hostname: "pod1", + IP: "192.168.17.11", }, }, Ports: []corev1.EndpointPort{ @@ -302,8 +301,7 @@ func TestResourceImportReconciler_handleUpdateEvent(t *testing.T) { subSetA := corev1.EndpointSubset{ Addresses: []corev1.EndpointAddress{ { - IP: "192.168.17.12", - Hostname: "pod2", + IP: "192.168.17.12", }, }, Ports: []corev1.EndpointPort{ @@ -317,8 +315,7 @@ func TestResourceImportReconciler_handleUpdateEvent(t *testing.T) { subSetB := corev1.EndpointSubset{ Addresses: []corev1.EndpointAddress{ { - IP: "10.10.11.13", - Hostname: "pod1", + IP: "10.10.11.13", }, }, Ports: []corev1.EndpointPort{ diff --git a/multicluster/controllers/multicluster/serviceexport_controller.go b/multicluster/controllers/multicluster/serviceexport_controller.go index 4ede34ebbf8..4417f495595 100644 --- a/multicluster/controllers/multicluster/serviceexport_controller.go +++ b/multicluster/controllers/multicluster/serviceexport_controller.go @@ -523,7 +523,7 @@ func (r *ServiceExportReconciler) refreshResourceExport(resName, kind string, case common.EndpointsKind: re.ObjectMeta.Name = resName re.Spec.Endpoints = &mcsv1alpha1.EndpointsExport{ - Subsets: ep.Subsets, + Subsets: common.FilterSubsets(ep.Subsets), } re.Labels["sourceKind"] = common.EndpointsKind } diff --git a/multicluster/controllers/multicluster/serviceexport_controller_test.go b/multicluster/controllers/multicluster/serviceexport_controller_test.go index e096b93e929..d8a23865818 100644 --- a/multicluster/controllers/multicluster/serviceexport_controller_test.go +++ b/multicluster/controllers/multicluster/serviceexport_controller_test.go @@ -286,7 +286,9 @@ func TestServiceExportReconciler_handleServiceUpdateEvent(t *testing.T) { expectedSubsets := []corev1.EndpointSubset{ { Addresses: []corev1.EndpointAddress{ - addr1, + { + IP: "192.168.17.11", + }, }, Ports: epPorts8080, },