GoogleContainerTools/skaffold · error
rendering manifests: %w
Error message
rendering manifests: %w
What it means
In `skaffold render`, after obtaining build results, render templates the manifests via `r.Render`. This wrapper reports failures in that templating step. It means skaffold could not produce the final Kubernetes manifests — usually an invalid manifest template, unresolved image references, or an error writing/rendering for the given renderer (kubectl/kustomize/helm).
Source
Thrown at cmd/skaffold/app/cmd/render.go:80
var bRes []graph.Artifact
var err error
if fromBuildOutputFile.String() != "" || len(preBuiltImages.GetSlice()) > 0 {
// pass `nil` as render shouldn't build if provided --build-artifacts or --images
bRes, err = getBuildArtifactsAndSetTags(nil, r.ApplyDefaultRepo)
if err != nil {
return fmt.Errorf("loading artifacts: %w", err)
}
} else {
bRes, err = r.Build(ctx, buildOut, targetArtifacts(opts, configs))
if err != nil {
return fmt.Errorf("executing build: %w", err)
}
}
manifests, err := r.Render(ctx, out, bRes, offline)
if err != nil {
return fmt.Errorf("rendering manifests: %w", err)
}
return manifest.Write(manifests.String(), opts.RenderOutput, out)
})
}
View on GitHub (pinned to a1189de023)
Solutions
- Run `kubectl apply --dry-run=client -f <manifest>` or `kustomize build` on the manifests to find YAML/kustomize errors.
- Verify all manifest paths in the deploy section of skaffold.yaml exist and are valid YAML.
- If using --offline, ensure the manifests have no remote dependencies, or drop --offline.
- Run with -vdebug to see which manifest/renderer step failed and fix that template.
Example fix
# before: deploy.manifests points at a missing file
deploy:
kubectl:
manifests:
- manifests/deploy.yaml # deleted
# after: correct path
deploy:
kubectl:
manifests:
- k8s/deployment.yaml
Defensive patterns
Strategy: validation
Validate before calling
// Validate manifests referenced by skaffold.yaml before rendering
const cfg = require('js-yaml').load(require('fs').readFileSync('skaffold.yaml', 'utf8'));
const manifests = cfg.deploy?.kubectl?.manifests ?? cfg.manifests ?? [];
const fs = require('fs');
for (const raw of manifests) {
const p = typeof raw === 'string' ? raw : Object.values(raw)[0];
if (!fs.existsSync(p)) throw new Error(`manifest not found: ${p}`);
}
execSync('kustomize build overlays/prod > /dev/null', {stdio: 'pipe'}); // catches kustomize errors early Try / catch
try {
execFileSync('skaffold', ['render', '--output', 'rendered.yaml']);
} catch (e) {
const msg = e.stderr?.toString() ?? '';
if (msg.includes('rendering manifests')) {
console.error('Manifest templating failed; validate YAML/kustomize/helm inputs.');
console.error(e.stdout?.toString() ?? '');
} else throw e;
} Prevention
- Keep all manifest paths in skaffold.yaml relative to the working directory skaffold runs from.
- Lint manifests (kubeval/kubeconform, kustomize build) in CI before render.
- Avoid --offline unless manifests have no remote dependencies.
- Use -vdebug to identify exactly which manifest/template fails when render errors.
When it happens
Trigger: `skaffold render --output <file>` / default render where r.Render fails: manifest files listed in the deploy section are missing or invalid YAML, kustomize overlays broken, helm chart values invalid, or templated image placeholders don't match built artifacts.
Common situations: Renamed/deleted manifest paths in skaffold.yaml; kustomization.yaml referencing missing resources; helm charts with bad values; running `skaffold render --offline` while required remote resources are absent; placeholders like {{.IMAGE_NAME_x}} left unresolvable.
Related errors
- CONFIG_MISSING_MANIFEST_FILE_ERR
- rendering manifests: %w
- the length of stdout should be greater than 0 when using ren
- c.Message (pod status condition message)
- unable to lookup minikube executable. Please add it to PATH
AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05).
Data as JSON: /api/errors/4cdc62e411a56c95.
Report an issue: GitHub.