Skip to content

Conversation

@kunal-511
Copy link
Contributor

Pull Request Template for Kubeflow Manifests

✏️ Summary of Changes

Add kubeflow-pipeline Helm Charts

📦 Dependencies

List any dependencies or related PRs (e.g., "Depends on #123").

🐛 Related Issues

Link any issues that are resolved or affected by this PR.

✅ Contributor Checklist

  • I have tested these changes with kustomize. See Installation Prerequisites.
  • All commits are signed-off to satisfy the DCO check.
  • I have considered adding my company to the adopters page to support Kubeflow and help the community, since I expect help from the community for my issue (see 1. and 2.).

You can join the CNCF Slack and access our meetings at the Kubeflow Community website. Our channel on the CNCF Slack is here #kubeflow-platform.

@google-oss-prow
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign kimwnasptd for approval. For more information see the Kubernetes Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@juliusvonkohout
Copy link
Member

Please rebase to master

@kunal-511 kunal-511 marked this pull request as ready for review October 12, 2025 07:32
@kunal-511
Copy link
Contributor Author

@juliusvonkohout It is now ready for review

@juliusvonkohout
Copy link
Member

@kunal-511 i think you have to remove the AWS and GCP specific stuff, because it it more than basic integration and could violate the charter. It is also mostly remove in upstream KFP now.

@kunal-511
Copy link
Contributor Author

/retest

@juliusvonkohout
Copy link
Member

The kfp 2.15 release with fundamental changes is supposed to be close in the next week and manged by @HumairAK @droctothorpe and other maintainers. @kunal-511 do you want to wait for it before we merge ?

@kunal-511
Copy link
Contributor Author

Yes we can wait for that

@kromanow94
Copy link
Contributor

Hey, I have some experience with Helm Charts and Kubeflow. I created one Kubeflow Helm Chart some time ago as a PoC to show at least one possible approach for this initiative. My approach was to have One Big Helm Chart with a series of parameterizations. I see the approach here is to have separate Helm Charts which also makes sense. Just FYI, my work is available here:

https://github.com/kromanow94/kubeflow-manifests/releases/tag/kubeflow-0.5.0

I want to let you know that I have some time to get back to the idea of Kubeflow Helm Chart and I'm willing to help with this initiative.

In the next few days I'm planning to have a closer look at this PR and try to find some place where I could help. Let me know if there is something on your mind that I could do.

Best,
Roman

@juliusvonkohout
Copy link
Member

juliusvonkohout commented Nov 21, 2025

@kromanow94

# Multi tenant platform installation:
helm install ./charts/kubeflow-namespaces (kubeflow-namespaces/base)
helm install ./charts/kubeflow-platform (common/{kubeflow-roles, networkpolicies, security})
helm install ./charts/cert-manager # wrapper for https://github.com/kromanow94/kubeflow-manifests/blob/e04359ab1d4603faffbdd02df78ebf8df88fae2b/example/helm/quickstart.helm.local.sh#L71
helm install ./charts/istio --values=myvaluefile # wrapper helm chart for https://github.com/kromanow94/kubeflow-manifests/blob/e04359ab1d4603faffbdd02df78ebf8df88fae2b/example/helm/quickstart.helm.local.sh#L89
helm install ./charts/oauth2-proxy # wrapper for https://github.com/kromanow94/kubeflow-manifests/blob/e04359ab1d4603faffbdd02df78ebf8df88fae2b/example/helm/quickstart.helm.local.sh#L139
# Copy most items from here https://github.com/kromanow94/kubeflow-manifests/blob/helmcharts/example/helm/quickstart.helm.local.sh#L81
helm upgrade ./charts/dex # wrapper for https://github.com/kromanow94/kubeflow-manifests/blob/e04359ab1d4603faffbdd02df78ebf8df88fae2b/example/helm/quickstart.helm.local.sh#L80

Above is what you can work on first.
helm install ./charts/kubeflow-dashboard --set installation_mode=platform
helm install ./charts/kubeflow-pipelines (contains argo, ...) --set installation_mode=platform
helm install ./charts/kubeflow-notebooks --set installation_mode=platform
helm install ./charts/knative-serving (needed for kserve) --set installation_mode=platform
helm install ./charts/kserve (should we have knative-serving as dependency here) --set installation_mode=platform
helm install ./charts/kubeflow-trainer --set installation_mode=platform
...

# Standalone installation of individual components:
helm install kubeflow-trainer --set installation_mode=standalone
helm install kubeflow-katib --set installation_mode=standalone
...

@juliusvonkohout
Copy link
Member

image

@kunal-511 kunal-511 force-pushed the pipeline-helm-charts branch from 2b438e5 to 1345f9e Compare November 26, 2025 11:20
@kunal-511
Copy link
Contributor Author

rebase this due to #3283

@juliusvonkohout
Copy link
Member

rebase this due to #3283

Thank you.

First you can remove a lot of stuff. We deleted some environments and files such as sync.py changed completely which is not reflected here. I think many files are outdated now also with old image tags imageTag: "2.14.3".

Also we need to find a way to cut the lines in this PR by roughly 75 %. For example most security contexts are already PSS restricted, so the should not be configurable. That already saves a few hundred lines. Also minio is gone entirely and we should only support seaweedfs. Also postgresql is not needed right now i would say. So most of the value files in the ci folder can also go. In the end we only need to support 2 flavors:

# Kubeflow Pipelines (SeaweedFS as default S3 storage)
- ../applications/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user # Pipeline definitions stored in the database
# - ../applications/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user-k8s-native # Pipeline Definitions Stored as Kubernetes Resources

and then we should expose the basic configurationmaps, usernames and passwords for seaweedfs / databases. We can step by step expose more if needed by customers, but lets start with a minimal setup that is easy to maintain and good enough for 80 % of users with 20% effort.

Signed-off-by: kunal-511 <[email protected]>
Signed-off-by: kunal-511 <[email protected]>
Signed-off-by: kunal-511 <[email protected]>
Signed-off-by: kunal-511 <[email protected]>
Signed-off-by: kunal-511 <[email protected]>
Signed-off-by: kunal-511 <[email protected]>
Signed-off-by: kunal-511 <[email protected]>
Signed-off-by: kunal-511 <[email protected]>
@kunal-511 kunal-511 force-pushed the pipeline-helm-charts branch from 333302c to 0b0082d Compare December 1, 2025 17:54
@kunal-511
Copy link
Contributor Author

kunal-511 commented Dec 1, 2025

@juliusvonkohout I have updated the pipelines helm charts to support only 2 flavors and according to the new version

Signed-off-by: kunal-511 <[email protected]>

description: A Helm chart for Kubeflow Pipelines - ML Workflows on Kubernetes

version: 2.14.3
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are at 2.15.0 please make sure to update all files. You really need to check each file in this PR.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay

scheduledWorkflow:
additionalEnv:
- name: NAMESPACE
value: ""
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For what do we need this empty value ?

persistenceAgent:
additionalEnv:
- name: NAMESPACE
value: ""
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For what do we need this empty value ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is directly picked from env where it is mentioned:- Empty namespace let viewer controller watch all namespaces

crds:
install: true
application: false
webhook: false
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this not depend on pipelineDefinition:
storage: database ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will add a comments in both values files that crds.webhook should match pipelineDefinition.storage for consistency, even though templates check pipelineDefinition.storage directly

subjects:
- kind: ServiceAccount
name: {{ include "kubeflow-pipelines.cache.serviceAccountName" . }}
namespace: {{ include "kubeflow-pipelines.namespace" . }}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It must anyway the same namespace. All KFP components must be in the same namespace so you can use a shared variable across all resources.

name: kubeflow-pipelines-cache-role
subjects:
- kind: ServiceAccount
name: {{ include "kubeflow-pipelines.cache.serviceAccountName" . }}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you sure that KFP does not break if we change that? Please only make things configurable that are actually configurable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants