From 9c4c31e91428114691b494758d49e83edd03cff7 Mon Sep 17 00:00:00 2001 From: rafatio Date: Mon, 30 Sep 2024 17:42:50 -0300 Subject: [PATCH] feat: retrieve MaxPods configuration from Kops config --- .../kopscontrolplane_controller_test.go | 2 ++ utils/karpenter_utils.go | 1 + utils/karpenter_utils_test.go | 28 ++++++++++++++++++- ...arpenter_resource_output_node_pool_v1.yaml | 1 + 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/controllers/controlplane/kopscontrolplane_controller_test.go b/controllers/controlplane/kopscontrolplane_controller_test.go index eea39e7..291fa91 100644 --- a/controllers/controlplane/kopscontrolplane_controller_test.go +++ b/controllers/controlplane/kopscontrolplane_controller_test.go @@ -2072,6 +2072,7 @@ func TestPrepareCustomCloudResources(t *testing.T) { description: "Should generate files based on template with one NodePool v1", kopsClusterFunction: func(kopsCluster *kopsapi.Cluster) *kopsapi.Cluster { kopsCluster.Spec.Kubelet = &kopsapi.KubeletConfigSpec{ + MaxPods: helpers.Int32Ptr(60), KubeReserved: map[string]string{ "cpu": "150m", "memory": "150Mi", @@ -2172,6 +2173,7 @@ func TestPrepareCustomCloudResources(t *testing.T) { description: "Should generate files based on template with one NodePool V1 and one Provisioner", kopsClusterFunction: func(kopsCluster *kopsapi.Cluster) *kopsapi.Cluster { kopsCluster.Spec.Kubelet = &kopsapi.KubeletConfigSpec{ + MaxPods: helpers.Int32Ptr(60), KubeReserved: map[string]string{ "cpu": "150m", "memory": "150Mi", diff --git a/utils/karpenter_utils.go b/utils/karpenter_utils.go index 3daa016..111d432 100644 --- a/utils/karpenter_utils.go +++ b/utils/karpenter_utils.go @@ -158,6 +158,7 @@ func GetKubeletConfiguration(kubeletSpec *kopsapi.KubeletConfigSpec) *karpenterv } return &karpenterv1.KubeletConfiguration{ + MaxPods: kubeletSpec.MaxPods, SystemReserved: kubeletSpec.SystemReserved, KubeReserved: kubeletSpec.KubeReserved, } diff --git a/utils/karpenter_utils_test.go b/utils/karpenter_utils_test.go index fa2d502..ed181e1 100644 --- a/utils/karpenter_utils_test.go +++ b/utils/karpenter_utils_test.go @@ -111,6 +111,19 @@ func TestCreateEC2NodeClassV1FromKopsLaunchTemplateInfo(t *testing.T) { }, }, Spec: karpenterv1.EC2NodeClassSpec{ + Kubelet: &karpenterv1.KubeletConfiguration{ + MaxPods: helpers.Int32Ptr(60), + KubeReserved: map[string]string{ + "cpu": "150m", + "memory": "150Mi", + "ephemeral-storage": "1Gi", + }, + SystemReserved: map[string]string{ + "cpu": "150m", + "memory": "200Mi", + "ephemeral-storage": "1Gi", + }, + }, AMIFamily: &karpenterv1.AMIFamilyCustom, AMISelectorTerms: []karpenterv1.AMISelectorTerm{ { @@ -156,7 +169,6 @@ func TestCreateEC2NodeClassV1FromKopsLaunchTemplateInfo(t *testing.T) { "kops.k8s.io/instancegroup": "test-machine-pool", "KubernetesCluster": "test-cluster.test.k8s.cluster", }, - Kubelet: &karpenterv1.KubeletConfiguration{}, UserData: helpers.StringPtr("dummy content"), }, }, @@ -185,6 +197,20 @@ func TestCreateEC2NodeClassV1FromKopsLaunchTemplateInfo(t *testing.T) { kopsCluster := helpers.NewKopsCluster("test-cluster") + kopsCluster.Spec.Kubelet = &kopsapi.KubeletConfigSpec{ + MaxPods: helpers.Int32Ptr(60), + KubeReserved: map[string]string{ + "cpu": "150m", + "memory": "150Mi", + "ephemeral-storage": "1Gi", + }, + SystemReserved: map[string]string{ + "cpu": "150m", + "memory": "200Mi", + "ephemeral-storage": "1Gi", + }, + } + kmp := helpers.NewKopsMachinePool("test-machine-pool", "default", "test-cluster") terraformOutputDir := filepath.Join(os.TempDir(), kopsCluster.Name) diff --git a/utils/templates/tests/data/karpenter_resource_output_node_pool_v1.yaml b/utils/templates/tests/data/karpenter_resource_output_node_pool_v1.yaml index 0c0bc47..32dc00b 100644 --- a/utils/templates/tests/data/karpenter_resource_output_node_pool_v1.yaml +++ b/utils/templates/tests/data/karpenter_resource_output_node_pool_v1.yaml @@ -82,6 +82,7 @@ spec: cpu: 150m ephemeral-storage: 1Gi memory: 150Mi + maxPods: 60 systemReserved: cpu: 150m ephemeral-storage: 1Gi