{"record":{"id":"8d2e4f15b5850fc7","repo":"kubernetes/kops","slug":"error-building-well-known-operators-v","errorCode":null,"errorMessage":"error building well-known operators: %v","messagePattern":"error building well-known operators: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/bootstrapchannelbuilder/bootstrapchannelbuilder.go","lineNumber":140,"sourceCode":"\t\t}\n\t\tmanifestPath := \"addons/\" + *addon.Spec.Manifest\n\t\tmanifestResource := b.templates.Find(manifestPath)\n\t\tif manifestResource == nil {\n\t\t\treturn fmt.Errorf(\"unable to find manifest %s\", manifestPath)\n\t\t}\n\t\taddon.Source = manifestResource\n\t\taddon.SkipRender = !b.templates.IsTemplate(manifestPath)\n\t}\n\n\tif featureflag.UseAddonOperators.Enabled() {\n\t\tob := &wellknownoperators.Builder{\n\t\t\tVFSContext: vfs.Context,\n\t\t\tCluster:    b.Cluster,\n\t\t}\n\n\t\taddonPackages, clusterAddons, err := ob.Build(b.ClusterAddons)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error building well-known operators: %v\", err)\n\t\t}\n\t\tb.ClusterAddons = clusterAddons\n\n\t\tfor _, pkg := range addonPackages {\n\t\t\taddons.AddWithSource(&pkg.Spec, fi.NewBytesResource(pkg.Manifest))\n\t\t}\n\t}\n\n\t// Not all objects in ClusterAddons should be applied to the cluster - although most should.\n\t// However, there are a handful of well-known exceptions:\n\t// e.g. configuration objects which are instead configured via files on the nodes.\n\tvar applyAdditionalObjectsToCluster kubemanifest.ObjectList\n\tif b.ClusterAddons != nil {\n\t\tfor _, addon := range b.ClusterAddons {\n\t\t\tapplyToCluster := true\n\n\t\t\tif addon.GroupVersionKind().GroupKind() == (schema.GroupKind{Group: \"kubescheduler.config.k8s.io\", Kind: \"KubeSchedulerConfiguration\"}) {\n\t\t\t\tapplyToCluster = false","sourceCodeStart":122,"sourceCodeEnd":158,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/bootstrapchannelbuilder/bootstrapchannelbuilder.go#L122-L158","documentation":"When the UseAddonOperators feature flag is enabled, Build constructs an operator builder (ob) and calls ob.Build(b.ClusterAddons) to compute well-known operator addon packages. This error wraps any failure from that build, e.g. invalid addon specs or failed manifest generation.","triggerScenarios":"Running cluster build/normalize with the UseAddonOperators feature flag enabled and ob.Build failing on an addon in the cluster's addon list (invalid spec, missing operator manifest, bad addon data).","commonSituations":"Experimental use of KOPS_FEATURE_FLAGS=UseAddonOperators; custom addons incompatible with the operator pipeline; corrupted channel addons cached in state store.","solutions":["Read the wrapped %v error for the underlying cause","Disable the feature flag: kops set cluster / KOPS_FEATURE_FLAGS without UseAddonOperators","Fix the offending addon spec reported by the wrapped error","Upgrade kops to a release with stabilized addon-operator support","Re-download/rebuild channel addons from a clean state store"],"exampleFix":"// before\nexport KOPS_FEATURE_FLAGS=UseAddonOperators\n// after (disable experimental operator builder)\nunset KOPS_FEATURE_FLAGS","handlingStrategy":"try-catch","validationCode":"// Only enable the flag on supported kops versions\nif featureflag.UseAddonOperators.Enabled() && !kopsVersionSupportsAddonOperators {\n    return errors.New(\"UseAddonOperators unsupported; unset flag\")\n}","typeGuard":null,"tryCatchPattern":"if err := ob.Build(clusterAddons); err != nil {\n    klog.Warningf(\"addon-operator build failed, falling back: %v\", err)\n    return fallbackToStandardAddons()\n}","preventionTips":["Treat UseAddonOperators as experimental; test in staging first","Keep channel addons clean of hand-edits","Clear corrupted addon cache in the state store","Upgrade kops before enabling the flag"],"tags":["addons","feature-flag","operators","kops"],"backgroundTag":"addon-operator-build-failed","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"}