Does `helm rollback` re-render the chart, and can it work if that chart version is gone?
answer
- The snapshot is inside the cluster, not in a repository
- Nothing is fetched, nothing is rendered
- Files on your laptop play no part
- YAML is restored exactly; images may not be
- A pruned revision cannot be replayed at all
basics
~20 sNo re-render. Each revision record carries the chart, the supplied values and the fully rendered manifest, and helm rollback re-applies that stored manifest. Nothing is fetched, so a deleted chart version or an unreachable repository does not block a rollback.
solid answer
~50 s`helm rollback` replays a **stored manifest**, it does not re-render. Every revision record holds the chart that was used, the values that were supplied, and the YAML those two produced, so rolling back to revision 44 applies revision 44's YAML verbatim. Nothing is downloaded: the chart repository can be offline, the chart version can have been deleted, the local values file can have changed on disk, and the rollback is unaffected. It also means the rollback is immune to template edits made in the chart source since — which is usually what you want during an incident. The limit is that a manifest is not an image: a tag such as `stable` or a floating minor resolves at pull time, so a byte-identical manifest can still start different code. Only digests, or immutable tags, make a rollback actually restore the same software.
code
bash · 8 lines# exactly what a rollback to revision 44 will apply
helm get manifest indexer-platform -n search --revision 44 > r44.yaml
# and the values that produced it, regardless of what is on disk now
helm get values indexer-platform -n search --revision 44
# roll back; no repository, registry or values file is consulted
helm rollback indexer-platform 44 -n searchgo deeper
Recall the core fact: the revision record already contains the chart, the values and the rendered YAML, so a rollback re-applies stored YAML rather than building it again. That is why it works offline.
Explain what the record holds and demonstrate it with the commands that read a specific revision's manifest and values. Be clear that neither the repository nor a local values file is consulted during a rollback.
Bring up the gap between restoring a manifest and restoring software: mutable tags, admission-time mutation and unmanaged configuration all survive the rollback. Say what you would change in the pipeline so a rollback is genuinely reversible.
Frame it as a recoverability contract: history depth, immutable artefact references and retained chart versions together decide whether "roll back" is a real option or a slogan. Be ready to say what you would mandate across many teams and what it costs them.
## What a revision record contains A Helm revision is not a pointer to a chart; it is a self-contained snapshot. Each record carries the chart itself (its templates, its default values, its metadata), the values the caller supplied for that operation, the merged values that resulted, and — crucially — the **rendered manifest**: the exact YAML that rendering produced. `helm rollback` loads the target revision's record and applies that stored manifest. There is no template execution, no values merge, and no network fetch in the path. You can see everything it will use: ```bash helm get manifest indexer-platform -n search --revision 44 # the YAML that will be re-applied helm get values indexer-platform -n search --revision 44 # the values that produced it helm get all indexer-platform -n search --revision 44 ``` ## The consequences that get asked about **A deleted or unreachable chart does not block rollback.** The chart repository being down, the chart version having been yanked, credentials to the registry having expired — none of it matters, because the artefact you need is already in the release record inside the cluster. This is one of the genuinely strong properties of the Helm release model, and it is the reason a rollback is often the fastest recovery available during an incident where the rest of your delivery chain is also unhappy. **Chart source edits since then are irrelevant.** If someone fixed a template bug in the chart repository after revision 44 shipped, rolling back to 44 does not pick that fix up; you get 44's YAML, bug and all. Symmetrically, a rollback cannot be poisoned by a bad chart change made in the meantime. If you want the new templates with the old configuration, that is an upgrade to the new chart version with the old values — not a rollback. **Values files on disk are irrelevant.** People often expect `helm rollback` to re-merge whatever `-f prod-values.yaml` currently says. It does not read files at all. The stored merged values of the target revision are what shipped and what comes back, which is why the values you see with `helm get values --revision N` are the honest record of that deployment rather than whatever your repository now contains. **The next upgrade builds on the restored values.** Because the new revision's stored values are the target revision's values, a subsequent upgrade that reuses the release's existing values starts from the old set. A change someone made two revisions ago through a values override is silently back in force. Worth stating explicitly when handing the release back to a pipeline. ## The one thing a stored manifest cannot pin A manifest describes *desired object state*, not *bits*. If a Deployment's image reference is `registry.example.net/indexer:stable` or any other mutable tag, replaying the manifest byte-for-byte gives the cluster the same string — and the kubelet resolves that string against the registry now, not then. The tag may point at a different digest than it did at revision 44, so the "rolled back" pods can be running newer code than the manifest suggests. Nothing in Helm detects this; the release looks perfectly restored. The fix lives in the chart's values, not in the rollback command: reference images by digest, or treat tags as immutable and never re-push one. A pipeline that stamps a digest into values on every deploy gets a rollback that genuinely restores the software; one that deploys `:stable` gets a rollback that restores only the YAML. The same reasoning covers anything else the manifest names but does not contain — a ConfigMap the chart does not manage, an external configuration service, a sidecar injected by a webhook at admission time — all of which are resolved fresh when the object is applied. ## Reach Finally, a stored manifest has to still be stored. Revision records are pruned to a bounded history depth, so a rollback target that has aged out is simply unavailable, and the recovery becomes a forward upgrade pinned to that old chart version — which *does* need the chart to be fetchable, and *does* re-render it, with all the exposure to since-changed templates that implies. That asymmetry is exactly why teams that care about recoverability keep both a usable history depth and an immutable copy of every chart version they have shipped.
- If rollback never re-renders, what would it take to get the old configuration running on the new chart templates?An upgrade, not a rollback: pull the target revision's values with `helm get values --revision N`, hand them to `helm upgrade` against the newer chart version, and let Helm render fresh. That path does contact the repository and does execute the current templates, so it carries the risk a rollback avoids — but it is the only way to combine old configuration with new chart logic.
- You rolled back successfully but the pods are still running the new build. What happened?The manifest referenced a mutable image tag. Helm restored the YAML exactly, including the tag string, and the tag now resolves to a newer digest in the registry, so the kubelet pulls the new bits. Confirm by comparing the running container's image digest with the one that revision expected. The fix is structural: deploy by digest, or make tags immutable in the registry, so a restored manifest names a fixed artefact.
saying these in an interview costs you the question
- Saying rollback re-downloads and re-renders the chart
- Thinking a deleted chart version makes rollback impossible
- Expecting the current values file to be merged in
- Assuming template fixes since then are picked up
- Claiming a restored manifest guarantees the same running code