Skip to content

fix(nvca-operator): [backport v3.2] resolve image tag through appVersion, not chart version - #1250

Merged
kristinapathak merged 3 commits into
release-src/compute-plane-services/nvca/v3.2from
fix/nvca-operator-image-tag-reuse-values-v3.2
Aug 26, 2026
Merged

fix(nvca-operator): [backport v3.2] resolve image tag through appVersion, not chart version#1250
kristinapathak merged 3 commits into
release-src/compute-plane-services/nvca/v3.2from
fix/nvca-operator-image-tag-reuse-values-v3.2

Conversation

@kristinapathak

Copy link
Copy Markdown
Collaborator

Backport of #1248 to release-src/compute-plane-services/nvca/v3.2. Clean
cherry-pick (80c2dd2), no conflicts.

Why

helm upgrade --reuse-values against the nvca-operator chart carries the
previous release's fully-resolved values.yaml forward, but never re-merges
the new chart's Chart.yaml. templates/deployment.yaml (and
cronjob.yaml, pre-delete-cleanup-job.yaml) resolved the image tag as
default .Chart.Version .Values.image.tag. Once any release ever published
a chart where image.tag resolved to a non-empty literal, every later
--reuse-values upgrade kept that literal forever, regardless of what the
newly published chart's own default said -- so the operator, mirror, and
cluster-validator containers kept running a stale image even though helm list and the chart NOTES reported the new chart/app version. This is the
active 3.2.x line QA is testing against.

What changed

  • deployment.yaml, cronjob.yaml, pre-delete-cleanup-job.yaml (native
    source chart and its vendored copy): image tag now falls back through
    .Chart.AppVersion instead of .Chart.Version. Chart.yaml (including
    appVersion) is never part of a --reuse-values merge, so this fallback
    stays correct on every future upgrade, not just a fresh install.
  • values.yaml / README doc comments updated to describe the new fallback.
  • vendor_chart_image_tag_test.sh strengthened with a chart-version vs.
    appVersion divergence case and a --reuse-values upgrade simulation.

Testing

  • bash deploy/helm/nvca-operator/tests/vendor_chart_image_tag_test.sh
  • bash src/compute-plane-services/nvca/scripts/lint_helm.sh

Both pass on this branch. No QA needed beyond the above.

References

None

Related Pull Requests

#1248 (main)

…ersion

helm upgrade --reuse-values carries a release's fully-resolved values.yaml
forward but never re-merges the new chart's Chart.yaml. Falling the image
tag back to .Chart.Version left every --reuse-values upgrade pinned to
whichever chart last published a literal image.tag, since that literal
overrides the new chart's own default.

Fall back through .Chart.AppVersion instead in the operator, mirror,
cluster-validator, and cleanup-job image references. appVersion is chart
metadata Helm always re-reads from the target chart, so it can't be pinned
by a previous release's reused values. Strengthen the vendoring test to
cover a chart-version/appVersion divergence and a --reuse-values upgrade
simulation.

Closes #1246
@kristinapathak
kristinapathak requested a review from a team as a code owner August 26, 2026 22:51
@coderabbitai

coderabbitai Bot commented Aug 26, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

🗂️ Base branches to auto review (1)
  • main

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 01274132-6a52-4e1c-b005-0d904a234382

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

…ator's

The regression test grepped for one image string that happened to match
three of five image render sites (operator, nvca-mirror, and the
pre-delete cleanup job all share .Values.image.repository), so a
regression in any single one of them could still pass. clusterValidator's
two render sites (deployment initContainer, its own CronJob) were never
enabled or asserted at all.

Enable clusterValidator in both renders and assert exact occurrence
counts per distinct image, so a stale tag on any of the five sites fails
the test.
grep -cF matched image lines by substring, so an unexpected tag like
3.2.11-hotfix still counted as a match for 3.2.11 and could mask a
regression. Switch to awk and require the full image field to equal
the expected value exactly.
@kristinapathak
kristinapathak merged commit 6cf2780 into release-src/compute-plane-services/nvca/v3.2 Aug 26, 2026
12 checks passed
@kristinapathak
kristinapathak deleted the fix/nvca-operator-image-tag-reuse-values-v3.2 branch August 26, 2026 23:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants