chore(truenas-csi): update the driver to v1.3.0 - #440
Conversation
Split out of the parked non-major batch so the two entries that need a judgement call are the only thing left in it. Tag-only is sufficient here, which is not true of every release of this driver: v1.2.0's notes required re-applying the deploy manifest for the iSCSI connector and topology fixes, while v1.3.0's say an existing install upgrades by pulling the image and needs no reconfiguration. Upstream's sidecar pairings are byte-identical between the two releases, so the versions pinned under sidecars stay correct. The manifest delta is additive and opt-in: a metrics listener keyed off config entries this chart does not set, so it stays off. No CRDs, no CSIDriver spec change, no RBAC change. appVersion moves with the image because values.yaml ties its defaults-track-upstream claim to it.
There was a problem hiding this comment.
Reviewed independently of the change's author.
Verified against the live registry: ghcr.io/truenas/truenas-csi:v1.3.0 resolves to sha256:51dba9c8…, exactly the digest pinned here. Upstream's v1.2.0 → v1.3.0 manifest delta is additive metrics plumbing keyed off ConfigMap entries this chart does not set — no CRD, CSIDriver spec or RBAC changes — and the sidecar pairings are unchanged, so the sidecars: block stays correct. The appVersion bump is required rather than cosmetic, because values.yaml ties its "defaults track upstream at the appVersion" claim to it.
Worth stating explicitly: a tag-only bump is not automatically safe for this driver. v1.2.0's notes required re-applying the deploy manifest to actually deliver its fixes; v1.3.0's do not. That distinction, not semver, is what makes this one safe.
19/19 checks green.
Splits the last low-risk entry out of the parked non-major batch (#417) so that
only the two judgement calls remain in it.
What #417 actually still holds
gh pr diff 417is misleading: it diffs against a stale merge base, so it stillrenders eight files' worth of changes. Merging #417 into today's
main(
git merge-tree --write-tree origin/main pr417) would add exactly threethings — #436 already landed everything else:
f742dcfmainmainmain648f440mainmainmainmainOnce this merges, #417 is only the two
tenants/platform/tenant.yamlchartrevisions, which is a code-owner-gated file and a real decision either way.
Why v1.3.0 is safe to take on its own
A tag-only bump is not automatically safe for this driver — v1.2.0's own
release notes said "bumping the image tag alone does not deliver the iSCSI
connector, iscsiadm, or topology fixes" and required re-applying the deploy
manifest. v1.3.0 is the opposite case, and the checks below are what establish
that rather than the semver range:
by pulling the new image; nothing needs reconfiguration, and the metrics
endpoint stays off until you ask for it."
deploy/truenas-csi-driver.yamlat v1.3.0contains only CSIDriver, ClusterRole(Binding), ConfigMap, DaemonSet,
Deployment, Namespace, Secret and ServiceAccount — the same kinds as v1.2.0.
The CSIDriver spec is untouched.
TRUENAS_METRICS_ADDR/nodeMetricsAddrenv pair sourced from ConfigMap keyswith
optional: true, plus--http-endpointargs on the sidecars. This chartsets neither key, so metrics stay off — which is upstream's default too.
byte-identical sidecar versions (provisioner v6.1.1, attacher v4.11.0,
snapshotter v8.5.0, resizer v2.1.0, livenessprobe v2.18.0,
node-driver-registrar v2.16.0), so the
sidecars:block stays correct.fails on partitioned devices, which is the KubeVirt/raw-block path.
appVersionmoves with the image becausevalues.yamlties its"defaults track upstream at the Chart.yaml appVersion" claim to it, and the
PoC runbook line that names the tracked upstream version moves with it for the
same reason. The ADR-0029 line reading "four releases through
v1.2.0" and thepkg/driver/iscsi.go, v1.2.0source citation in the runbook are deliberatelyleft alone — both are point-in-time records, and rewriting the citation would
be claiming a source read that did not happen.
Digest verified against the live registry
Renovate's digest is correct — confirmed independently rather than trusted:
That is the multi-arch OCI index digest, which is what
values.yamldocumentsit must be, not a per-arch child manifest.
Validation evidence
The render confirms the one
image.tagkey pins both halves of the driver —controller and node both resolve
v1.3.0@sha256:51dba9c8..., no version skew.The repo's kubeconform gate only walks
tenants/, excludingvalues.yamlandtenant.yaml, so no changed path here is in its scope; the rendered chart wasvalidated instead.
Not gated
helm-charts/truenas-csi/anddocs/match no.github/CODEOWNERSpattern(the gated set is
/.github/,/tools/,/renovate.json,/bootstrap/,/tenants/platform/,/helm-charts/tenant-envelope/,/tenants/*/tenant.yaml,/cli/), so this needs only the Baseline approval.Follow-up, deliberately not here
The
sidecars:comment claims the pins are "upstream's own pairings for thisdriver release", but the values run newer sidecars than upstream pins
(provisioner v6.3.0 vs v6.1.1, attacher v4.12.0 vs v4.11.0, resizer v2.2.1 vs
v2.1.0, livenessprobe v2.19.0 vs v2.18.0, registrar v2.17.0 vs v2.16.0). That
divergence predates this change and is unaffected by it — either the pins or the
comment is wrong, and deciding which is not a dependency bump's call.
🤖 Generated with Claude Code