From 33da273897d4b3c818534a22328824338dd26ad6 Mon Sep 17 00:00:00 2001 From: Peter Brachwitz Date: Thu, 11 Apr 2024 15:39:54 +0200 Subject: [PATCH] Review feedback: add additional server-side values missing --- pkg/controller/common/service_control.go | 7 ++++++ pkg/controller/common/service_control_test.go | 24 +++++++++++++------ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/pkg/controller/common/service_control.go b/pkg/controller/common/service_control.go index 011eb450a63..ece02911154 100644 --- a/pkg/controller/common/service_control.go +++ b/pkg/controller/common/service_control.go @@ -149,6 +149,13 @@ func applyServerSideValues(expected, reconciled *corev1.Service) { if expected.Spec.Type == corev1.ServiceTypeLoadBalancer && expected.Spec.LoadBalancerClass == nil { expected.Spec.LoadBalancerClass = reconciled.Spec.LoadBalancerClass } + + if expected.Spec.AllocateLoadBalancerNodePorts == nil { + expected.Spec.AllocateLoadBalancerNodePorts = reconciled.Spec.AllocateLoadBalancerNodePorts + } + if expected.Spec.ExternalTrafficPolicy == "" { + expected.Spec.ExternalTrafficPolicy = reconciled.Spec.ExternalTrafficPolicy + } } // hasNodePort returns for a given service type, if the service ports have a NodePort or not. diff --git a/pkg/controller/common/service_control_test.go b/pkg/controller/common/service_control_test.go index b6aef467f45..64040179077 100644 --- a/pkg/controller/common/service_control_test.go +++ b/pkg/controller/common/service_control_test.go @@ -564,29 +564,39 @@ func Test_applyServerSideValues(t *testing.T) { }}, }, { - name: "Reconciled InternalTrafficPolicy is used if the expected one is empty", + name: "Reconciled InternalTrafficPolicy/ExternalTrafficPolicy/AllocateLoadBalancerPorts are used if the expected one is empty", args: args{ expected: corev1.Service{Spec: corev1.ServiceSpec{}}, reconciled: corev1.Service{Spec: corev1.ServiceSpec{ - InternalTrafficPolicy: pointer(corev1.ServiceInternalTrafficPolicyCluster), + InternalTrafficPolicy: pointer(corev1.ServiceInternalTrafficPolicyCluster), + ExternalTrafficPolicy: corev1.ServiceExternalTrafficPolicyCluster, + AllocateLoadBalancerNodePorts: ptr.To(true), }}, }, want: corev1.Service{Spec: corev1.ServiceSpec{ - InternalTrafficPolicy: pointer(corev1.ServiceInternalTrafficPolicyCluster), + InternalTrafficPolicy: pointer(corev1.ServiceInternalTrafficPolicyCluster), + ExternalTrafficPolicy: corev1.ServiceExternalTrafficPolicyCluster, + AllocateLoadBalancerNodePorts: ptr.To(true), }}, }, { - name: "Expected InternalTrafficPolicy is used if not empty", + name: "Expected InternalTrafficPolicy/ExternalTrafficPolicy/AllocateLoadBalancerPorts are used if not empty", args: args{ expected: corev1.Service{Spec: corev1.ServiceSpec{ - InternalTrafficPolicy: pointer(corev1.ServiceInternalTrafficPolicyLocal), + InternalTrafficPolicy: pointer(corev1.ServiceInternalTrafficPolicyLocal), + ExternalTrafficPolicy: corev1.ServiceExternalTrafficPolicyLocal, + AllocateLoadBalancerNodePorts: ptr.To(false), }}, reconciled: corev1.Service{Spec: corev1.ServiceSpec{ - InternalTrafficPolicy: pointer(corev1.ServiceInternalTrafficPolicyCluster), + InternalTrafficPolicy: pointer(corev1.ServiceInternalTrafficPolicyCluster), + ExternalTrafficPolicy: corev1.ServiceExternalTrafficPolicyCluster, + AllocateLoadBalancerNodePorts: ptr.To(true), }}, }, want: corev1.Service{Spec: corev1.ServiceSpec{ - InternalTrafficPolicy: pointer(corev1.ServiceInternalTrafficPolicyLocal), + InternalTrafficPolicy: pointer(corev1.ServiceInternalTrafficPolicyLocal), + ExternalTrafficPolicy: corev1.ServiceExternalTrafficPolicyLocal, + AllocateLoadBalancerNodePorts: ptr.To(false), }}, }, {