diff --git a/pkg/controller/endpointslicemirroring/utils.go b/pkg/controller/endpointslicemirroring/utils.go index 65b316ae681..aa1d860da04 100644 --- a/pkg/controller/endpointslicemirroring/utils.go +++ b/pkg/controller/endpointslicemirroring/utils.go @@ -88,10 +88,7 @@ func newEndpointSlice(endpoints *corev1.Endpoints, ports []discovery.EndpointPor ownerRef := metav1.NewControllerRef(endpoints, gvk) epSlice := &discovery.EndpointSlice{ ObjectMeta: metav1.ObjectMeta{ - Labels: map[string]string{ - discovery.LabelServiceName: endpoints.Name, - discovery.LabelManagedBy: controllerName, - }, + Labels: map[string]string{}, OwnerReferences: []metav1.OwnerReference{*ownerRef}, Namespace: endpoints.Namespace, }, @@ -100,6 +97,13 @@ func newEndpointSlice(endpoints *corev1.Endpoints, ports []discovery.EndpointPor Endpoints: []discovery.Endpoint{}, } + for label, val := range endpoints.Labels { + epSlice.Labels[label] = val + } + + epSlice.Labels[discovery.LabelServiceName] = endpoints.Name + epSlice.Labels[discovery.LabelManagedBy] = controllerName + if sliceName == "" { epSlice.GenerateName = getEndpointSlicePrefix(endpoints.Name) } else { diff --git a/pkg/controller/endpointslicemirroring/utils_test.go b/pkg/controller/endpointslicemirroring/utils_test.go index ef374b8350b..9944f191edf 100644 --- a/pkg/controller/endpointslicemirroring/utils_test.go +++ b/pkg/controller/endpointslicemirroring/utils_test.go @@ -39,7 +39,11 @@ func TestNewEndpointSlice(t *testing.T) { addrType := discovery.AddressTypeIPv4 endpoints := v1.Endpoints{ - ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "test"}, + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "test", + Labels: map[string]string{"foo": "bar"}, + }, Subsets: []v1.EndpointSubset{{ Ports: []v1.EndpointPort{{Port: 80}}, }}, @@ -51,6 +55,7 @@ func TestNewEndpointSlice(t *testing.T) { expectedSlice := discovery.EndpointSlice{ ObjectMeta: metav1.ObjectMeta{ Labels: map[string]string{ + "foo": "bar", discovery.LabelServiceName: endpoints.Name, discovery.LabelManagedBy: controllerName, }, @@ -65,6 +70,10 @@ func TestNewEndpointSlice(t *testing.T) { generatedSlice := newEndpointSlice(&endpoints, ports, addrType, "") assert.EqualValues(t, expectedSlice, *generatedSlice) + + if len(endpoints.Labels) > 1 { + t.Errorf("Expected Endpoints labels to not be modified, got %+v", endpoints.Labels) + } } // Test helpers