istio/istio · error
config dump has no configuration type %s
Error message
config dump has no configuration type %s
What it means
getSection scans a config dump's top-level Configs array for an entry whose TypeUrl matches the requested section (bootstrap, clusters, listeners, routes, dynamic_parameters, ecds, etc.). This error means no entry with that TypeURL exists in the dump, so the requested proxy-config section cannot be shown.
Source
Thrown at istioctl/pkg/util/configdump/util.go:45
bootstrap configTypeURL = "type.googleapis.com/envoy.admin.v3.BootstrapConfigDump"
listeners configTypeURL = "type.googleapis.com/envoy.admin.v3.ListenersConfigDump"
endpoints configTypeURL = "type.googleapis.com/envoy.admin.v3.EndpointsConfigDump"
clusters configTypeURL = "type.googleapis.com/envoy.admin.v3.ClustersConfigDump"
routes configTypeURL = "type.googleapis.com/envoy.admin.v3.RoutesConfigDump"
secrets configTypeURL = "type.googleapis.com/envoy.admin.v3.SecretsConfigDump"
ecds configTypeURL = "type.googleapis.com/envoy.admin.v3.EcdsConfigDump"
)
// getSection takes a TypeURL and returns the types.Any from the config dump corresponding to that URL
func (w *Wrapper) getSection(sectionTypeURL configTypeURL) (*anypb.Any, error) {
var dumpAny *anypb.Any
for _, conf := range w.Configs {
if conf.TypeUrl == string(sectionTypeURL) {
dumpAny = conf
}
}
if dumpAny == nil {
return nil, fmt.Errorf("config dump has no configuration type %s", sectionTypeURL)
}
return dumpAny, nil
}
func (w *Wrapper) getSections(sectionTypeURL configTypeURL) ([]*anypb.Any, error) {
var dumpAny []*anypb.Any
for _, conf := range w.Configs {
if conf.TypeUrl == string(sectionTypeURL) {
dumpAny = append(dumpAny, conf)
}
}
if dumpAny == nil {
return nil, fmt.Errorf("config dump has no configuration type %s", sectionTypeURL)
}
return dumpAny, nil
}View on GitHub (pinned to 8dc789c5cf)
Solutions
- Check what sections exist: `istioctl proxy-config all <pod>` or inspect the dump's top-level typeUrls.
- Use a section the proxy actually has (bootstrap/clusters/listeners/routes are near-universal; ecds is not).
- Recollect the dump without filters if it was captured from a file with a subset.
Defensive patterns
Strategy: validation
Validate before calling
// Check available sections before requesting one
func hasSection(w *configdump.Wrapper, url configTypeURL) bool {
for _, c := range w.Configs {
if c.TypeUrl == string(url) { return true }
}
return false
} Try / catch
if _, err := w.GetEcdsConfigDump(); err != nil {
if strings.Contains(err.Error(), "has no configuration type") {
// proxy simply has no such section; not an error condition
return nil
}
return err
} Prevention
- Treat 'section absent' as expected, not exceptional, for optional sections like ecds.
- Inspect w.Configs TypeUrls first when building generic tooling over config dumps.
- Version-match istioctl with the data plane.
When it happens
Trigger: Calling a Wrapper method like GetBootstrapConfigDump/GetClustersConfigDump/GetListenersConfigDump on a dump that lacks that section — e.g. an Envoy that has no ECDS config, or a dump collected with include_edd/section filters that omitted it.
Common situations: `istioctl proxy-config ecds <pod>` on an Envoy without extension config sections; version skew where the proxy does not emit a section; partial dumps captured from file.
Related errors
- can't parse ingress gateway sidecar config_dump: %v
- can't parse sidecar config_dump for %v: %v
- failed to unmarshall ROOTCA secret: %v
- no pods found
- binary path must be set
AI-assisted analysis of istio/istio@8dc789c5cf (2026-08-15).
Data as JSON: /api/errors/6ae975afed38d182.
Report an issue: GitHub.