{"record":{"id":"43ca6ac177ef46a7","repo":"kubernetes/kops","slug":"error-loading-nodeupconfig-q-v-43ca6a","errorCode":null,"errorMessage":"error loading NodeupConfig %q: %v","messagePattern":"error loading NodeupConfig %q: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/nodeup/command.go","lineNumber":150,"sourceCode":"\n\tvar nodeupConfig nodeup.Config\n\tvar nodeupConfigHash [32]byte\n\tswitch {\n\tcase nodeConfig != nil:\n\t\tif err := utils.YamlUnmarshal([]byte(nodeConfig.NodeupConfig), &nodeupConfig); err != nil {\n\t\t\treturn fmt.Errorf(\"error parsing BootConfig config response: %v\", err)\n\t\t}\n\t\tnodeupConfigHash = sha256.Sum256([]byte(nodeConfig.NodeupConfig))\n\t\tif nodeupConfig.CAs == nil {\n\t\t\tnodeupConfig.CAs = make(map[string]string)\n\t\t}\n\t\tnodeupConfig.CAs[fi.CertificateIDCA] = bootConfig.ConfigServer.CACertificates\n\tcase bootConfig.InstanceGroupName != \"\":\n\t\tnodeupConfigLocation := configBase.Join(\"igconfig\", bootConfig.InstanceGroupRole.ToLowerString(), bootConfig.InstanceGroupName, \"nodeupconfig.yaml\")\n\n\t\tb, err := nodeupConfigLocation.ReadFile(ctx)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error loading NodeupConfig %q: %v\", nodeupConfigLocation, err)\n\t\t}\n\n\t\tif err = utils.YamlUnmarshal(b, &nodeupConfig); err != nil {\n\t\t\treturn fmt.Errorf(\"error parsing NodeupConfig %q: %v\", nodeupConfigLocation, err)\n\t\t}\n\t\tnodeupConfigHash = sha256.Sum256(b)\n\tdefault:\n\t\treturn fmt.Errorf(\"no instance group defined in nodeup config\")\n\t}\n\n\tif bootConfig.NodeupConfigHash != \"\" {\n\t\tif want, got := bootConfig.NodeupConfigHash, base64.StdEncoding.EncodeToString(nodeupConfigHash[:]); got != want {\n\t\t\treturn fmt.Errorf(\"nodeup config hash mismatch (was %q, expected %q)\", got, want)\n\t\t}\n\t}\n\n\terr = evaluateSpec(&nodeupConfig, bootConfig.CloudProvider, region)\n\tif err != nil {","sourceCodeStart":132,"sourceCodeEnd":168,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/nodeup/command.go#L132-L168","documentation":"In VFS mode (no config server), Run() loads the instance group's NodeupConfig from <ConfigBase>/igconfig/<role>/<instance-group>/nodeupconfig.yaml. This error is thrown when that file cannot be read from the VFS backend — missing file, wrong path, or storage access failure.","triggerScenarios":"bootConfig.InstanceGroupName is set and the read of configBase.Join(\"igconfig\", role, name, \"nodeupconfig.yaml\") fails: the object does not exist in the bucket, the bucket/path is wrong, or cloud-storage credentials/permissions deny the read.","commonSituations":"Instance group renamed or deleted in cluster spec but node still boots with the old name; state store bucket changed or contents deleted; IAM/SA credentials missing s3:GetObject/gs:objects.get on the state store; booting a node for an instance group whose config was never pushed ('kops update cluster' not run).","solutions":["Run 'kops update cluster --yes' to ensure igconfig/<role>/<group>/nodeupconfig.yaml exists in the state store.","Verify bootConfig.InstanceGroupName matches an existing instance group ('kops get ig') and the role spelling is correct.","Check the node's IAM role / service account has read access to the state-store bucket and prefix.","Confirm --state-store / ConfigBase points at the same location kops used to publish the config.","If the file was deleted, restore the state store from backup or recreate the cluster configuration."],"exampleFix":"// before: node launched for a deleted instance group\nBootConfig{InstanceGroupName: \"nodes-old\", ...} // igconfig/kubernetes.io/role/node/nodes-old/nodeupconfig.yaml missing\n// after\nBootConfig{InstanceGroupName: \"nodes\", ...} // matches existing igconfig","handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Verify state-store contents and node IAM read access before scaling up"],"tags":["go","nodeup","vfs","s3","configuration"],"backgroundTag":"nodeupconfig-not-found","analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T12:17:11.808Z"}