Updating EndpointSliceMirroring controller to copy labels from Endpoints

The KEP specifies that the controller will "mirror all labels from the
Endpoints resource and all endpoints and ports from the corresponding subset".
I'd missed that in my initial implementation, this should fix that.
This commit is contained in:
Rob Scott 2020-07-24 17:36:56 -07:00
parent b826d394af
commit 52894d7bfb
No known key found for this signature in database
GPG Key ID: 90C19B2D4A99C91B
2 changed files with 18 additions and 5 deletions

View File

@ -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 {

View File

@ -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