kubernetes/kops · critical
error registering kops control-plane cluster API: %v
Error message
error registering kops control-plane cluster API: %v
What it means
buildScheme conditionally registers the CAPI control-plane cluster API types when Cluster API is enabled; this wraps that AddToScheme call failing, an internal registration/build error rather than a runtime cluster problem.
Source
Thrown at cmd/kops-controller/main.go:306
func buildScheme(opt *config.Options) (*runtime.Scheme, error) {
scheme := runtime.NewScheme()
if err := corev1.AddToScheme(scheme); err != nil {
return nil, fmt.Errorf("error registering corev1: %v", err)
}
if err := v1alpha2.AddToScheme(scheme); err != nil {
return nil, fmt.Errorf("error registering kops/v1alpha2 API: %v", err)
}
// Needed so that the leader-election system can post events
if err := coordinationv1.AddToScheme(scheme); err != nil {
return nil, fmt.Errorf("error registering coordinationv1: %v", err)
}
if opt.CAPI.IsEnabled() {
if err := bootstrapapi.AddToScheme(scheme); err != nil {
return nil, fmt.Errorf("error registering kops bootstrap cluster API: %v", err)
}
if err := controlplaneapi.AddToScheme(scheme); err != nil {
return nil, fmt.Errorf("error registering kops control-plane cluster API: %v", err)
}
}
return scheme, nil
}
func addNodeController(ctx context.Context, mgr manager.Manager, opt *config.Options) error {
var capiManager *capimanager.Manager
if opt.CAPI.IsEnabled() {
capiManager = capimanager.NewManager(mgr.GetClient())
}
var identifier nodeidentity.Identifier
var err error
switch opt.Cloud {
case "aws":
identifier, err = nodeidentityaws.New(ctx, opt.CacheNodeidentityInfo)
if err != nil {View on GitHub (pinned to 4c8573c808)
Solutions
- Align cluster-api control-plane provider and core versions via `make gomod`
- Check go.mod for duplicate provider module versions
- Disable --cluster-api if CAPI support is not required
Defensive patterns
Strategy: validation
Validate before calling
if opt.CAPI.IsEnabled() {
if err := controlplaneapi.AddToScheme(scheme); err != nil {
return nil, err
}
}
Prevention
- Align control-plane provider module with cluster-api core version
- Check go.mod for duplicate provider versions after upgrades
- Cover CAPI-enabled scheme building in CI tests
When it happens
Trigger: opt.CAPI.IsEnabled() is true and controlplaneapi.AddToScheme(scheme) errors — duplicate registration or module version skew in the control-plane provider packages.
Common situations: CAPI control-plane provider version incompatible with the vendored sigs.k8s.io/cluster-api core version.
Related errors
- error registering kops bootstrap cluster API: %v
- error registering corev1: %v
- clientset is not initialized
- error registering kops/v1alpha2 API: %v
- error registering coordinationv1: %v
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/d37f1a5e074c65f9.
Report an issue: GitHub.