{"record":{"id":"1b89a8e05474359f","repo":"kubernetes/kops","slug":"cannot-parse-configbase-q-w","errorCode":null,"errorMessage":"cannot parse ConfigBase %q: %w","messagePattern":"cannot parse ConfigBase %q: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"cmd/kops-controller/pkg/server/server.go","lineNumber":95,"sourceCode":"func NewServer(vfsContext *vfs.VFSContext, opt *config.Options, verifier bootstrap.Verifier, uncachedClient client.Client) (*Server, error) {\n\tserver := &http.Server{\n\t\tAddr: opt.Server.Listen,\n\t\tTLSConfig: &tls.Config{\n\t\t\tMinVersion: tls.VersionTLS12,\n\t\t},\n\t}\n\n\ts := &Server{\n\t\topt:            opt,\n\t\tcertNames:      sets.New(opt.Server.CertNames...),\n\t\tserver:         server,\n\t\tverifier:       verifier,\n\t\tuncachedClient: uncachedClient,\n\t}\n\n\tconfigBase, err := vfsContext.BuildVfsPath(opt.ConfigBase)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"cannot parse ConfigBase %q: %w\", opt.ConfigBase, err)\n\t}\n\ts.configBase = configBase\n\n\ts.keystore, s.keypairIDs, err = newKeystore(opt.Server.CABasePath, opt.Server.SigningCAs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tp, err := vfsContext.BuildVfsPath(opt.SecretStore)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"cannot parse SecretStore %q: %w\", opt.SecretStore, err)\n\t}\n\ts.secretStore = secrets.NewVFSSecretStore(nil, p)\n\n\tclientset, err := controllerclientset.New(vfsContext, configBase, opt.ClusterName, s.keystore, s.secretStore)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"building controller clientset: %w\", err)\n\t}","sourceCodeStart":77,"sourceCodeEnd":113,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/cmd/kops-controller/pkg/server/server.go#L77-L113","documentation":"NewServer parses the --config-base option into a VFS path via vfsContext.BuildVfsPath. This error wraps the parse failure, meaning the ConfigBase value is not a valid VFS path/URL (bad scheme, malformed path).","triggerScenarios":"kops-controller started with an opt.ConfigBase string like a typo'd URL, unsupported scheme, or empty/invalid path.","commonSituations":"Typo in --config-base flag; using a scheme not compiled into this build; flag unset or containing stray whitespace/quotes; copy-paste error between s3://, gs://, or file:// forms.","solutions":["Check the wrapped error for the specific parse complaint","Use a full valid VFS path, e.g. s3://bucket/cluster or gs://bucket/cluster","Ensure the storage backend for the scheme is supported in this binary","Re-run kops export/inspect to confirm the canonical ConfigBase value"],"exampleFix":"// before\n--config-base=s3:/bucket/cluster\n// after\n--config-base=s3://bucket/cluster","handlingStrategy":"validation","validationCode":"if !strings.Contains(opt.ConfigBase, \"://\") {\n    return fmt.Errorf(\"--config-base must be a VFS path, got %q\", opt.ConfigBase)\n}","typeGuard":null,"tryCatchPattern":"if _, err := vfsContext.BuildVfsPath(opt.ConfigBase); err != nil {\n    return nil, fmt.Errorf(\"cannot parse ConfigBase %q: %w\", opt.ConfigBase, err)\n}","preventionTips":["Copy the exact ConfigBase from cluster spec","Use supported schemes (s3://, gs://, file://)","Quote flags in systemd/container configs to avoid shell mangling"],"tags":["go","vfs","config","cli-options"],"backgroundTag":"invalid-vfs-path","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"}