SIGN IN SIGN UP

helm: bundle DisaggregatedSet into the lws chart (#871)

Ship the DisaggregatedSet CRD, RBAC, and validating webhook from the
unified `charts/lws` Helm chart so users can deploy LeaderWorkerSet and
DisaggregatedSet with a single `helm install`. The controller is already
bundled in the same manager binary, so no Deployment, ServiceAccount, or
image changes are required.

The DisaggregatedSet CRD ships under `charts/lws/crds/`, matching the
existing `crds/` layout used for the LeaderWorkerSet CRD (the same
pattern as the sibling jobset chart). Because Helm installs `crds/`
content during `helm install` only, the chart README documents the
manual `kubectl apply` step needed before `helm upgrade` from an
earlier release that did not ship the CRD. Migrating to the
`templates/crd/` layout (the kueue pattern) would change the upgrade
contract and is intentionally out of scope.

The manager `ClusterRole` is extended unconditionally with the
DisaggregatedSet permissions because the bundled controller always
starts, even when `enableDisaggregatedSet` is false. The flag remains
useful for opting into the user-facing editor/viewer/admin
`ClusterRoles` and the validating webhook entry.

The validating webhook path and rule `apiVersions` are registered as
`v1` so requests reach the handler the controller registers in
`pkg/webhooks/disaggregatedset/disaggregatedset_webhook.go`. The
standalone DisaggregatedSet chart used `v1alpha1`; the merged chart
fixes this to match the actual API group/version that exists under
`api/disaggregatedset/v1`.

The `crds` Makefile target now splits the kustomize output into one
file per CRD (`leaderworkerset.x-k8s.io_leaderworkersets.yaml` and
`disaggregatedset.x-k8s.io_disaggregatedsets.yaml`), with `test -s`
guards so a missing CRD fails the build rather than silently producing
an empty file. The previous single-file target had been writing both
CRDs into the LeaderWorkerSet filename.

The standalone `disaggregatedset/charts/disaggregatedset` chart is
marked deprecated in its README and `Chart.yaml`. Removal is tracked
separately as the final step of https://github.com/kubernetes-sigs/lws/issues/789.

Signed-off-by: Kay Yan <kay.yan@daocloud.io>
K
Kay Yan committed
7d64d66a1e46d258d281aa38001ca05593d8724f
Parent: 1d9204a
Committed by GitHub <noreply@github.com> on 6/3/2026, 12:25:49 PM