kubernetes/kops · error
error parsing configStore.base %q: %v
Error message
error parsing configStore.base %q: %v
What it means
NewNodeUpConfigBuilder resolves cluster.Spec.ConfigStore.Base into a VFS path. If the base URI cannot be parsed into a valid vfs location (bad scheme, malformed path), this error is returned. NodeUp config generation cannot proceed without a valid config store.
Source
Thrown at pkg/nodemodel/nodeupconfigbuilder.go:55
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/util/pkg/architectures"
"k8s.io/kops/util/pkg/vfs"
)
type nodeUpConfigBuilder struct {
assetBuilder *assets.AssetBuilder
channelsManifest string
configBase vfs.Path
cluster *kops.Cluster
etcdManifests map[string][]string
images map[kops.InstanceGroupRole]map[architectures.Architecture][]*nodeup.Image
encryptionConfigSecretHash string
}
func NewNodeUpConfigBuilder(cluster *kops.Cluster, assetBuilder *assets.AssetBuilder, encryptionConfigSecretHash string) (model.NodeUpConfigBuilder, error) {
configBase, err := vfs.Context.BuildVfsPath(cluster.Spec.ConfigStore.Base)
if err != nil {
return nil, fmt.Errorf("error parsing configStore.base %q: %v", cluster.Spec.ConfigStore.Base, err)
}
// Must match channelsManifestPath in pkg/model/components/channels/model.go.
channelsManifest := configBase.Join("manifests/channels/kops-channels.yaml").Path()
etcdManifests := map[string][]string{}
images := map[kops.InstanceGroupRole]map[architectures.Architecture][]*nodeup.Image{}
for _, role := range kops.AllInstanceGroupRoles {
isMaster := role.HasControlPlane()
isAPIServer := role.HasAPIServer()
images[role] = make(map[architectures.Architecture][]*nodeup.Image)
if kopsmodel.IsBaseURL(cluster.Spec.KubernetesVersion) {
// When using a custom version, we want to preload the images over http
components := []string{"kube-proxy"}
if isMaster {
components = append(components, "kube-apiserver", "kube-controller-manager", "kube-scheduler")View on GitHub (pinned to 4c8573c808)
Solutions
- Fix cluster.Spec.ConfigStore.Base to a valid URI like 's3://<bucket>/prefix' matching --state on other kOps commands
- Check for typos/empty values in the state store configuration (KOPS_STATE_STORE)
- Run 'kops get clusters' with the same state store to verify the URI works before creating nodeup config
Example fix
// before
spec:
configStore:
base: "my-bucket/cluster" // missing scheme
// after
spec:
configStore:
base: "s3://my-bucket/cluster" Defensive patterns
Strategy: validation
Validate before calling
base := cluster.Spec.ConfigStore.Base
if base == "" {
return fmt.Errorf("configStore.base is empty")
}
if !strings.Contains(base, "://") {
return fmt.Errorf("configStore.base %q missing scheme (e.g. s3://)", base)
} Prevention
- Set KOPS_STATE_STORE consistently and derive configStore.base from it
- Include a URI scheme in every state store value
- Smoke-test the URI with 'kops get clusters' before nodeup runs
When it happens
Trigger: Cluster spec has a configStore.base that vfs.Context.BuildVfsPath cannot parse (e.g. missing scheme, unknown scheme, invalid S3/GS/OSS URI).
Common situations: Typo in the state store URI (s3:// misspelled, empty string); migrating clusters between state stores; hand-edited cluster spec; environment where the object-store scheme is unavailable.
Related errors
- parsing path for kops-channels manifest %s: %w
- building VFS path for %q: %w
- unhandled type %T
- expected azureblob:// ConfigStore.Base for Azure cluster, go
- error building ConfigBase for cluster: %v
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/1992fdd2232a12f0.
Report an issue: GitHub.