{"record":{"id":"7009dbaaeb5a19db","repo":"kubernetes/kops","slug":"bare-metal-support-requires-the-metal-feature-flag-7009db","errorCode":null,"errorMessage":"bare-metal support requires the Metal feature flag to be enabled","messagePattern":"bare-metal support requires the Metal feature flag to be enabled","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/new_cluster.go","lineNumber":389,"sourceCode":"\t\t\tMonitor: &api.OpenstackMonitor{\n\t\t\t\tDelay:      new(\"15s\"),\n\t\t\t\tTimeout:    new(\"10s\"),\n\t\t\t\tMaxRetries: new(3),\n\t\t\t},\n\t\t}\n\t\tinitializeOpenstack(opt, cluster)\n\t\tosCloud, err := openstack.NewOpenstackCloud(cluster, \"openstackmodel\")\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tcloud = osCloud\n\tcase api.CloudProviderScaleway:\n\t\tcluster.Spec.CloudProvider.Scaleway = &api.ScalewaySpec{}\n\tcase api.CloudProviderLinode:\n\t\tcluster.Spec.CloudProvider.Linode = &api.LinodeSpec{}\n\tcase api.CloudProviderMetal:\n\t\tif !featureflag.Metal.Enabled() {\n\t\t\treturn nil, fmt.Errorf(\"bare-metal support requires the Metal feature flag to be enabled\")\n\t\t}\n\t\tif cluster.Labels == nil {\n\t\t\tcluster.Labels = make(map[string]string)\n\t\t}\n\t\tcluster.Labels[api.AlphaLabelCloudProvider] = string(api.CloudProviderMetal)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unsupported cloud provider %s\", opt.CloudProvider)\n\t}\n\n\tif opt.DiscoveryStore != \"\" {\n\t\tdiscoveryPath, err := clientset.VFSContext().BuildVfsPath(opt.DiscoveryStore)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error building DiscoveryStore for cluster: %v\", err)\n\t\t}\n\t\tcluster.Spec.ServiceAccountIssuerDiscovery = &api.ServiceAccountIssuerDiscoveryConfig{\n\t\t\tDiscoveryStore: discoveryPath.Join(cluster.Name).Path(),\n\t\t}\n\t\tif cluster.GetCloudProvider() == api.CloudProviderAWS {","sourceCodeStart":371,"sourceCodeEnd":407,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/new_cluster.go#L371-L407","documentation":"The Metal (bare-metal) cloud provider is gated behind the experimental `Metal` feature flag. Selecting CloudProviderMetal without enabling that flag returns this error, since bare-metal support is not considered stable.","triggerScenarios":"`kops create cluster --cloud metal` (or opt.CloudProvider == \"metal\") while the KOPS_FEATURE_FLAGS environment variable or featureflag.Metal is not enabled.","commonSituations":"Trying bare-metal on a stock kOps install; CI environments that enable metal only in some jobs; users following experimental docs without setting the flag.","solutions":["Enable the flag: export KOPS_FEATURE_FLAGS=Metal (or add to existing feature flags)","Choose a supported stable cloud provider instead","Upgrade kOps if a newer release has graduated Metal support"],"exampleFix":"// before\nkops create cluster --cloud metal --name c.example.com\n// after\nexport KOPS_FEATURE_FLAGS=Metal\nkops create cluster --cloud metal --name c.example.com","handlingStrategy":"validation","validationCode":"if opt.CloudProvider == string(api.CloudProviderMetal) && !featureflag.Metal.Enabled() {\n    return fmt.Errorf(\"set KOPS_FEATURE_FLAGS=Metal before using --cloud metal\")\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Export KOPS_FEATURE_FLAGS=Metal for bare-metal work","Check featureflag.Metal.Enabled() in automation before selecting metal","Prefer stable providers unless testing bare metal"],"tags":["feature-flag","metal","bare-metal"],"backgroundTag":"feature-flag-not-enabled","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"}