Skip to content

[FEA] Preserve/upgrade-safe manage partitions and NodeSets created after install via the Slinky management platform #242

Description

@tsungjung411

Is your feature request related to a problem? Please describe.

In our deployment, Partition and NodeSet instances are not only defined at install time via values.yaml. After the initial install, additional partitions and NodeSet instances get created later through (our simple) Slinky management platform — i.e., created/edited directly against the live CRs, not by re-running helm install/helm upgrade with an updated values.yaml. As a result, these later-added instances are never reflected back into the values.yaml originally used to install the chart.

When we later perform a minor-version upgrade (e.g. v1.1.Z → v1.2.Z) following the documented flow (helm upgrade slurm-operator-crds → helm upgrade slurm-operator → optionally helm upgrade slurm), we're concerned these out-of-band changes will be lost or left inconsistent:

  • From reading the chart templates, Controller.spec.extraConf (which carries the rendered partitions block) appears to be fully re-rendered from values.yaml on every helm upgrade slurm and applied as a single string field rather than merged. Any partition added outside of values.yaml would be silently overwritten the next time an upgrade changes anything in that rendered string, with no warning or conflict detection.
  • NodeSet instances created after install (not part of the original values.yaml nodesets map) were never part of that Helm release, so helm upgrade never touches them — meaning their container image (e.g. 25.11-ubuntu24.04 → 26.05-ubuntu26.04) would not be upgraded together with the rest of the fleet, and would require manual intervention per NodeSet.

We wish we could use Slurm Operator to manage partitions and NodeSets dynamically (outside the installing values.yaml) in a way that upgrades don't silently clobber or leave inconsistent.


Describe the solution you'd like

A documented, upgrade-safe mechanism for partitions and NodeSets that are created/managed outside of the installing values.yaml, specifically:

  • A supported way to add partition configuration that is guaranteed not to be overwritten by helm upgrade slurm — e.g. an explicit statement that configFileRefs (pointing to an externally-managed ConfigMap) is the correct pattern for this, as opposed to extraConf, which is fully owned/re-rendered by the chart.
  • Guidance or tooling for keeping the container image of out-of-band NodeSet instances in sync with an operator/chart version upgrade, since they fall outside Helm's tracked release resources.
  • Ideally, an explicit statement in the upgrade documentation about what is and isn't safe to manage outside of values.yaml, and what guarantees (if any) apply across upgrades.

Describe alternatives you've considered

  • Using configFileRefs pointing to a separately-managed ConfigMap instead of writing directly to Controller.spec.extraConf, since configFileRefs is only rendered by the chart when .Values.configFiles is set, and so appears to be left untouched by helm upgrade when unused — but we are not certainsed pattern for this use case.
  • Manually diffing the live CR state against the values.yaml before every upgrade and back-porting any out-of-band changes into values.yaml — this is operationally fragile and error-prone at scale.

Additional context

This came up while reviewing the README's Upgrades section, which documents the v1.Y upgrade flow (helm upgrade slurm-operator-crds → helm upgrade slurm-operator → helm upgrade slurm) but doesn't address CRs that are created or modified outside of the chart's own values.yaml between installs. Hat our management-platform setup if useful.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions