Skip to content

Commit

Permalink
Remove unnecessary subset info in exported Endpoints
Browse files Browse the repository at this point in the history
Keep IP only to exported Endpoints.

Signed-off-by: Lan Luo <[email protected]>
  • Loading branch information
luolanzone committed Dec 13, 2021
1 parent de91516 commit 2e94be8
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 9 deletions.
20 changes: 20 additions & 0 deletions multicluster/controllers/multicluster/common/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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{}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,7 @@ var (
{
Addresses: []corev1.EndpointAddress{
{
IP: "192.168.17.11",
Hostname: "pod1",
IP: "192.168.17.11",
},
},
Ports: []corev1.EndpointPort{
Expand Down Expand Up @@ -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{
Expand All @@ -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{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,9 @@ func TestServiceExportReconciler_handleServiceUpdateEvent(t *testing.T) {
expectedSubsets := []corev1.EndpointSubset{
{
Addresses: []corev1.EndpointAddress{
addr1,
{
IP: "192.168.17.11",
},
},
Ports: epPorts8080,
},
Expand Down

0 comments on commit 2e94be8

Please sign in to comment.