Skip to content

helm: add Kubeflow foundation charts#3468

Open
danish9039 wants to merge 12 commits into
kubeflow:masterfrom
danish9039:gsoc/platform-foundation-charts
Open

helm: add Kubeflow foundation charts#3468
danish9039 wants to merge 12 commits into
kubeflow:masterfrom
danish9039:gsoc/platform-foundation-charts

Conversation

@danish9039

@danish9039 danish9039 commented May 17, 2026

Copy link
Copy Markdown
Member

Summary

Adds the first two Project 5 foundation Helm charts under experimental/helm/charts:

  • kubeflow-namespaces
  • kubeflow-platform

kubeflow-namespaces owns the bootstrap namespace layer for the platform install. It renders the Kubeflow namespaces, platform dependency namespaces, and namespace-scoped NetworkPolicies that currently come from common/kubeflow-namespace/base plus the dependency namespace baselines.

kubeflow-platform owns the shared Kubeflow platform RBAC from common/kubeflow-roles/base.

Scope

  • Add experimental/helm/charts/kubeflow-namespaces.
  • Add experimental/helm/charts/kubeflow-platform.
  • Add Helm/Kustomize comparison scenarios for both charts.
  • Add a namespace-union comparison scenario for the platform namespaces used by the first wrapper charts.

Namespace behavior

kubeflow-namespaces is the bootstrap chart. Its Helm release is installed in default because it creates kubeflow-system.

Namespaces created by this chart are kept on helm uninstall, since later platform and component charts may create resources inside them.

If a namespace already exists, for example a company-managed cert-manager namespace, the chart skips adopting it and prints a note. Helm does not patch labels on unmanaged pre-existing namespaces, so missing labels must be applied separately.

Install shape

helm install kubeflow-namespaces ./experimental/helm/charts/kubeflow-namespaces --namespace default
helm install kubeflow-platform ./experimental/helm/charts/kubeflow-platform --namespace kubeflow-system

Validation

helm lint experimental/helm/charts/kubeflow-namespaces
helm lint experimental/helm/charts/kubeflow-platform
./tests/helm_kustomize_compare.sh kubeflow-namespaces base
./tests/helm_kustomize_compare.sh kubeflow-namespaces platform-namespaces
./tests/helm_kustomize_compare.sh kubeflow-platform base
./tests/helm_kustomize_compare_all.sh kubeflow-namespaces
./tests/helm_kustomize_compare_all.sh kubeflow-platform

Also validated the namespace lifecycle in kind for:

  • fresh install and upgrade
  • pre-existing unmanaged cert-manager namespace
  • retained namespaces after Helm ownership checks

Copilot AI review requested due to automatic review settings May 17, 2026 22:37
@github-actions

Copy link
Copy Markdown

Welcome to the Kubeflow Manifests Repository

Thanks for opening your first PR. Your contribution means a lot to the Kubeflow community.

Before making more PRs:
Please ensure your PR follows our Contributing Guide.
Please also be aware that many components are synchronizes from upstream via the scripts in /scripts.
So in some cases you have to fix the problem in the upstream repositories first, but you can use a PR against kubeflow/manifests to test the platform integration.

Community Resources:

Thanks again for helping to improve Kubeflow.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@danish9039 danish9039 force-pushed the gsoc/platform-foundation-charts branch 2 times, most recently from d0658e5 to 58e2aa5 Compare May 19, 2026 19:37
@danish9039 danish9039 force-pushed the gsoc/platform-foundation-charts branch from 58e2aa5 to 518a7c4 Compare May 25, 2026 16:00
# Default values for kubeflow-namespaces.

global:
# -- Primary Kubeflow namespace.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

what is the purpose of such comments?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Removed the redundant values comments in values.yaml.

systemNamespace: kubeflow-system

networkPolicies:
# -- Keep namespace NetworkPolicies aligned with common/kubeflow-namespace/base.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

what is the purpose of such comments ?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Removed the redundant values comments in values.yaml.

@danish9039 danish9039 force-pushed the gsoc/platform-foundation-charts branch 2 times, most recently from 45a0c78 to b7f645f Compare May 30, 2026 21:21
@danish9039 danish9039 marked this pull request as ready for review June 1, 2026 13:34
@danish9039

Copy link
Copy Markdown
Member Author
Chart type Example chart Release namespace Workload namespace Reason
Bootstrap foundation kubeflow-namespaces default or maintainer-chosen bootstrap namespace creates kubeflow, kubeflow-system kubeflow-system does not exist yet
Platform foundation kubeflow-platform kubeflow-system after namespace chart mostly cluster-scoped platform-owned shared policy
External wrapper cert-manager cert-manager cert-manager, kube-system mentor direction: release metadata stays with main workload namespace
External wrapper istio istio-system istio-system, kube-system, kubeflow release metadata stays with Istio workload namespace
External wrapper oauth2-proxy oauth2-proxy oauth2-proxy, istio-system release metadata stays with auth proxy workload namespace
External wrapper dex auth auth release metadata stays with Dex workload namespace
External wrapper knative-serving knative-serving knative-serving, istio-system release metadata stays with Knative workload namespace
Component chart kubeflow-pipelines kubeflow kubeflow component runs in Kubeflow namespace
Component chart kubeflow-katib kubeflow kubeflow component runs in Kubeflow namespace
Component chart kubeflow-dashboard kubeflow kubeflow component runs in Kubeflow namespace
Component chart kubeflow-notebooks kubeflow kubeflow component runs in Kubeflow namespace
Component chart kserve kubeflow kubeflow current Kubeflow KServe path uses kubeflow
Component chart kubeflow-trainer kubeflow-system kubeflow-system current trainer overlay runs in kubeflow-system
Optional component workspaces kubeflow-system or kubeflow-workspaces kubeflow-workspaces decide when Workspaces scope is active

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I am assuming you have captured all the netpol from https://github.com/kubeflow/manifests/tree/master/common/kubeflow-namespace/base/kubeflow kustomize

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Yes, these NetworkPolicies are copied from common/kubeflow-namespace/base/kubeflow and covered by the Helm/Kustomize comparison.

- `Namespace/auth`
- namespace-scoped NetworkPolicies required by the platform baseline

If one of these namespaces already exists, for example a company-managed `cert-manager` namespace, the chart does not recreate or adopt it. Helm does not patch labels on unmanaged pre-existing resources; apply the required labels to that namespace separately if they are missing.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Should we also mention in the README that namespaces created by kubeflow-namespaces chart are not deleted when the chart is uninstalled via Helm?

helm uninstall kubeflow-namespaces
This would help clarify the expected behavior for users and prevent accidental assumptions about namespace cleanup during uninstallation.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Added this to the README; namespaces created by this bootstrap chart are kept on helm uninstall.

Signed-off-by: danish9039 <danishsiddiqui040@gmail.com>
Signed-off-by: danish9039 <danishsiddiqui040@gmail.com>
Signed-off-by: danish9039 <danishsiddiqui040@gmail.com>
Signed-off-by: danish9039 <danishsiddiqui040@gmail.com>
Signed-off-by: danish9039 <danishsiddiqui040@gmail.com>
Signed-off-by: danish9039 <danishsiddiqui040@gmail.com>
@danish9039 danish9039 force-pushed the gsoc/platform-foundation-charts branch from 7aec9b1 to d9d83c1 Compare June 7, 2026 23:18
@google-oss-prow

Copy link
Copy Markdown

@dhanishaphadate: changing LGTM is restricted to collaborators

Details

In response to this:

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@danish9039 danish9039 requested a review from Copilot June 7, 2026 23:42

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 19 out of 19 changed files in this pull request and generated 2 comments.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: metatada-envoy
Comment on lines +139 to +142
declare -A KUSTOMIZE_PATHS=(
["base"]="$MANIFESTS_DIR/base"
["platform-namespaces"]="$ROOT_DIR/common/kubeflow-namespace/base"$'\n'"$ROOT_DIR/common/cert-manager/base"$'\n'"$ROOT_DIR/common/istio/istio-namespace/base"$'\n'"$ROOT_DIR/common/oauth2-proxy/base"$'\n'"$ROOT_DIR/common/dex/base"
)

@dhanishaphadate dhanishaphadate left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

LGTM

@google-oss-prow

Copy link
Copy Markdown

@dhanishaphadate: changing LGTM is restricted to collaborators

Details

In response to this:

LGTM

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Signed-off-by: danish9039 <danishsiddiqui040@gmail.com>
Signed-off-by: danish9039 <danishsiddiqui040@gmail.com>
Signed-off-by: danish9039 <danishsiddiqui040@gmail.com>
@google-oss-prow

Copy link
Copy Markdown

[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 juliusvonkohout for approval. For more information see the Kubernetes Code Review Process.

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

Details 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

Signed-off-by: danish9039 <danishsiddiqui040@gmail.com>
Signed-off-by: danish9039 <danishsiddiqui040@gmail.com>
Signed-off-by: danish9039 <danishsiddiqui040@gmail.com>
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.

4 participants