-
Notifications
You must be signed in to change notification settings - Fork 244
KEP 831-Kubeflow-Helm-Support: Support Helm as an Alternative for Kustomize #832
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Signed-off-by: juliusvonkohout <[email protected]>
|
/lgtm |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can see that you re-created the KEP.
/hold for community to review.
cc @kubeflow/wg-training-leads @kubeflow/wg-automl-leads @kubeflow/wg-manifests-leads @kubeflow/wg-data-leads @kubeflow/release-team @kubeflow/wg-pipeline-leads @kubeflow/wg-notebooks-leads @kubeflow/red-hat @kubeflow/wg-deployment-leads @kubeflow/kubeflow-steering-committee
|
Foundationally, this is still a discussion around if we have an "official" distribution or not. This KEP proposes a single "mega" helm chart with all components inside, this is by definition, an opinionated "distribution" of Kubeflow Platform. The community has discussed and rejected having official distributions in the past, for reasons that are still applicable:
PS: I want to stress that your motivations about making Kubeflow easier to use are great, and I am sure some users would love a Kubeflow Distribution that looks like this. (In fact, there are at least 2 that I am aware of which are similar to your proposal already, so perhaps you can collaborate with them). However, it's critical to keep the project neutral and focused on the tools themselves. Also, while it's clearly not the intention of this KEP, there is a separate discussion around if automatically-generated helm charts based on the existing component kustomize manifests would be useful for downstream distributions. But that would be a completely separate proposal. |
@thesuperzapper is this discussion already happening somewhere ? |
|
Thanks for this great feature—it's really going useful for us! As a suggestion, it would be awesome to include some migration documentation on transitioning from Kustomize to Helm in Goals. Also, any guidance on achieving a zero-downtime migration would be much appreciated. It will help users who are willing to utilise this. Thanks again for all the great work! |
Hey @shaikmoeed thanks for the feedback! One thing that would really help with this initiative is if you would be willing to tell us how Helm would help you and what you are looking for from these Helm charts. Your insights would be super awesome! |
@chasecadet Thanks for asking! We maintain a customized local version of kubeflow/manifests (with patches like Istio, OAuth2 and other fixes), which makes our upgrades challenging. As we manage most of our k8s service using Helm with ArgoCD, this initiative would simplify our process by letting us enable only the needed components and manage our patches more cleanly—eliminating the need to maintain local copies and keeping our upgrade PRs much smaller and easier to review. |
Good to know! Also, we'd love to know about how you use Kubeflow and your use cases, but probably for a different medium. Feel free to hit me up on the CNCF slack (chasecadet) if you'd like to share. Also let's ensure your org is on the adopters list so you get credit for being bleeding edge! |
Actually that is not the case. It is not a distribution, since they would still be the community manifests, not derived/deviated from it. But you are right in the sense that we should have helm charts for the individual components and combine them as we combine the kustomize manifests of the individual components. In the end we have a wonderful heterogeneous userbase and they want both options . If possible we should just combine the smaller ones in a meta helm chart or so similar to the kustomize overlay https://github.com/kubeflow/manifests/blob/master/example/kustomization.yaml . In the end the goal is to have something helm based with a similar structure / goal as the current kustomize manifests. Please make constructive suggestions in the KEP how we can emphasize this more. "Also, while it's clearly not the intention of this KEP, there is a separate discussion around if automatically-generated helm charts based on the existing component kustomize manifests would be useful for downstream distributions. But that would be a completely separate proposal. Also here I have to object, this is not a separate discussion. Automatically-generated helm charts are within this KEP. But that is an implementation detail of the single source of truth requirement. CC @lburgazzoli |
Hello, are you familiar with https://github.com/kubeflow/manifests?tab=readme-ov-file#upgrading-and-extending ? Maybe this can help you until the helm manifests are ready. |
|
@shaikmoeed https://github.com/kubeflow/community/blob/master/ADOPTERS.md is the file where you can add your company. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for this effort team!
I left my initial comments.
I will review it again later this week.
Signed-off-by: juliusvonkohout <[email protected]>
|
New changes are detected. LGTM label has been removed. |
Signed-off-by: juliusvonkohout <[email protected]>
Signed-off-by: Julius von Kohout <[email protected]>
Signed-off-by: Julius von Kohout <[email protected]>
Signed-off-by: Julius von Kohout <[email protected]>
|
Hey, i made a helm chart to install kubeflow. Check it out and open to feedback https://github.com/TheCodingSheikh/helm-charts/tree/main/charts/kubeflow |
This is awesome! I think what the KSC is working on determining is whether this is a "distribution" or something we move within the main Kubeflow repos. The boundaries of what is core Kubeflow vs. component manifests we support etc.. Right now you can in theory install everything with a single kustomize command, but using best in breed cloud services or other configurations requires effort. Then do you template the patches and how do you potentially tie that into a CI/CD system nicely or just use ArgoCD. This is a great contribution and we eagerly await the KSCs decision so we can figure out the best path forward. Please continue to give feedback here if you have it! |
|
From the @kubeflow/kubeflow-steering-committee meeting today: Voted for by all meeting attending KSC members (4). Not more not less, so do not interpret too much. This is not supposed to answer all questions and possibilities, but to allow us to move forward with the GSOC project and see how far we get. |
|
Good news! Thank you for sharing the information. |
|
Hi all, Thanks for the detailed proposal and all the great work in pushing forward official Helm support for Kubeflow. I'd like to propose and outline an alternative chart structure that addresses some of the limitations of Helm's dependency system while supporting modularity, reusability, and vendor extensibility. 🔍 MotivationThe current proposal describes a structure where each Kubeflow component maintains its own Helm Chart, and a top-level AIO (all-in-one) chart acts as an umbrella by declaring those components as dependencies. While this works well, it introduces a known limitation:
To support advanced use cases such as vendor charts or GitOps-first workflows, I propose an alternative that avoids Helm dependencies altogether. This structure introduces a clear separation between rendered manifests and reusable logic. It uses Git submodules for composition rather than relying on Helm’s dependency resolution, making the architecture more extensible and suitable for complex multi-layered setups. 🧩 Proposed StructureEach major component (e.g., Pipelines, Central Dashboard, Notebooks) is maintained under their respective repository. In this structure, the
Shared Templates Repository (
Component Chart Example ( Component Chart Example ( AIO Helm Chart ( ✅ BenefitsStructural Scalability
Maintainability & Reusability
Compatibility & Workflow
🧠 Origin and ReferenceThis structure comes from my experience developing and maintaining a working "Mega Kubeflow Helm Chart", available here: It also draws inspiration from other large-scale Helm projects such as
You can explore more here: 🚀 Final ThoughtsIf one-level nesting is acceptable, the current direction is sound. But if we want to support higher-level reuse and allow vendors/platforms to compose Kubeflow flexibly, this alternative provides a scalable, modular, and Helm-compliant solution. Would the community be open to exploring this model as a prototype or RFC-style implementation? I'm happy to contribute a working example or engage in further discussion! |
|
@kromanow94 do you want to guide @kunal-511 regarding "AIO Helm Chart (manifests/experimental/helm)" he started here https://github.com/kubeflow/manifests/pull/3154/files |
|
The GSOC project with Helm is ongoing, so i plan to merge this proposal soon. |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: juliusvonkohout The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
@juliusvonkohout Before merging this KEP, we need to ensure that we update the proposal. |
can you make direct code suggestions then ? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@juliusvonkohout I left my suggestions.
@thesuperzapper @kimwnasptd Do you want to leave your comments as well ?
| @@ -0,0 +1,450 @@ | |||
| # 831-Helm-Manifests: Installing Kubeflow with Helm | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This KEP should be renamed:
| # 831-Helm-Manifests: Installing Kubeflow with Helm | |
| # 831-Helm-Manifests: Support Helm for Individual Kubeflow Tools |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But is should also allow users to combine the Helm charts on their own as needed downstream. Therefore at least the title i would leave as it is
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What does install Kubeflow mean ?
As we discussed here, we have two concepts: kubeflow/kubeflow#7734:
- Kubeflow projects
- Kubeflow AI reference platform
If we say that this KEP is to implements Helm Charts for Kubeflow Projects we should say:
Implement Helm Charts for Kubeflow Projects.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What does install Kubeflow mean ? As we discussed here, we have two concepts: kubeflow/kubeflow#7734:
* Kubeflow projects * Kubeflow AI reference platformIf we say that this KEP is to implements Helm Charts for Kubeflow Projects we should say:
Implement Helm Charts for Kubeflow Projects.
A leader's greatest defense against upheaval isn’t control or secrecy—it’s the trust and goodwill of the people. When leaders become resented, or when the community grows tired and disengaged, they’re not overthrown by force—they’re abandoned.
When people no longer feel heard or aligned with leadership, they stop defending it. They become indifferent, or worse, open to influence from alternatives that promise clarity, participation, and direction. That’s the real risk—not rebellion, but quiet attrition. And once that trust erodes, it’s incredibly hard to get back.
We are making the same mistake. By resisting a clear, consistent definition of Kubeflow as a platform—and instead pushing a vague, ever-shifting ecosystem narrative—we alienate the very community we rely on for innovation and resilience. This approach hasn't been meaningfully opened to the community, yet "Kubeflow platform" continues to surface organically across talks, Slack threads, and real user deployments. We're not leading; we're obstructing.
If we want to survive and thrive, we must choose clarity, openness, and alignment with the community. Not doing so is a slow self-destruction. Our sin of certainty is leading us astray and we aren't fixing the real problem, which is community apathy.
In this PR I an even see @juliusvonkohout's usual stoic self show frustration. This is a thread being pulled from a sweater that will soon unravel. @akgraner might have something to say as well here.
| ``` | ||
| kubeflow/manifests/experimental/helm | ||
| │── charts/ | ||
| │ │── training-operator/ | ||
| │ │── katib/ | ||
| │ │── pipelines/ | ||
| │ │── istio/ | ||
| │ │── profiles/ | ||
| │ │── common/ | ||
| │ │── kserve/ | ||
| │── templates/ | ||
| │── values.yaml | ||
| │── Chart.yaml | ||
| │── README.md |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This needs to be updated.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe @kunal-511 can do so.
| global: | ||
| namespace: kubeflow | ||
| istio: | ||
| enabled: true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This needs to be updated.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| ### Implementation Plan | ||
| * Create a subdirectory (kubeflow/manifests/experimental/helm) to host the Helm charts. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we need to put Helm Charts in the experimental folder if we maintain them in the individual Kubeflow Project repos ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
agree with this comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because you want someone to mentor this. I do not have the time to deal with each maintainer and fix their tests, i need the extended platform tests and make sure that the rendered output is identical with kustomize. All of this must be reusable and scalable without code duplication. So i can incubate in /experimental with full proper tests support and then upstream. Otherwise i would rather cancel the whole helm effort and move to something time efficient, because i value my time and that is not worth it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In that case, we should have plan how we can keep those Helm Charts synchronized between kubeflow/manifests and other repositories.
Since this KEP is affecting every Kubeflow project it requires collaboration across working groups and project maintainers.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The same way as we synchronize kustomize. @kunal-511 will include them in our synchronization scripts. So upstream should become source after incubation as it is with kustomize.
| * Create a subdirectory (kubeflow/manifests/experimental/helm) to host the Helm charts. | ||
| * Define the Helm chart structure, ensuring compatibility, synchronizability, and a single source of truth with the Kustomize manifests. | ||
| * Develop subcharts for each major Kubeflow component (Pipelines, Platform, Notebooks, Dashboard, Katib, Training Operator, Istio, etc.) and make them deployable simultaneously to replicate the kustomize manifests. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| * Develop subcharts for each major Kubeflow component (Pipelines, Platform, Notebooks, Dashboard, Katib, Training Operator, Istio, etc.) and make them deployable simultaneously to replicate the kustomize manifests. | |
| * Develop subcharts for each major Kubeflow tool (Pipelines, Trainer, Katib, Model Registry, Spark Operator, Notebooks). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
without istio etc helm charts it becomes useless for me and violates the original GSOC Idea. This change would make it useless for me to mentor this. I would waste 80 % of my and the students time. Then i rather close the PR and focus on something useful for the community. I need to be at least able to install all components individually even without a combined chart as we do already for kustomize.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same comment as here: #832 (comment)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How much time have we spent on this? To block a community-supported Helm chart? Fascinating.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I 100% agree with @chasecadet here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Working Group, KSC, or active maintainers of Kubeflow projects have not agreed on the Helm Charts that is proposed in this KEP. If @kubeflow/wg-manifests-leads is sponsoring this proposal, we should get at least +1 from @kimwnasptd.
As KSC voted previously, we agreed to have Helm Charts only for standalone Kubeflow project: #832 (comment)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let them eat cake.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, but we explicitly did not vote to block something. We voted to encourage something. This Helm becomes useful for large installations, where you need templating for multiple charts. E.g you install KFP, model registy and Notebooks. Then helm finding what is needed as dependencies (istio, knative etc.) and setting common thing is the big benefit. Otherwise i can just wrap kustomize as it is in helm and be done in a few minutes with GSOC. In the end the goal is to have helm charts where i can say i want single or multi-tenant mode and based on that it install dependencies and sets up resources differently. Otherwise the effort is more ore less the same for the installation, kustomization and maintenance as with kustomize.
Co-authored-by: Andrey Velichkevich <[email protected]> Signed-off-by: Julius von Kohout <[email protected]>
Co-authored-by: Andrey Velichkevich <[email protected]> Signed-off-by: Julius von Kohout <[email protected]>
Signed-off-by: Julius von Kohout <[email protected]>
Co-authored-by: Andrey Velichkevich <[email protected]> Signed-off-by: Julius von Kohout <[email protected]>
Co-authored-by: Andrey Velichkevich <[email protected]> Signed-off-by: Julius von Kohout <[email protected]>
Co-authored-by: Andrey Velichkevich <[email protected]> Signed-off-by: Julius von Kohout <[email protected]>
Co-authored-by: Andrey Velichkevich <[email protected]> Signed-off-by: Julius von Kohout <[email protected]>
Co-authored-by: Andrey Velichkevich <[email protected]> Signed-off-by: Julius von Kohout <[email protected]>
revert to continue in the manifests charter PR. Signed-off-by: Julius von Kohout <[email protected]>
|
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
|
The implementation is progressing as experimental POC. |

Helm KEP from @varodrig @chasecadet @juliusvonkohout
Fixed branch from #830
Placeholder: #831
Implementation: kubeflow/manifests#2730