@@ -23,14 +23,14 @@ func Test_getLoadBalancerSKU(t *testing.T) {
2323 {
2424 name : "LoadBalancerSKU Standard" ,
2525 args : args {
26- sku : "Standard " ,
26+ sku : "standard " ,
2727 },
2828 want : aksnodeconfigv1 .LoadBalancerSku_LOAD_BALANCER_SKU_STANDARD ,
2929 },
3030 {
3131 name : "LoadBalancerSKU Basic" ,
3232 args : args {
33- sku : "Basic " ,
33+ sku : "basic " ,
3434 },
3535 want : aksnodeconfigv1 .LoadBalancerSku_LOAD_BALANCER_SKU_BASIC ,
3636 },
@@ -299,3 +299,110 @@ func TestIsKubeletServingCertificateRotationEnabled(t *testing.T) {
299299 })
300300 }
301301}
302+
303+ func TestValidateAndSetLinuxKubeletFlags_RemovesDeprecatedFlags (t * testing.T ) {
304+ kubeletFlags := map [string ]string {
305+ "--dynamic-config-dir" : "/var/lib/kubelet" ,
306+ "--non-masquerade-cidr" : "10.240.0.0/12" ,
307+ "--cni-bin-dir" : "/opt/cni/bin" ,
308+ "--cni-cache-dir" : "/var/lib/cni" ,
309+ "--cni-conf-dir" : "/etc/cni/net.d" ,
310+ "--docker-endpoint" : "npipe:////./pipe/docker_engine" ,
311+ "--image-pull-progress-deadline" : "30m" ,
312+ "--network-plugin" : "cni" ,
313+ "--network-plugin-mtu" : "1500" ,
314+ "--feature-gates" : "" ,
315+ }
316+
317+ ValidateAndSetLinuxKubeletFlags (kubeletFlags , newTestContainerService ("1.27.3" ), & datamodel.AgentPoolProfile {})
318+
319+ removedFlags := []string {
320+ "--dynamic-config-dir" ,
321+ "--non-masquerade-cidr" ,
322+ "--cni-bin-dir" ,
323+ "--cni-cache-dir" ,
324+ "--cni-conf-dir" ,
325+ "--docker-endpoint" ,
326+ "--image-pull-progress-deadline" ,
327+ "--network-plugin" ,
328+ "--network-plugin-mtu" ,
329+ }
330+
331+ for _ , flag := range removedFlags {
332+ if _ , exists := kubeletFlags [flag ]; exists {
333+ t .Fatalf ("expected flag %s to be removed" , flag )
334+ }
335+ }
336+ }
337+
338+ func TestValidateAndSetLinuxKubeletFlags_FeatureGatesByVersion (t * testing.T ) {
339+ testCases := []struct {
340+ name string
341+ version string
342+ initialFeatureGates string
343+ rotateServerCerts bool
344+ expectedFeatureGates map [string ]bool
345+ }{
346+ {
347+ name : "removes dynamic gate when version >= 1.24" ,
348+ version : "1.26.0" ,
349+ initialFeatureGates : "DynamicKubeletConfig=false,OtherFeature=true" ,
350+ expectedFeatureGates : map [string ]bool {
351+ "OtherFeature" : true ,
352+ },
353+ },
354+ {
355+ name : "adds dynamic and disable accelerator gates for 1.22" ,
356+ version : "1.22.6" ,
357+ initialFeatureGates : "FooBar=true" ,
358+ expectedFeatureGates : map [string ]bool {
359+ "FooBar" : true ,
360+ "DynamicKubeletConfig" : false ,
361+ "DisableAcceleratorUsageMetrics" : false ,
362+ },
363+ },
364+ {
365+ name : "does not add dynamic gate before 1.11" ,
366+ version : "1.10.13" ,
367+ initialFeatureGates : "" ,
368+ expectedFeatureGates : map [string ]bool {},
369+ },
370+ {
371+ name : "adds rotate kubelet server certificate gate when enabled" ,
372+ version : "1.28.2" ,
373+ initialFeatureGates : "" ,
374+ rotateServerCerts : true ,
375+ expectedFeatureGates : map [string ]bool {
376+ "RotateKubeletServerCertificate" : true ,
377+ },
378+ },
379+ }
380+
381+ for _ , tc := range testCases {
382+ t .Run (tc .name , func (t * testing.T ) {
383+ kubeletFlags := map [string ]string {
384+ "--feature-gates" : tc .initialFeatureGates ,
385+ }
386+ if tc .rotateServerCerts {
387+ kubeletFlags ["--rotate-server-certificates" ] = "true"
388+ }
389+
390+ ValidateAndSetLinuxKubeletFlags (kubeletFlags , newTestContainerService (tc .version ), & datamodel.AgentPoolProfile {})
391+
392+ featureGateMap := strKeyValToMapBool (kubeletFlags ["--feature-gates" ], "," , "=" )
393+ if ! reflect .DeepEqual (featureGateMap , tc .expectedFeatureGates ) {
394+ t .Fatalf ("unexpected feature gates: got %v, want %v" , featureGateMap , tc .expectedFeatureGates )
395+ }
396+ })
397+ }
398+ }
399+
400+ func newTestContainerService (version string ) * datamodel.ContainerService {
401+ return & datamodel.ContainerService {
402+ Properties : & datamodel.Properties {
403+ OrchestratorProfile : & datamodel.OrchestratorProfile {
404+ OrchestratorVersion : version ,
405+ },
406+ },
407+ }
408+ }
0 commit comments