GoogleContainerTools/skaffold · error
creating renderer: %w
Error message
creating renderer: %w
What it means
Fires in NewForConfig when the renderer component (deploy pipeline renderer such as kubectl/kustomize/helm) cannot be constructed from the run context and options. Wraps the renderer factory error, typically invalid renderer configuration in skaffold.yaml or unsupported renderer/option combinations.
Source
Thrown at pkg/skaffold/runner/new.go:85
// Always add skaffold-specific labels, except during `skaffold render`
labeller := label.NewLabeller(runCtx.AddSkaffoldLabels(), runCtx.CustomLabels(), runCtx.GetRunID())
tester, err := getTester(ctx, runCtx, isLocalImage)
if err != nil {
endTrace(instrumentation.TraceEndError(err))
return nil, fmt.Errorf("creating tester: %w", err)
}
var deployer deploy.Deployer
hydrationDir, err := util.GetHydrationDir(runCtx.Opts, runCtx.WorkingDir, true, isKptRendererOrDeployerUsed(runCtx.Pipelines))
if err != nil {
return nil, fmt.Errorf("getting render output path: %w", err)
}
renderer, err := GetRenderer(ctx, runCtx, hydrationDir, labeller.Labels(), runCtx.UsingLegacyHelmDeploy())
if err != nil {
endTrace(instrumentation.TraceEndError(err))
return nil, fmt.Errorf("creating renderer: %w", err)
}
deployer, err = GetDeployer(ctx, runCtx, labeller, hydrationDir, runCtx.UsingLegacyHelmDeploy())
if err != nil {
endTrace(instrumentation.TraceEndError(err))
return nil, fmt.Errorf("creating deployer: %w", err)
}
rOpts := platform.ResolverOpts{
KubeContext: runCtx.KubeContext,
CliPlatformsSelection: runCtx.Opts.Platforms,
CheckClusterNodePlatforms: runCtx.CheckClusterNodePlatforms(),
DisableMultiPlatformBuild: runCtx.DisableMultiPlatformBuild(),
}
platforms, err := platform.NewResolver(ctx, runCtx.Pipelines.All(), rOpts)
if err != nil {
endTrace(instrumentation.TraceEndError(err))
return nil, fmt.Errorf("getting target platforms: %w", err)View on GitHub (pinned to a1189de023)
Solutions
- Read the wrapped error: install/upgrade the required binary (kustomize, kpt, or helm) and ensure it's on PATH.
- Validate manifest paths/globs in skaffold.yaml point at existing files.
- Run `skaffold diagnose` to check renderer configuration.
- If a helm renderer, verify `releases` entries (chart path, name, version) are correct.
- Pin or upgrade the skaffold config schema (`apiVersion`) to match your installed skaffold.
Example fix
// before (PATH issue) $ skaffold dev // creating renderer: getting kustomize version: exec: "kustomize": executable file not found in $PATH // after brew install kustomize && skaffold dev
Defensive patterns
Strategy: validation
Validate before calling
for _, bin := range []string{"kubectl", "kustomize", "helm", "kpt"} {
if _, err := exec.LookPath(bin); err != nil {
log.Printf("warning: %s not on PATH; renderer may fail", bin)
}
} Try / catch
runner, err := runner.NewForConfig(runCtx)
if err != nil {
if strings.Contains(err.Error(), "creating renderer") {
return fmt.Errorf("renderer setup failed - check manifests config and required binaries: %w", err)
}
return err
} Prevention
- Install kustomize/kpt/helm in your dev container and CI image; verify with --version.
- Keep manifest paths in skaffold.yaml relative and verified by a glob check in CI.
- Run `skaffold diagnose` before releases.
- Match tool versions to those required by your skaffold version.
When it happens
Trigger: skaffold.yaml declares `manifests.render` (or legacy deploy kustomize/helm) that fails to initialize: kustomize/helm/kpt binary not found or incompatible, invalid `transformableResourceSelector`, bad helm release config, or unparseable manifest paths.
Common situations: Missing kustomize/kpt/helm binaries on PATH; kustomize version too old for the chosen feature; helm renderer with invalid flags; paths in `manifests:` globs matching nothing after a repo restructure.
Related errors
- duplicate release name %s
- release %s depends on non-existent release %s
- unable to create dependency graph: %w
- unable to get releases by level: %w
- unable to expand %q: %w
AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05).
Data as JSON: /api/errors/90dca0d31b05782b.
Report an issue: GitHub.