{"record":{"id":"6c86fbb65a16c1fd","repo":"kubernetes/kops","slug":"creating-gce-ipam-controller-w","errorCode":null,"errorMessage":"creating gce IPAM controller: %w","messagePattern":"creating gce IPAM controller: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/kops-controller/main.go","lineNumber":412,"sourceCode":"// Reconciler is the interface for a standard Reconciler.\ntype Reconciler interface {\n\tSetupWithManager(mgr manager.Manager) error\n}\n\nfunc setupCloudIPAM(ctx context.Context, mgr manager.Manager, opt *config.Options) error {\n\tsetupLog.Info(\"enabling IPAM controller\")\n\tvar controller Reconciler\n\tswitch opt.Cloud {\n\tcase \"aws\":\n\t\tipamController, err := controllers.NewAWSIPAMReconciler(ctx, mgr)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"creating aws IPAM controller: %w\", err)\n\t\t}\n\t\tcontroller = ipamController\n\tcase \"gce\":\n\t\tipamController, err := controllers.NewGCEIPAMReconciler(mgr)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"creating gce IPAM controller: %w\", err)\n\t\t}\n\t\tcontroller = ipamController\n\tcase \"metal\":\n\t\tipamController, err := controllers.NewMetalIPAMReconciler(ctx, mgr)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"creating metal IPAM controller: %w\", err)\n\t\t}\n\t\tcontroller = ipamController\n\tdefault:\n\t\treturn fmt.Errorf(\"kOps IPAM controller is not supported on cloud %q\", opt.Cloud)\n\t}\n\n\tif err := controller.SetupWithManager(mgr); err != nil {\n\t\treturn fmt.Errorf(\"registering IPAM controller: %w\", err)\n\t}\n\n\treturn nil\n}","sourceCodeStart":394,"sourceCodeEnd":430,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/cmd/kops-controller/main.go#L394-L430","documentation":"kops-controller failed while constructing the GCE IPAM reconciler, which manages Google Cloud IP address allocation for nodes. NewGCEIPAMReconciler returned an error and setupCloudIPAM wraps it with this message. Startup of the controller manager aborts.","triggerScenarios":"controllers.NewGCEIPAMReconciler(mgr) returns err; triggered when opt.Cloud == \"gce\" with the IPAM controller enabled.","commonSituations":"Missing or invalid GCP service-account credentials; failure constructing the GCE cloud client; wrong --cloud value on a non-GCP environment after config edit; kops upgrade incompatibility.","solutions":["Read the wrapped cause in the log for the concrete NewGCEIPAMReconciler failure","Verify GCP credentials/project are correctly configured for the controller","Check that --cloud=gce matches the actual environment","Disable the IPAM controller if GCE IPAM is not in use"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// before enabling IPAM on gce\nif opt.Cloud == \"gce\" {\n\tif os.Getenv(\"GOOGLE_APPLICATION_CREDENTIALS\") == \"\" {\n\t\treturn fmt.Errorf(\"GCE credentials not configured\")\n\t}\n}","typeGuard":null,"tryCatchPattern":"if err := setupCloudIPAM(ctx, controllers, mgr, opt); err != nil {\n\tsetupLog.Error(err, \"IPAM controller setup failed\")\n\tos.Exit(1)\n}","preventionTips":["Validate GCP credentials/project before deploying kops-controller","Keep kops-controller version aligned with cluster kops version","Confirm the --cloud flag matches the actual infrastructure"],"tags":["gce","gcp","ipam","controller-runtime","startup"],"backgroundTag":"controller-init-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"}