feat: bundle the CSI external health monitor sidecar in airgapped mode - #40
Merged
Merged
Conversation
The CSI plugin chart added an external health monitor sidecar (images.healthmonitorsidecar). The airgapped download and upload paths each carried their own hardcoded list of sidecar value paths, so the new image was neither pulled into the bundle nor rewritten to the target registry - and because an unrecognized key is simply skipped, the bundle looked complete while being unusable air-gapped. Collapse the two lists into one csiSidecarImagePaths map used by both, and add the health monitor to it. Same for the operator chart's own CSI image keys, which gain csi.healthMonitorImage (empty and skipped on charts that predate it). Also warn on download for any images.*sidecar key not in the map, so the next sidecar the chart adds surfaces instead of being silently dropped. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Collaborator
Author
This stack of pull requests is managed by Graphite. Learn more about stacking. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

What
The CSI plugin chart added an external health monitor sidecar (
images.healthmonitorsidecar→registry.k8s.io/sig-storage/csi-external-health-monitor-controller:v0.18.0, confirmed againstcsi-wekafsplugin2.9.2). The airgapped bundler didn't know about it, so an air-gapped install would come up without volume health monitoring.Why it was silent
Download (
bundle.go) and chart rewriting on upload (upload.go) each carried their own hardcoded list of sidecar value paths. A sidecar missing from a list is skipped with no output — so the new image was neither pulled into the bundle nor rewritten to the target registry, and the bundle still reported success. Two lists also meant a sidecar could be added to one and not the other, producing an image that ships but never gets its reference rewritten.Changes
constants.go— onecsiSidecarImagePathsmap (path → description) is now the single source of truth for both paths, withimages.healthmonitorsidecaradded.bundle.go—downloadCSIImagesiterates the shared map, so the health monitor image lands in the bundle. Refreshed the stalevalues.yamlreference comment to the current chart's tags.upload.go—updateCSIChartValuesiterates the same map, socharts-updated/andvalues-overrides/values-csi.yamlpoint the sidecar at the target registry.csi.*Imagekeys, socsi.healthMonitorImagewas added to both the download and rewrite maps. It resolves empty and is skipped on operator charts that predate the key, so this is safe before feat: deploy CSI external health monitor sidecar, align CSI images with 2.9.2 weka-operator#2750 lands.bundle.go— newwarnUnknownCSISidecars: on download, warn for anyimages.*sidecarkey not in the map. This is the reason the gap went unnoticed; the next sidecar the chart adds will now surface at download time instead of being quietly dropped.Testing
go build ./...,go vet,gofmt, and the fullgo test ./pkg/...all pass. Newcsi_sidecars_test.goasserts:images:block (this test fails if a future sidecar is added to the chart but not the map),csi.healthMonitorImageis rewritten too.Not exercised against a real registry end to end — the download/upload round trip against a live bundle is untested here.
Related
weka/weka-operator#2750 adds the sidecar to the operator's embedded CSI deployment and the
csi.healthMonitorImagevalue this consumes.🤖 Generated with Claude Code