kubernetes/kops · error
error parsing BootConfig config response: %v
Error message
error parsing BootConfig config response: %v
What it means
When the node config came from a config server, Run() YAML-unmarshals nodeConfig.NodeupConfig into nodeup.Config. This error is thrown if that YAML is invalid or cannot be decoded into the nodeup.Config struct, so the node's provisioning config is unusable.
Source
Thrown at upup/pkg/fi/nodeup/command.go:138
return fmt.Errorf("failed to get node config from server: %w", err)
}
nodeConfig = response.NodeConfig
} else if fi.ValueOf(bootConfig.ConfigBase) != "" {
var err error
configBase, err = vfs.Context.BuildVfsPath(*bootConfig.ConfigBase)
if err != nil {
return fmt.Errorf("cannot parse ConfigBase %q: %v", *bootConfig.ConfigBase, err)
}
} else {
return fmt.Errorf("ConfigBase or ConfigServer is required")
}
var nodeupConfig nodeup.Config
var nodeupConfigHash [32]byte
switch {
case nodeConfig != nil:
if err := utils.YamlUnmarshal([]byte(nodeConfig.NodeupConfig), &nodeupConfig); err != nil {
return fmt.Errorf("error parsing BootConfig config response: %v", err)
}
nodeupConfigHash = sha256.Sum256([]byte(nodeConfig.NodeupConfig))
if nodeupConfig.CAs == nil {
nodeupConfig.CAs = make(map[string]string)
}
nodeupConfig.CAs[fi.CertificateIDCA] = bootConfig.ConfigServer.CACertificates
case bootConfig.InstanceGroupName != "":
nodeupConfigLocation := configBase.Join("igconfig", bootConfig.InstanceGroupRole.ToLowerString(), bootConfig.InstanceGroupName, "nodeupconfig.yaml")
b, err := nodeupConfigLocation.ReadFile(ctx)
if err != nil {
return fmt.Errorf("error loading NodeupConfig %q: %v", nodeupConfigLocation, err)
}
if err = utils.YamlUnmarshal(b, &nodeupConfig); err != nil {
return fmt.Errorf("error parsing NodeupConfig %q: %v", nodeupConfigLocation, err)
}
nodeupConfigHash = sha256.Sum256(b)View on GitHub (pinned to 4c8573c808)
Solutions
- Confirm kops/nodeup versions match the control plane; upgrade nodeup (kops update cluster / rolling-update) to eliminate schema skew.
- Inspect the raw NodeupConfig served by the config server and validate it as YAML (yamllint / kops toolbox dump).
- Re-push the cluster configuration (kops update cluster) so the server regenerates a valid NodeupConfig.
- If a proxy/LB sits in front of the config server, check it is not truncating or rewriting the response body.
- Roll back a recent manual cluster-spec edit that introduced a bad field.
Example fix
// before: stale nodeup against newer control plane schema unknown field "instanceGroupRoleOverride" in nodeup.Config // after: match versions kops update cluster --yes && kops rolling-update cluster --yes
Defensive patterns
Strategy: validation
Prevention
- Pin matching kops/nodeup versions
When it happens
Trigger: getNodeConfigFromServers succeeded but response.NodeConfig.NodeupConfig contains invalid YAML, an unexpected schema, or an empty/garbage payload — YamlUnmarshal fails and Run wraps the parse error.
Common situations: Version skew: node binary older than the kops control plane emits/expects a different NodeupConfig schema; a bug or corruption in the config-server response; truncated payload from a proxy; manually editing cluster config and breaking YAML.
Related errors
- parsing kops-channels manifest: %w
- error parsing addons: %v
- building nodeConfig for instanceGroup: %w
- marshalling nodeupConfig: %w
- error parsing file %q: %v
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/601a747870b9388c.
Report an issue: GitHub.