{"record":{"id":"c5d0f624d806067c","repo":"istio/istio","slug":"failed-to-get-injection-config-from-mutatingwebhoo","errorCode":null,"errorMessage":"failed to get injection config from mutatingWebhookConfigurations and injection configmap - check injection configmap or pass --revision flag","messagePattern":"failed to get injection config from mutatingWebhookConfigurations and injection configmap - check injection configmap or pass --revision flag","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"istioctl/pkg/kubeinject/kubeinject.go","lineNumber":577,"sourceCode":"\t\t\tvar valuesConfig string\n\t\t\tvar sidecarTemplate inject.RawTemplates\n\t\t\tvar meshConfig *meshconfig.MeshConfig\n\t\t\trev := cliContext.RevisionOrDefault(opts.Revision)\n\t\t\t// if the revision is \"default\", render templates with an empty revision\n\t\t\tif rev == util.DefaultRevisionName {\n\t\t\t\trev = \"\"\n\t\t\t}\n\t\t\tinjectorAddress := centralOpts.Xds\n\t\t\tindex := strings.IndexByte(injectorAddress, ':')\n\t\t\tif index != -1 {\n\t\t\t\tinjectorAddress = injectorAddress[:index]\n\t\t\t}\n\t\t\tinjector, meshConfig, err := setupKubeInjectParameters(cliContext, &sidecarTemplate, &valuesConfig, rev, injectorAddress)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif injector.client == nil && meshConfig == nil {\n\t\t\t\treturn fmt.Errorf(\n\t\t\t\t\t\"failed to get injection config from mutatingWebhookConfigurations and injection configmap - \" +\n\t\t\t\t\t\t\"check injection configmap or pass --revision flag\",\n\t\t\t\t)\n\t\t\t}\n\t\t\tvar warnings []string\n\t\t\ttempls, err := inject.ParseTemplates(sidecarTemplate)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tvc, err := inject.NewValuesConfig(valuesConfig)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tretval := inject.IntoResourceFile(injector, templs, vc, rev, meshConfig,\n\t\t\t\treader, writer, func(warning string) {\n\t\t\t\t\twarnings = append(warnings, warning)\n\t\t\t\t})\n\t\t\tif len(warnings) > 0 {","sourceCodeStart":559,"sourceCodeEnd":595,"githubUrl":"https://github.com/istio/istio/blob/8dc789c5cf17517c64e3c36cb3288230f149dfae/istioctl/pkg/kubeinject/kubeinject.go#L559-L595","documentation":"kube-inject resolves its parameters from the mutating webhook configuration first, then falls back to the injection configmap. This error is raised when the result has neither a usable external injector nor a mesh config (injector.client == nil && meshConfig == nil) - i.e. every source of injection configuration came back empty, so there is nothing to template a sidecar from.","triggerScenarios":"setupKubeInjectParameters returns (nil-client injector, nil meshConfig, nil error): the webhook lookup failed (or matched nothing), the configmap fallback produced nothing usable, and no IOP/file inputs were given. Typically: no Istio control plane reachable for the selected revision plus missing/empty injector configmap.","commonSituations":"Running kube-inject against the wrong cluster or namespace; --revision pointing at a non-existent revision so neither webhook nor istio-sidecar-injector-<rev> exists; partially uninstalled Istio.","solutions":["Pass --revision matching an installed revision so the webhook/configmap lookup hits real objects","Verify a control plane exists: kubectl get pods,mutatingwebhookconfigurations -l istio.io/rev=<rev> and kubectl get cm istio-sidecar-injector-<rev> -n <ns>","Point -i at the actual Istio namespace","Provide config out-of-band: --injectConfigFile plus --meshConfigFile/--valuesFile so no cluster reads are needed"],"exampleFix":"# before\nistioctl kube-inject -f app.yaml   # no revision, nothing found\n# after\nkubectl get mwc -L istio.io/rev\nistioctl kube-inject -f app.yaml -i istio-system --revision v1-21-0","handlingStrategy":"validation","validationCode":"# fail fast when neither injection source exists\nNS=istio-system; REV=${REV:-}\nkubectl get mwc -l istio.io/rev=${REV:-default} -o name | grep -q . || \\\nkubectl get cm istio-sidecar-injector${REV:+-$REV} -n \"$NS\" >/dev/null || \\\n{ echo 'no webhook and no injector configmap; aborting' >&2; exit 1; }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always pass --revision when running against revisioned installs","Keep offline copies (--injectConfigFile/--meshConfigFile) for environments where the control plane may be absent"],"tags":["istioctl","kube-inject","webhook","configmap","revision","sidecar-injection"],"backgroundTag":null,"analyzedSha":"8dc789c5cf17517c64e3c36cb3288230f149dfae","analyzedAt":"2026-08-15T15:16:55.434Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}