mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 11:21:47 +00:00
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:
parent
b826d394af
commit
52894d7bfb
@ -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 {
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user