Skip to content

helm: add Kubeflow Dashboard chart - #3524

Open
danish9039 wants to merge 14 commits into
kubeflow:masterfrom
danish9039:gsoc/dashboard-wrapper-chart
Open

helm: add Kubeflow Dashboard chart#3524
danish9039 wants to merge 14 commits into
kubeflow:masterfrom
danish9039:gsoc/dashboard-wrapper-chart

Conversation

@danish9039

@danish9039 danish9039 commented Jul 2, 2026

Copy link
Copy Markdown
Member

Summary of Changes

Adds the Kubeflow Dashboard Helm wrapper chart as a co-located application chart under applications/dashboard/helm.

This PR keeps the first reviewable slice focused on Kustomize parity for the customer-facing Dashboard platform install path. It retains only the platform scenario, which maps to applications/dashboard/overlays/istio, and removes the exploratory split Dashboard CI scenarios from the chart PR scope.

The PR also updates Helm/Kustomize comparison wiring to the new chart path, uses Helm 4 in the comparison workflow, and extends scripts/synchronize-dashboard-manifests.sh so future Dashboard upstream syncs also refresh the Helm chart appVersion and regenerated static platform template.

The chart is placed under applications/dashboard/helm because Dashboard is an official application component, and this is the application-side equivalent of placing common wrappers under common/<component>/helm. The sync script owns applications/dashboard/upstream, while the Helm chart lives as a sibling under applications/dashboard/helm.

Dependencies

Conceptually follows the foundation and wrapper chart PRs for runtime installation order:

Render parity validation for this PR is self-contained.

Related Issues

Part of the Project 5 Helm chart work.

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.).

Synchronization Flow

The platform overlay is rendered once, then every resource is validated and assigned to a deterministic component payload.

flowchart TD
    A["Kustomize<br/>platform overlay"] --> B["One complete<br/>Kustomize build"]
    B --> C["Python generator<br/>parses YAML"]
    C --> D["Validate and classify<br/>every resource"]
    D --> E["Central Dashboard payload"]
    D --> F["PodDefaults CRD<br/>and resource payloads"]
    D --> G["Profile Controller CRD<br/>and resource payloads"]
    E --> H["Small Helm templates<br/>using .Files.Get"]
    F --> H
    G --> H
    H --> I["Same rendered<br/>Kubernetes resources"]
Loading

Relevant File Structure

applications/dashboard/
├── upstream/centraldashboard/
├── upstream/poddefaults-webhooks/
├── upstream/profile-controller/
├── overlays/istio/
└── helm/
    ├── kustomize/kustomization.yaml
    ├── manifests/       # five generated payloads
    ├── templates/
    ├── ci/values-platform.yaml
    ├── Chart.yaml
    ├── values.yaml
    └── README.md

Installation, supported scenarios, and chart configuration are documented in applications/dashboard/helm/README.md.

Validation

helm lint applications/dashboard/helm
./tests/helm_kustomize_compare.sh kubeflow-dashboard platform
./tests/helm_kustomize_compare_all.sh kubeflow-dashboard
bash -n scripts/synchronize-dashboard-manifests.sh tests/helm_kustomize_compare.sh tests/helm_kustomize_compare_all.sh
python3 -m py_compile tests/helm_kustomize_compare.py
git diff --check

Also verified with temporary Helm v4.2.2:

helm lint applications/dashboard/helm
./tests/helm_kustomize_compare_all.sh kubeflow-dashboard

Copilot AI review requested due to automatic review settings July 2, 2026 22:48
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown

Welcome to the Kubeflow Community Distribution 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 synchronized 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/community-distribution 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.

Pull request overview

Adds a co-located Helm wrapper chart for the Kubeflow Dashboard application and wires it into the existing Helm↔Kustomize render-parity validation and synchronization flow.

Changes:

  • Introduce applications/dashboard/helm as a static, scenario-gated Helm wrapper chart rendering the current Dashboard overlays/istio (“platform”) install.
  • Extend Helm/Kustomize comparison scripts to include the new kubeflow-dashboard component and scenario.
  • Update the Dashboard synchronization script to also refresh the Helm chart appVersion and regenerated static platform.yaml template; update the comparison workflow to install Helm 4.

Reviewed changes

Copilot reviewed 10 out of 11 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/helm_kustomize_compare.sh Adds kubeflow-dashboard component wiring for parity comparison.
tests/helm_kustomize_compare.py Allows kubeflow-dashboard as a supported component in the comparison tool.
tests/helm_kustomize_compare_all.sh Adds kubeflow-dashboard to the “all” comparison matrix.
scripts/synchronize-dashboard-manifests.sh Extends upstream sync automation to also refresh Helm chart metadata and static template output.
applications/dashboard/helm/values.yaml Defines default chart values (scenario selection).
applications/dashboard/helm/templates/validate.yaml Adds scenario validation to fail fast on unsupported values.
applications/dashboard/helm/templates/platform.yaml Provides the static Kustomize-parity rendered payload for the “platform” scenario.
applications/dashboard/helm/README.md Documents install shape, caveats, and parity validation commands.
applications/dashboard/helm/ci/values-platform.yaml CI fixture values for the “platform” scenario.
applications/dashboard/helm/Chart.yaml Introduces the Dashboard wrapper chart metadata.
.github/workflows/helm-kustomize-comparison.yml Triggers parity CI for Dashboard changes and installs Helm v4.2.2 via setup action.

Comment thread tests/helm_kustomize_compare_all.sh Outdated
Comment thread tests/helm_kustomize_compare.py Outdated
Comment thread scripts/synchronize-dashboard-manifests.sh Outdated

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 10 out of 11 changed files in this pull request and generated 1 comment.

Comment thread tests/helm_kustomize_compare.py Outdated
@danish9039
danish9039 force-pushed the gsoc/dashboard-wrapper-chart branch 3 times, most recently from 6f08852 to f193623 Compare July 11, 2026 16:02
@danish9039
danish9039 marked this pull request as ready for review July 11, 2026 16:53

@juliusvonkohout juliusvonkohout left a comment

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.

You are missing the synchronization script changes

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 10 out of 11 changed files in this pull request and generated 3 comments.

Comment thread tests/helm_kustomize_compare.sh Outdated
Comment thread scripts/synchronize-dashboard-manifests.sh Outdated
Comment thread scripts/synchronize-dashboard-manifests.sh Outdated
@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 ask for approval from juliusvonkohout. 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

@danish9039

Copy link
Copy Markdown
Member Author

The synchronization script now updates Chart.yaml and regenerates templates/platform.yaml through the shared atomic helper.

@danish9039
danish9039 force-pushed the gsoc/dashboard-wrapper-chart branch 2 times, most recently from 96cc1b6 to 6e0faaa Compare July 23, 2026 13:44
@danish9039

Copy link
Copy Markdown
Member Author

@juliusvonkohout for review

Comment thread tests/test_resynchronize_upstream_changes.py

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 24 out of 25 changed files in this pull request and generated 3 comments.

Comment thread tests/resynchronize-upstream-changes.py
Comment thread .github/workflows/helm-kustomize-comparison.yml
Comment thread applications/dashboard/helm/README.md Outdated
@danish9039
danish9039 force-pushed the gsoc/dashboard-wrapper-chart branch from 562e60b to fcce26d Compare July 27, 2026 13:27
@juliusvonkohout
juliusvonkohout requested a review from Copilot July 27, 2026 14:18
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>
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>
Signed-off-by: danish9039 <danishsiddiqui040@gmail.com>
Signed-off-by: danish9039 <danishsiddiqui040@gmail.com>
Comment on lines +21 to +22

self.assertEqual(selector.find_upstream_scripts([path]), EXPECTED_SCRIPTS)

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.

Suggested change
self.assertEqual(selector.find_upstream_scripts([path]), EXPECTED_SCRIPTS)
self.assertEqual(selector.find_upstream_scripts([path]), EXPECTED_SCRIPTS)

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 24 out of 25 changed files in this pull request and generated 1 comment.

Comment on lines +122 to +123
- name: Install Kustomize
run: ./tests/kustomize_install.sh

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.

Is this a duplication ?

@juliusvonkohout

Copy link
Copy Markdown
Member

How can i disable for example the default login flow ? what are the things i can easily configure ?

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