fix(storage): make zfs-pool-init re-run when its script changes #408

Merged
binjovi-bot merged 1 commit from fix/zfs-pool-init-reload into trunk 2026-09-07 13:11:44 +00:00
Owner

zfs-pool-init mounts its script from a ConfigMap, and a ConfigMap edit does not restart a pod. The DaemonSet had no reload trigger, so it silently ignored every change to the dataset tuning.

That bit immediately. #404 added tank/buildkit-{32k,128k,1m} and three StorageClasses pointing at them. The manifest rendered, Flux reconciled, and openebs-zfs reported Ready — while the pool-init pods were 22 days old and had never run the new script. zfs list on all five workers showed zero tank/buildkit-* lines, so all three classes referenced parent datasets that did not exist. A PVC on any of them would have failed to provision and nothing in the tree would have said why.

Reloader is deployed here and ignores only jobs and cronjobs, so it watches DaemonSets. The annotation makes a script change roll the fleet — and deploying this change is itself what creates the missing datasets.

tests/zfs-buildkit-classes.sh now fails if the trigger goes away. Its first version read the wrong DaemonSet (this manifest has two, and openebs-zfs-localpv-node comes first), so it selects by name. Verified against both mutations: annotation removed, and annotation moved onto the other DaemonSet.

https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76

`zfs-pool-init` mounts its script from a ConfigMap, and a ConfigMap edit does not restart a pod. The DaemonSet had no reload trigger, so it silently ignored every change to the dataset tuning. **That bit immediately.** #404 added `tank/buildkit-{32k,128k,1m}` and three StorageClasses pointing at them. The manifest rendered, Flux reconciled, and `openebs-zfs` reported **Ready** — while the pool-init pods were 22 days old and had never run the new script. `zfs list` on all five workers showed **zero** `tank/buildkit-*` lines, so all three classes referenced parent datasets that did not exist. A PVC on any of them would have failed to provision and nothing in the tree would have said why. Reloader is deployed here and ignores only jobs and cronjobs, so it watches DaemonSets. The annotation makes a script change roll the fleet — and deploying this change is itself what creates the missing datasets. `tests/zfs-buildkit-classes.sh` now fails if the trigger goes away. Its first version read the wrong DaemonSet (this manifest has two, and `openebs-zfs-localpv-node` comes first), so it selects by name. Verified against both mutations: annotation removed, and annotation moved onto the other DaemonSet. https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76
fix(storage): make zfs-pool-init re-run when its script changes
All checks were successful
binjovi/ci Binjovi completed the frozen plan
7a8d9fde84
zfs-pool-init mounts its script from a ConfigMap, and a ConfigMap edit does not
restart a pod. The DaemonSet had no reload trigger, so it silently ignored every
change to the dataset tuning.

That bit immediately. 097b9d95 added tank/buildkit-{32k,128k,1m} and three
StorageClasses pointing at them. The manifest rendered, Flux reconciled, and the
openebs-zfs Kustomization reported Ready -- while the pool-init pods were 22
days old and had never run the new script. `zfs list` on all five workers showed
zero tank/buildkit-* lines, so all three classes referenced parent datasets that
did not exist. A PVC on any of them would have failed to provision, and nothing
in the tree would have said why.

Reloader is deployed here and ignores only jobs and cronjobs, so it watches
DaemonSets. The annotation makes a script change roll the fleet, and deploying
this change is itself what creates the missing datasets.

tests/zfs-buildkit-classes.sh now fails if the trigger goes away. Its first
version read the wrong DaemonSet -- this manifest has two, and
openebs-zfs-localpv-node comes first -- so it selects by name. Verified against
both mutations: the annotation removed, and the annotation moved onto the other
DaemonSet.

Claude-Session: https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
sean/seanfarm!408
No description provided.