feat: replace Helm umbrella chart with per-component bundle directories#84
Closed
feat: replace Helm umbrella chart with per-component bundle directories#84
Conversation
a21ebed to
b1b9a0e
Compare
Replace the single umbrella Helm chart output with per-component directories where each component gets its own namespace, values.yaml, and README. Adds a deploy.sh script for one-command deployment. This simplifies operations by allowing independent component lifecycle management. Output structure: README.md, deploy.sh, recipe.yaml, checksums.txt <component>/values.yaml, <component>/README.md, <component>/manifests/ - Rewrite Helm generator to emit per-component directories - Add deploy.sh and component-README templates - Remove Chart.yaml.tmpl (no longer needed) - Update bundler orchestrator (makeHelmBundle, collectComponentManifests) - Resolve recipe/output paths to absolute in CLI for robustness - Fix e2e variable scoping bug in verify_helm_bundle - Update all tests, doc.go files, and documentation
b1b9a0e to
478e051
Compare
Mermaid diagram still referenced "Chart.yaml + values.yaml" output for the Helm deployer. Updated to reflect per-component layout.
Add safeJoin helper to both Helm and ArgoCD deployers that validates constructed paths stay within the output directory (filepath.Abs + filepath.Clean + prefix check). Refactor generateFromTemplate and writeValuesFile to accept (baseDir, filename) so path sanitization occurs at each filesystem operation site. Update tests/e2e/run.sh and kwok/scripts/validate-scheduling.sh to use per-component bundle structure (deploy.sh, component directories) instead of stale umbrella chart references (Chart.yaml, helm lint).
9d72592 to
bf780b1
Compare
Per-component Helm installation fails when a chart contains resources (e.g. ServiceMonitor) whose CRDs are provided by a later component (kube-prometheus-stack). The --disable-openapi-validation flag skips server-side schema validation, allowing charts to reference CRDs that will be installed by subsequent components in the deployment order.
auto-merge was automatically disabled
February 10, 2026 00:47
Pull request was converted to draft
…heus-stack Per-component Helm deployment installs cert-manager, gpu-operator, and kubeflow-trainer before kube-prometheus-stack. These charts fail when ServiceMonitor is enabled because the CRD (monitoring.coreos.com/v1) does not exist yet. Disable ServiceMonitor creation in base values for all three components. Also revert --disable-openapi-validation which does not address REST mapper resource discovery failures.
KWOK clusters validate pod scheduling, not pod readiness. The --wait flag causes helm to block until Deployments/DaemonSets report Ready, which never happens in KWOK since it simulates pod placement without satisfying readiness probes. Add --no-wait flag to deploy.sh so KWOK tests can skip readiness checks while real deployments retain --wait.
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.
Summary
deploy.shscript for one-command deployment of all components in orderChart.yaml.tmpltemplate and umbrella chart generation logicmakeUmbrellaChart()→makeHelmBundle(),collectManifestContents()→collectComponentManifests()verify_helm_bundlethat caused false test failuresNew output structure
Test plan
go test -race ./pkg/bundler/...— all passgo test -race ./pkg/cli/...— all passgo test -race ./pkg/oci/...— all passmake lint— 0 issuesmake test— all passkwok/scripts/validate-scheduling.shdeploy function)Known follow-up work
kwok/scripts/validate-scheduling.shstill useshelm dependency updatefor the old umbrella chart approach and needs to be updated to usedeploy.shor per-component installdocs/user/api-reference.mdhasbundlersquery parameter references that may need API-level changes