{"record":{"id":"fff96a9e9aca112c","repo":"kubernetes/kops","slug":"apiserver-nodes-requires-the-apiservernodes-featur-fff96a","errorCode":null,"errorMessage":"apiserver nodes requires the APIServerNodes feature flag to be enabled","messagePattern":"apiserver nodes requires the APIServerNodes feature flag to be enabled","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/populate_instancegroup_spec.go","lineNumber":121,"sourceCode":"\t\tif ig.Spec.MaxSize == nil {\n\t\t\tig.Spec.MaxSize = new(int32(1))\n\t\t}\n\t} else if ig.Spec.Role.HasBastion() {\n\t\tif ig.Spec.MachineType == \"\" {\n\t\t\tig.Spec.MachineType, err = defaultMachineType(cloud, cluster, ig)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"error assigning default machine type for bastions: %v\", err)\n\t\t\t}\n\t\t}\n\t\tif ig.Spec.MinSize == nil {\n\t\t\tig.Spec.MinSize = new(int32(1))\n\t\t}\n\t\tif ig.Spec.MaxSize == nil {\n\t\t\tig.Spec.MaxSize = new(int32(1))\n\t\t}\n\t} else {\n\t\tif ig.IsAPIServerOnly() && !featureflag.APIServerNodes.Enabled() {\n\t\t\treturn nil, fmt.Errorf(\"apiserver nodes requires the APIServerNodes feature flag to be enabled\")\n\t\t}\n\t\tif !featureflag.ExperimentalRoles.Enabled() {\n\t\t\tswitch {\n\t\t\tcase ig.Spec.Role.HasEtcd():\n\t\t\t\treturn nil, fmt.Errorf(\"etcd nodes requires the ExperimentalNodes feature flag to be enabled\")\n\t\t\tcase ig.Spec.Role.HasScheduler():\n\t\t\t\treturn nil, fmt.Errorf(\"scheduler nodes requires the ExperimentalNodes feature flag to be enabled\")\n\t\t\tcase ig.Spec.Role.HasKubeControllerManager():\n\t\t\t\treturn nil, fmt.Errorf(\"kube-controller-manager nodes requires the ExperimentalNodes feature flag to be enabled\")\n\t\t\t}\n\t\t}\n\t\tif ig.Spec.MachineType == \"\" {\n\t\t\tig.Spec.MachineType, err = defaultMachineType(cloud, cluster, ig)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"error assigning default machine type for nodes: %v\", err)\n\t\t\t}\n\t\t}\n\t\tif ig.Spec.Manager != kops.InstanceManagerKarpenter {","sourceCodeStart":103,"sourceCodeEnd":139,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/populate_instancegroup_spec.go#L103-L139","documentation":"The InstanceGroup uses the apiserver-only role, but the APIServerNodes feature flag is not enabled. Apiserver nodes are experimental; kops refuses to populate specs for them unless the flag is turned on via KOPS_FEATURE_FLAGS.","triggerScenarios":"Thrown at upup/pkg/fi/cloudup/populate_instancegroup_spec.go:121 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Enable the flag: KOPS_FEATURE_FLAGS=APIServerNodes","Or change the instance group role to a supported non-experimental role"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T07:17:12.445Z"}