diff --git a/pkg/controller/common/constants.go b/pkg/controller/common/constants.go index d3e4c7578c..64f0fd38da 100644 --- a/pkg/controller/common/constants.go +++ b/pkg/controller/common/constants.go @@ -146,9 +146,6 @@ const ( // Stub Ignition upgrade related annotation keys StubIgnitionVersionAnnotation = "machineconfiguration.openshift.io/stub-ignition-upgraded-to" StubIgnitionTimestampAnnotation = "machineconfiguration.openshift.io/stub-ignition-upgraded-at" - - // NodeSizingEnabledEnvPath is the file path for the node sizing enabled environment file - NodeSizingEnabledEnvPath = "/etc/node-sizing-enabled.env" ) // Commonly-used MCO ConfigMap names diff --git a/pkg/controller/kubelet-config/helpers.go b/pkg/controller/kubelet-config/helpers.go index 37506fef42..50c0c597ab 100644 --- a/pkg/controller/kubelet-config/helpers.go +++ b/pkg/controller/kubelet-config/helpers.go @@ -68,7 +68,7 @@ func createNewKubeletDynamicSystemReservedIgnition(autoSystemReserved *bool, use config := fmt.Sprintf("NODE_SIZING_ENABLED=%s\nSYSTEM_RESERVED_MEMORY=%s\nSYSTEM_RESERVED_CPU=%s\nSYSTEM_RESERVED_ES=%s\n", autoNodeSizing, systemReservedMemory, systemReservedCPU, systemReservedEphemeralStorage) - r := ctrlcommon.NewIgnFileBytesOverwriting(ctrlcommon.NodeSizingEnabledEnvPath, []byte(config)) + r := ctrlcommon.NewIgnFileBytesOverwriting("/etc/node-sizing-enabled.env", []byte(config)) return &r } diff --git a/pkg/controller/template/template_controller_test.go b/pkg/controller/template/template_controller_test.go index 0c0373f70c..d48e459da0 100644 --- a/pkg/controller/template/template_controller_test.go +++ b/pkg/controller/template/template_controller_test.go @@ -3,7 +3,6 @@ package template import ( "fmt" "reflect" - "strings" "testing" "time" @@ -449,118 +448,3 @@ func getKey(config *mcfgv1.ControllerConfig, t *testing.T) string { } return key } - -func TestKubeletAutoNodeSizingEnabled(t *testing.T) { - cc := newControllerConfig("test-cluster") - ps := []byte(`{"dummy": "dummy"}`) - - mcs, err := getMachineConfigsForControllerConfig(templateDir, cc, ps, nil) - if err != nil { - t.Fatal(err) - } - - // Find machine configs that should contain the auto-node-sizing file - // The file should be in all role-based machine configs (master, worker) - autoSizingFileFound := false - for _, mc := range mcs { - ignCfg, err := ctrlcommon.ParseAndConvertConfig(mc.Spec.Config.Raw) - if err != nil { - t.Fatalf("Failed to parse ignition config for %s: %v", mc.Name, err) - } - - // Look for the auto-node-sizing file - for _, file := range ignCfg.Storage.Files { - if file.Path == ctrlcommon.NodeSizingEnabledEnvPath { - autoSizingFileFound = true - - // Decode the file contents - contents, err := ctrlcommon.DecodeIgnitionFileContents(file.Contents.Source, file.Contents.Compression) - if err != nil { - t.Fatalf("Failed to decode auto-node-sizing file contents: %v", err) - } - - contentsStr := string(contents) - - // Verify NODE_SIZING_ENABLED=true is present - if !strings.Contains(contentsStr, "NODE_SIZING_ENABLED=true") { - t.Errorf("Expected NODE_SIZING_ENABLED=true in %s, got: %s", mc.Name, contentsStr) - } - - // Verify other expected values - if !strings.Contains(contentsStr, "SYSTEM_RESERVED_MEMORY=1Gi") { - t.Errorf("Expected SYSTEM_RESERVED_MEMORY=1Gi in %s, got: %s", mc.Name, contentsStr) - } - - if !strings.Contains(contentsStr, "SYSTEM_RESERVED_CPU=500m") { - t.Errorf("Expected SYSTEM_RESERVED_CPU=500m in %s, got: %s", mc.Name, contentsStr) - } - - if !strings.Contains(contentsStr, "SYSTEM_RESERVED_ES=1Gi") { - t.Errorf("Expected SYSTEM_RESERVED_ES=1Gi in %s, got: %s", mc.Name, contentsStr) - } - } - } - } - - if !autoSizingFileFound { - t.Errorf("Expected to find %s file in at least one machine config", ctrlcommon.NodeSizingEnabledEnvPath) - } -} - -func TestKubeletAutoNodeSizingDisabledForHypershift(t *testing.T) { - cc := newControllerConfig("test-cluster") - // Set ControlPlaneTopology to External to simulate Hypershift - cc.Spec.Infra.Status.ControlPlaneTopology = configv1.ExternalTopologyMode - ps := []byte(`{"dummy": "dummy"}`) - - mcs, err := getMachineConfigsForControllerConfig(templateDir, cc, ps, nil) - if err != nil { - t.Fatal(err) - } - - // Find machine configs that should contain the auto-node-sizing file - autoSizingFileFound := false - for _, mc := range mcs { - ignCfg, err := ctrlcommon.ParseAndConvertConfig(mc.Spec.Config.Raw) - if err != nil { - t.Fatalf("Failed to parse ignition config for %s: %v", mc.Name, err) - } - - // Look for the auto-node-sizing file - for _, file := range ignCfg.Storage.Files { - if file.Path == ctrlcommon.NodeSizingEnabledEnvPath { - autoSizingFileFound = true - - // Decode the file contents - contents, err := ctrlcommon.DecodeIgnitionFileContents(file.Contents.Source, file.Contents.Compression) - if err != nil { - t.Fatalf("Failed to decode auto-node-sizing file contents: %v", err) - } - - contentsStr := string(contents) - - // Verify NODE_SIZING_ENABLED=false is present for Hypershift - if !strings.Contains(contentsStr, "NODE_SIZING_ENABLED=false") { - t.Errorf("Expected NODE_SIZING_ENABLED=false for Hypershift in %s, got: %s", mc.Name, contentsStr) - } - - // Verify other expected values are still present - if !strings.Contains(contentsStr, "SYSTEM_RESERVED_MEMORY=1Gi") { - t.Errorf("Expected SYSTEM_RESERVED_MEMORY=1Gi in %s, got: %s", mc.Name, contentsStr) - } - - if !strings.Contains(contentsStr, "SYSTEM_RESERVED_CPU=500m") { - t.Errorf("Expected SYSTEM_RESERVED_CPU=500m in %s, got: %s", mc.Name, contentsStr) - } - - if !strings.Contains(contentsStr, "SYSTEM_RESERVED_ES=1Gi") { - t.Errorf("Expected SYSTEM_RESERVED_ES=1Gi in %s, got: %s", mc.Name, contentsStr) - } - } - } - } - - if !autoSizingFileFound { - t.Errorf("Expected to find %s file in at least one machine config", ctrlcommon.NodeSizingEnabledEnvPath) - } -} diff --git a/templates/common/_base/files/kubelet-auto-node-sizing-enabled.yaml b/templates/common/_base/files/kubelet-auto-node-sizing-enabled.yaml index 29c514d9b3..d1c72a540f 100644 --- a/templates/common/_base/files/kubelet-auto-node-sizing-enabled.yaml +++ b/templates/common/_base/files/kubelet-auto-node-sizing-enabled.yaml @@ -2,7 +2,7 @@ mode: 0644 path: "/etc/node-sizing-enabled.env" contents: inline: | - NODE_SIZING_ENABLED={{if eq .Infra.Status.ControlPlaneTopology "External"}}false{{else}}true{{end}} + NODE_SIZING_ENABLED=false SYSTEM_RESERVED_MEMORY=1Gi SYSTEM_RESERVED_CPU=500m SYSTEM_RESERVED_ES=1Gi \ No newline at end of file diff --git a/test/e2e-2of2/kubeletcfg_test.go b/test/e2e-2of2/kubeletcfg_test.go index 4b40128af8..2cd2f73995 100644 --- a/test/e2e-2of2/kubeletcfg_test.go +++ b/test/e2e-2of2/kubeletcfg_test.go @@ -50,13 +50,11 @@ func TestKubeletConfigDefaultUpdateFreq(t *testing.T) { func TestKubeletConfigMaxPods(t *testing.T) { kcRaw1, err := kcfg.EncodeKubeletConfig(&kubeletconfigv1beta1.KubeletConfiguration{MaxPods: 100}, kubeletconfigv1beta1.SchemeGroupVersion, runtime.ContentTypeJSON) require.Nil(t, err, "failed to encode kubelet config") - autoNodeSizingEnabled := true - autoNodeSizingDisabled := false - // Initial default is enabled + autoNodeSizing := true kc1 := &mcfgv1.KubeletConfig{ ObjectMeta: metav1.ObjectMeta{Name: "test-101"}, Spec: mcfgv1.KubeletConfigSpec{ - AutoSizingReserved: &autoNodeSizingDisabled, + AutoSizingReserved: &autoNodeSizing, KubeletConfig: &runtime.RawExtension{ Raw: kcRaw1, }, @@ -67,7 +65,6 @@ func TestKubeletConfigMaxPods(t *testing.T) { kc2 := &mcfgv1.KubeletConfig{ ObjectMeta: metav1.ObjectMeta{Name: "test-200"}, Spec: mcfgv1.KubeletConfigSpec{ - AutoSizingReserved: &autoNodeSizingEnabled, KubeletConfig: &runtime.RawExtension{ Raw: kcRaw2, }, diff --git a/test/e2e-bootstrap/bootstrap_test.go b/test/e2e-bootstrap/bootstrap_test.go index 4d1e7b584a..c8ceb05354 100644 --- a/test/e2e-bootstrap/bootstrap_test.go +++ b/test/e2e-bootstrap/bootstrap_test.go @@ -389,97 +389,6 @@ metadata: } } -func TestNodeSizingEnabled(t *testing.T) { - ctx := context.Background() - - testEnv := framework.NewTestEnv(t) - - configv1.Install(scheme.Scheme) - configv1alpha1.Install(scheme.Scheme) - mcfgv1.Install(scheme.Scheme) - apioperatorsv1alpha1.Install(scheme.Scheme) - - baseTestManifests := loadBaseTestManifests(t) - - cfg, err := testEnv.Start() - require.NoError(t, err) - defer func() { - assert.NoError(t, testEnv.Stop()) - }() - - clientSet := framework.NewClientSetFromConfig(cfg) - - _, err = clientSet.Namespaces().Create(ctx, &corev1.Namespace{ - ObjectMeta: metav1.ObjectMeta{ - Name: framework.OpenshiftConfigNamespace, - }, - }, metav1.CreateOptions{}) - require.NoError(t, err) - - _, err = clientSet.Namespaces().Create(ctx, &corev1.Namespace{ - ObjectMeta: metav1.ObjectMeta{ - Name: bootstrapTestName, - }, - }, metav1.CreateOptions{}) - require.NoError(t, err) - - objs := append([]runtime.Object{}, baseTestManifests...) - - // Add node config - nodeConfigManifest := [][]byte{ - []byte(`apiVersion: config.openshift.io/v1 -kind: Node -metadata: - name: cluster`), - } - objs = append(objs, loadRawManifests(t, nodeConfigManifest)...) - - fixture := newTestFixture(t, cfg, objs) - defer framework.CleanEnvironment(t, clientSet) - defer fixture.stop() - - // Fetch the controller rendered configurations - controllerRenderedMasterConfigName, err := helpers.WaitForRenderedConfigs(t, clientSet, "master", []string{"99-master-ssh", "99-master-generated-registries"}...) - require.NoError(t, err) - t.Logf("Controller rendered master config as %q", controllerRenderedMasterConfigName) - - controllerRenderedWorkerConfigName, err := helpers.WaitForRenderedConfigs(t, clientSet, "worker", []string{"99-worker-ssh", "99-worker-generated-registries"}...) - require.NoError(t, err) - t.Logf("Controller rendered worker config as %q", controllerRenderedWorkerConfigName) - - // Verify node sizing enabled file for master - verifyNodeSizingEnabled(t, clientSet, controllerRenderedMasterConfigName) - - // Verify node sizing enabled file for worker - verifyNodeSizingEnabled(t, clientSet, controllerRenderedWorkerConfigName) -} - -func verifyNodeSizingEnabled(t *testing.T, clientSet *framework.ClientSet, renderedConfigName string) { - controllerMC, err := clientSet.MachineConfigs().Get(context.Background(), renderedConfigName, metav1.GetOptions{}) - require.NoError(t, err) - - ignCfg, err := ctrlcommon.ParseAndConvertConfig(controllerMC.Spec.Config.Raw) - require.NoError(t, err) - - // Find the node sizing enabled file - var foundFile bool - for _, file := range ignCfg.Storage.Files { - if file.Path == "/etc/node-sizing-enabled.env" { - foundFile = true - - // Decode the file contents - contents, err := ctrlcommon.DecodeIgnitionFileContents(file.Contents.Source, file.Contents.Compression) - require.NoError(t, err, "Failed to decode node-sizing-enabled.env file contents") - - contentsStr := string(contents) - require.Contains(t, contentsStr, "NODE_SIZING_ENABLED=true", "Expected /etc/node-sizing-enabled.env to contain NODE_SIZING_ENABLED=true in machine config %s", renderedConfigName) - break - } - } - - require.True(t, foundFile, "Expected to find /etc/node-sizing-enabled.env in machine config %s", renderedConfigName) -} - func compareRenderedConfigPool(t *testing.T, clientSet *framework.ClientSet, destDir, poolName, controllerRenderedConfigName string) { paths, err := filepath.Glob(filepath.Join(destDir, "machine-configs", fmt.Sprintf("rendered-%s-*.yaml", poolName))) require.NoError(t, err)