npm i rewrites frontend/package-lock.json, which the old cleanup step did not restore, so goreleaser aborted on a dirty tree and no release was published.
Applies commonLabels to every rendered resource, wires up the likewise-unused dashboard.persistence.labels, and adds the missing README rows.
Closes#730
Co-authored-by: ashutoshbhardwaj007 <ashutosh.bhardwaj@poppulo.com>
Closes four open Dependabot advisories, all patched in 7.18.0:
- Unauthenticated DoS via inefficient route matching
- Open redirect via backslash in <Link>/useNavigate (CVE-2025-68470 bypass)
- Arbitrary constructor injection in deserializeErrors()
- RSCErrorHandler missing protocol validation (XSS)
Supersedes #726, which proposed the 8.3.0 major. v8 is not required for
any of these fixes and would additionally impose Node >=22.22.0,
React >=19.2.7, ESM-only distribution and an ES2022 target.
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* build(deps): bump vite, ws, js-yaml, esbuild, @babel/core in /frontend
Closes six Dependabot advisories that had no automated PR because all but
vite are transitive and not expressible as direct bumps:
vite 7.3.1 -> 7.3.6 3 high
ws 8.19.0 -> 8.21.3 1 high
js-yaml 4.1.1 -> 4.3.0 1 high
esbuild 0.27.3 -> 0.28.1 1 low
@babel/core 7.29.0 -> 7.29.7 1 low
storybook moves 10.2.10 -> 10.5.7 as a prerequisite: 10.2.10 caps esbuild
at ^0.27.0, so 0.28.1 was unreachable until storybook widened the range.
That is within the declared ^10.2.10, so only the vite range changed in
package.json.
Verified with npm ci, vite build and tsc --noEmit.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(frontend): give action() story callbacks a void return
storybook 10.5.7 types action() as returning any, so the concise arrow
bodies tripped @typescript-eslint/no-unsafe-return. Wrapping the calls in
block bodies discards the return value and restores the void contract the
onSelect/onClick props expect.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Closes two high-severity Dependabot advisories with no automated PR:
- tar extraction: hardlink entry with relative Linkname escapes extract
dir via process CWD resolution
- blob upload vulnerable to credential forwarding via unvalidated
Location header
Pulled in via helm.sh/helm/v3 and marked indirect; Go module resolution
allows raising it above what the parent requires. golang.org/x/sync moves
0.20.0 -> 0.22.0 as a requirement of oras-go 2.6.2.
Verified with go build, go vet and go test ./pkg/...
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
The KB is now refreshed by one centralized twice-daily Buildkite job in
komodorio/knowledge-base (watermark diff across all watched repos); this
per-repo GH Action is no longer needed. See knowledge-base#9.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
* chore: upgrade Go toolchain to 1.25 and bump helm to v3.20.2
Upgrades Go from 1.24 to 1.25 in go.mod and CI workflow to fix
golangci-lint compatibility. Includes helm.sh/helm/v3 bump to v3.20.2.
Supersedes #678.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): upgrade golangci-lint-action to v7 for Go 1.25 support
Action v4 installs golangci-lint v1.x which was built with Go 1.24
and refuses to lint Go 1.25 code. Action v7 uses golangci-lint v2.x
built with Go 1.25+.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: resolve golangci-lint v2 warnings
Handle Body.Close error returns and remove redundant embedded field
selector to satisfy stricter golangci-lint v2 defaults.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The manifests endpoint returns text/plain YAML, but fetchWithSafeDefaults
treats string responses as errors and returns the fallback value ([]).
Revert useGetReleaseManifest to use fetchWithDefaults which correctly
passes through text/plain responses.
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Break up ExtractRelations, extractVolumes, extractEnvRefs, and
extractIngressBackends into smaller focused functions to pass CI
complexity checks.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add yarn resolution to pin dompurify>=3.3.2, fixing transitive dependency
from swagger-ui-react that was stuck at 3.2.6.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add a new "Relations" tab after "Images" that visualizes resource
dependencies within a Helm release as an interactive force-directed graph.
Detects relationships via ownerReferences, *Ref fields, volumes, env refs,
service selectors, ingress backends, and RBAC bindings. External resources
appear as dashed oval ghost nodes. Color-coded by resource category.
Closes#96
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add a new "Images" tab on the release details page that extracts
and displays all container images (including init containers) from
the release manifest. Images are grouped by image string and show
the associated resource and container name.
Closes#83
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add a "Force upgrade" checkbox in the upgrade modal footer that passes
the --force flag to helm upgrade, causing resources to be deleted and
recreated. Also fix the version selector flashing the URL input while
loading by showing a spinner.
Closes#505
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When multiple CRDs share the same kind but different API groups
(e.g. Traefik's Middleware under traefik.io and traefik.containo.us),
the dashboard failed to look up the correct resource. Thread apiVersion
through the resource fetch chain and use group-qualified kind
(e.g. Widget.new.example.com) for kubectl lookups.
Closes#504
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Introduce extendedCarp struct to capture numeric status fields
(desiredNumberScheduled, numberReady, replicas, readyReplicas, etc.)
that are lost during standard Carp unmarshaling. Synthesize an
"Available" condition from these fields so EnhanceStatus can
determine health correctly.
Closes#32
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The DescribeResource component was passing the chart/release name
instead of the actual resource name, causing all resources of the
same kind to show the same describe output.
Closes#657
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat: add support for installing and upgrading charts from URLs
Adds "Install from URL" button to the repositories page, allowing users
to install charts directly from OCI registries and other URLs without
adding them as repositories first. Also adds URL mode to the upgrade
modal (via pencil/X toggle) for charts not found in any configured repo.
Closes#660
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Alter
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extract repeated healthy/unhealthy logic into applyHealthFromCondition helper
and convert if/else chain to switch statement (complexity 29 → 16).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add condition-based health status calculation for additional resource kinds:
- ExternalSecret: checks "Ready" condition
- Job: checks "Complete" and "Failed" conditions
- HorizontalPodAutoscaler: checks "AbleToScale" and "ScalingActive" conditions
- Namespace: handles "Terminating" phase as Progressing
Closes#418
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Introduced tsconfig.app.json and tsconfig.base.json
* yarn.lock
* Introduced tsconfig.app.json, tsconfig.base.jsonfig.
* Refactored eslint.config.js to latest structure
* Returned previous recommended rules.
* More rules
* Force import rules
* Check
* Check
* Cleanup ESLint configuration and plugins
* Cleanup heap: "writable",DD_RUM: "writable" from ESLint configuration
* "scripts" moved to the top of package.json
* Added Error Boundary
* Test improvements
* Introduced useDevLogger
* Updated Cypress to latest and aligned the tests
* Added eslint-enable
* Set allowCypressEnv: false for security reasons.
* added more info to features.md
* added details to FEATURES.md
* .
* reset to last commit
* Update FEATURES.md
* fix: resolve rollback to same revision bug (#578)
* added more info to features.md
* added details to FEATURES.md
* .
* reset to last commit
* Update FEATURES.md
* fix: resolve incorrect upgrade recommendation (#577)
* added more info to features.md
* added details to FEATURES.md
* .
* reset to last commit
* Update FEATURES.md
* feat: add flags to disable slow health and latest version checks
- Introduce --no-health and --no-latest CLI flags
- Support HD_NO_HEALTH and HD_NO_LATEST environment variables
- Skip slow k8s health checks and latest version fetching when flags are set
- Optimize frontend data fetching based on these flags
* chore: fix lint errors in InstalledPackageCard.tsx
* chore: remove accidental lockfile changes
* Updated Story book to the latest one
* Updated tailwindcss related packages and config
* Fixed Storybook
* Added missed colors
* Fixed CSS for the error dialog
If the module is released at major version 2 or higher, the module path must end with a major version suffix like /v2. This may or may not be part of the subdirectory name
See https://go.dev/ref/mod#module-path
* update helm charts for helm-dashboard
1. fix `imagePullSecrets` bug in deployment.yaml
2. add `global` config
3. optimize image field with global registry config
* doc: update doc for charts
* fix: desprecated .storybook/main.ts and actions-addons
* remove: ignore notation in storybook eslint and transition to actions function
* remove: unnecessary eslint ignore code
* Correct path to static dir
* Add UI build to makefile
* Fix docker build
* describe now works
* Installed page - revision view - implement url consistent state logic (#403)
* refactor
* refactor
* Fix/responsive and small stylings (#404)
* add user defined (#405)
* Fix/modal loading button (#406)
* add repo to url (#407)
* Fix/resources table badges (#408)
* filters is now good
* fix
* test results fix
* fix
* fixes - error modal, uninstall modals, typees
* fixes
* bug fix
* Helm dashboard v2 (#402)
* missing config (#409)
* fixes
* fixes
* Fix/minor responsiveness (#410)
* installed release page
* default helm icon
* guard
* refactor
* refactor
* refactor
* key
* refactor
* fixes
* fixes to install
* install, add, upgrade, reconfigure now works
* latest ver fix
* Revision page ui fixes (#411)
* link color
* Add-repository-link (#412)
* empty badge fix
* diff fix in install repo
* removed console.log
* unique key in helathstatus
* Cosmetics
* Goreleaser upgraded
* Another way to fix it
* refactor
* refactor
* chart install fix (#413)
* more maintailable
* loading, empty space and default namespace
* typed
* loading diff state is shared
* modal height fix
* upgrade and add repo connected
* add repo suggestion data connected to modal
* removed console.log
* Chart install fix (#414)
* refactor: fix text align uninstall
* install modal values big fix
* refactor
* no changes in diff msg
* refactor
* sorted versions
* typography changes
* refactor
* refactor
* refactor
* migrate to sb 7 (#416)
* Chart install fix (#415)
* Add troubleshoot in komodor (#417)
* status style
* fix
* fixes
* delete now reload the page correclty
* navigate after add repo fix
* Chart install fix (#419)
* refactor
* refactor
* Fix revision age (#420)
* refactor
* fixed redirects and nav links selected ui (#421)
* test modal ui fixes
* arrows fix
* loading ui (#422)
* test dialog now shows errors
* fixed rollback diff, redirect after rollback, and debouncing before refetching chart values after changing user defined values (#423)
* everything is working besides install chart
* install chart should work now
* no need for this anymore
* styling and naming
* improvements
* navigation fix
* flow fixes
* top bar pixel perfect
* onClose is optional
* ts optional
* pixel perfect - clusters, box shadow, error modal
* installed page pixel perfect
* fixes
* need to fix this naming
* rollback logic is now good
* buttons now similiar to the old app
* pass release instead of release date (#426)
* repository page style fixes
* rounded input
* colors like in the old app
* more rounding
* colors
* colors
* Cosmetics
* drop-shadow cause the dropdown to swallowed
* smaller text
* fixes (#428)
* fixes
* describe fix
* Fix/lint (#431)
* style fixes
* fix
* describe panel style fixes
* diff when repo is available
* diff style fixes
* fixes to install dialog
* specific version should be latests revision
* refactor
* fixes
* fixes
* cause troubles
* Fixes (#434)
* fix
* dont fetch if repo not available
* tag should not be visible
* custom-shdaow fixes
* space and shadow like in the old app
* refactor (#435)
* describe display logic aligned with the old app
* style fix
* action button style fix
* selected revision default logic fix
* font fix
* style fixes
* shutdown button fix
* latest revision is now consistent in dev and prod
* namespace should be empty on install
* fix for current version on install
* sorting fix
* checkmark should be displayed in options - install
* state jump fix
* local charts (#436)
* Several more fixes (#438)
* api docs (#439)
* html remove diff2html dep (#437)
* Refactor
* refactor
* Adding storybook for StatusLabel component (#441)
* refactor (#442)
* we need the css
* add prettier (#440)
* add prettier
* refactor
* refactor
* Fix reconfigure issue (#443)
* first diff fetch fix
* missing dep in hooks (#444)
* namespace should be from query
* triggering diff rerender by listening to loading
* missing uservalues
* no need for auto retry
* we should work against latest revision
* refactor
* Fix build merge
* refactor
* refactor
* fix
* refactor
* refactor
* age tooltip
* prettier fix
* fix bug (#447)
* Add eslint now (#449)
* repo install chart now works as expected
* release modal and eslint working good now
* we should fetch when return to the initial value
* Tailwind theme reorganized (#446)
* install release code is like reading a story !
* namespace is not needed for chart values
* install repo chart is now like reading a story :)
* Fix/filternamesapce (#451)
* not needed dep
* prettier fix
* namespace fix
* add debounce (#452)
* namespace filter fix
* now namespace filter behaves like in the old app
* more linter rules and configurations
* intial value should be empty
* no need to keep filters on cluster change
* we don't want to keep tab state between pages
* button should be disabled when loading
* prettier fix
* initial value we're not presented
* navigation fix
* namespace should always be empty
* supporting pre selected namespaces
* lint adjustments
* Refactor stories fodler (#450)
* refactor
* refactor
* if no user values, use the release values
* Adding layer to base style (#456)
* Extract duplicate type to types file (#453)
* Refactor callApi into direct usage of apiService (#454)
* Remove scanners from backend
* Give some room for multiple HealthStatus (#458)
* refactor: add dynamic api docs (#460)
* remove scanners from openapi
* was loading forever
* fix
* Extract defined values from the Modals (#461)
* refactor (#462)
* fix chart with no repo diff flow
* naming fix
* crypto UUID not available through https
* revert
* Update analytics.js with UUID fallback
* Cosmetics
* repo fetch fix
* not need to depened on versions
* forgot to push
* revert
* was causing infinite loop
* COsmetics
---------
Co-authored-by: Nir Parisian <nir.parisian@gmail.com>
Co-authored-by: dav-sap <davidsaper@gmail.com>
Co-authored-by: chad11111 <chad1111@tutanota.com>
Co-authored-by: IdanSchiller <58664272+IdanSchiller@users.noreply.github.com>
Co-authored-by: dav-sap <16819417+dav-sap@users.noreply.github.com>
Co-authored-by: rotembm12 <46103618+rotembm12@users.noreply.github.com>
Co-authored-by: naorzr <naorzruk@gmail.com>
Co-authored-by: Gary Gensler <127234894+chad11111@users.noreply.github.com>
Co-authored-by: Tamir Abutbul <1tamir198@gmail.com>
Co-authored-by: Nir Parisian <nir2002@users.noreply.github.com>
* Handled resource kind PodDisruptionBudget and CRD for health status.
* Handled resource kind PodDisruptionBudget and CRD for health status.
---------
Co-authored-by: vkumar3 <vkumar@aarnanetworks.com>
* Refactor: Improve functionality and efficiency of installation script
* Refactor: Improve functionality and efficiency of installation script
* fixed the spacing error and also added the helm debug logic
* Build and release ARM docker images
* Build and release ARM docker images
* Build and release ARM docker images
* Build and release ARM docker images
* Added Link to the v1.3.0 badge
Added link of Release v1.3.0 to the badge of v1.3.0 and it now redirects to the v1.3.0
* Added link to the release badge
Added link to the release badge which will now redirect to the latest release
* Display aggregate resource health status
* Reuse old API request, show icons
* Take progress indication from deployment conditions
* Improve status
* Cleanup
* Fixups
* Squares approach
* Include devel Flag for Toggling Dev Chart Versions
The flag `--devel` for enabling/disabling dev versions
of charts in following endpoints:
1. /api/helm/repositories/kafka-operator
2. /api/helm/repositories/versions
3. /api/helm/repositories/latestver
Signed-off-by: Bhargav Ravuri <bhargav.ravuri@infracloud.io>
* Run Tests on Devel Flag Related Changes
Signed-off-by: Bhargav Ravuri <bhargav.ravuri@infracloud.io>
---------
Signed-off-by: Bhargav Ravuri <bhargav.ravuri@infracloud.io>
* Object model with self-sufficient binary (#131)
* Code cosmetics
* Experimenting with object model and direct HELM usage
* Experiment with object model
* replacing the kubectl
* Progressing
* Save the progress
* Able to start with migration in mind
* Migrated two pieces
* List releases via Helm
* Forgotten field
* Cristallized the problem of ctx switcher
* Reworked to multi-context
* Rollback is also new style
* More migration
* Refactoring
* Describe via code
* Bye-bye kubectl binary
* Eliminate more old code
* Refactor a bit
* Merges
* No binaries in dockerfile
* Commit
* Progress with getting the data
* Learned the thing about get
* One field less
* Sstart with repos
* Repo add
* repo remove
* Repos! Icons!
* Simplified access to data
* Ver listing works
* Ver check works
* Caching and values
* fixup
* Done with repos
* Working on install
* Install work-ish
* Fix UI failing on install
* Upgrade flow works
* Fix image building
* Remove outdated test file
* Move files around
* REfactorings
* Cosmetics
* Test for cache control (#151)
* Files import formatted
* Added go-test tools
* Added test for no-cache header
* added changes
* test for cache behaviour of app
* test for static route (#153)
* Tests: route configuration & context setter (#154)
* Test for route configuration
* Test for context setter middleware
* implemented changes
* Restore coverage profile
Fixes#156
* Cosmetics
* Test for `NewRouter` function (#157)
* Test for `configureScanners` (#158)
* Test for `configureKubectls` (#163)
* Test for repository loading (#169)
- Created `repos_test.go`
- Test: `Load()` of Repositories
* Build all PRs
* Fixes failing test (#171)
* Fixes failing test
- Fixes failing test of repo loading
* handles error for
* Did some changes
* Test for listing of repos (#173)
- and did some code formatting
Signed-off-by: OmAxiani0 <aximaniom@gmail.com>
Signed-off-by: OmAxiani0 <aximaniom@gmail.com>
* Test for adding repo (#175)
- Modified the `repositories.yml` file
Signed-off-by: OmAxiani0 <aximaniom@gmail.com>
Signed-off-by: OmAxiani0 <aximaniom@gmail.com>
* Test for deleting the repository (#176)
* Test for deleting the repository
- Also added cleanup function for `TestAdd`
* Fixes failing test
* Add auto labeler for PR's (#174)
* Add auto labeler for PR's
* Add all file under .github/workflow to 'ci' label
Co-authored-by: Harshit Mehta <harshitm@nvidia.com>
* Test for getting repository (#177)
* Add github workflow for auto PR labeling (#181)
Co-authored-by: Harshit Mehta <harshitm@nvidia.com>
* Stub compilation
* Fixes around installing
* More complex test
* Using object model to execute helm test (#191)
* Expand test
* More test
* Coverage
* Add mutex for operations
* Rectore cluster detection code
* Change receiver to pointer
* Support multiple namespaces
* Cosmetics
* Update repos periodically
* fix tests
* Fix error display
* Allow reconfiguring chart without repo
* mute linter
* Cosmetics
* Failing approach to parse manifests
Relates to #30
* Report the error properly
* ✅ Add test for dashboard/objects/data.go NewDataLayer (#199)
* Fix problem of wrong namespace
* Added unit tests for releases (#204)
* Rework API routes (#197)
* Bootstrap OpenAPI doc
* Renaming some routes
* Listing namespaces
* k8s part of things
* Repositories section
* Document scanners API
* One more API call
* Progress
* Reworked install flow
* History endpoint
* Textual info section
* Resources endpoint
* Rollback endpoint
* Rollback endpoint
* Unit tests
* Cleanup
* Forgotten tags
* Fix tests
* TODOs
* Rework manifest scanning
* add hasTests flag
* Adding more information on UI for helm test API response (#195)
* Hide test button when no tests
Fixes#115
Improves #195
---------
Signed-off-by: OmAxiani0 <aximaniom@gmail.com>
Co-authored-by: Om Aximani <75031769+OmAximani0@users.noreply.github.com>
Co-authored-by: Harshit Mehta <hdm23061993@gmail.com>
Co-authored-by: Harshit Mehta <harshitm@nvidia.com>
Co-authored-by: Todd Turner <todd@toddtee.sh>
Co-authored-by: arvindsundararajan98 <109727359+arvindsundararajan98@users.noreply.github.com>
This commit allows to pass arguments to the helm chart.
This is useful if you want to specify arguments for the
helm-dashboard binary whilst deploying via helm.
A superfluous rule is added to the ClusterRole upon creation,
when the dashboard.allowWriteActions value is set to true.
This commit will ensure that only a single rule is created within
the ClusterRole, regardless of whether the dashboard.allowWriteActions
value is enabled or not.
The verbs within this rule will update accordingly.
* Add button to execute tests
* Create API to execute tests
* Add modal for Test response
* Make API call to execute tests and show response in modal
* Clean up
* Update docs - feature execute tests for a release
* Add arg '--logs' to 'helm test' cmd
* Wait for API to complete before sending back response to frontend
* Add loading spinner until reponse for 'helm test' is returned from backend by API
* Clean-up
Co-authored-by: Harshit Mehta <harshitm@nvidia.com>
* Use github api to fetch latest release version
* Use grep instead of jq for querying json response
Co-authored-by: Harshit Mehta <harshitm@nvidia.com>
* Experiment with local cache
* Commit
* Cache all we can, invalidate later
* Commit
* separate cache class
* More cached
* Proper invalidate
* Complete the repos
* Fix the build
* Fix build
* Status reporting
* respect defualt namespace from kubeconfig
* respect defualt namespace from kubeconfig
* Replace exists with available - avoid confusion in status
* use data attribute
* remove commented line
* fix
* New API to fetch chart.yaml for an installec chart
* Show icon and description for installed chart list
Co-authored-by: Harshit Mehta <harshitm@nvidia.com>
* List supported resources for scanners
* Don't warn on scanner discovery commands
* Use scanner-to-resource map
* Save changes
* Scan result tabs
* Own table render for Checkov
* Scannable manifest flag for scanners
commit_msg:"feat(helm-dashboard): update chart"#important!! don't change this commit message unless you change the condition in pipeline.yml on helm-charts repo
commit_msg:"feat(OSS helm-dashboard): ${{ github.event.head_commit.message }}"#important!! don't change this commit message unless you change the condition in pipeline.yml on helm-charts repo
We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's:
- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
## We Develop with GitHub
We use GitHub to host code, to track issues and feature requests, as well as accept pull requests.
## First-time contributors
We've tagged some issues to make it easy to get started :smile:
[Good first issues](https://github.com/komodorio/helm-dashboard/labels/good%20first%20issue)
Add a comment on the issue and wait for the issue to be assigned before you start working on it. This helps to avoid multiple people working on similar issues.
## All Code Changes Happen Through Pull Requests
Pull requests are the best way to propose changes to the codebase. We actively welcome your pull requests:
1. Fork the repo and create your branch from `main`.
2. If you've added code that should be tested, add tests.
3. Ensure the test suite passes.
4. Make sure your code lints.
5. Issue that pull request!
## Any contributions you make will be under the Apache License 2.0
In short, when you submit code changes, your submissions are understood to be under the same [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) that covers the project.
## Report bugs using GitHub's [issues](https://github.com/komodorio/helm-dashboard/issues)
We use GitHub issues to track public bugs. Report a bug by [opening a new issue](https://github.com/komodorio/helm-dashboard/issues/new) and labeling it with the `bug` label. It's that easy!
**Great Bug Reports** tend to have:
- A quick summary and/or background
- Steps to reproduce
- Be specific!
- Give sample code if you can.
- What you expected would happen
- What actually happens
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
## License
By contributing, you agree that your contributions will be licensed under its Apache License 2.0.
## Questions?
Contact us on [Slack](https://komodorkommunity.slack.com).
If you want to switch to a different cluster, simply click on the corresponding cluster as shown in the
figure. You
can [read here](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) to
learn on how to configure access to multiple clusters.
### Reset Cache
The "Reset Cache" feature in Helm Dashboard clears the cached data and fetches the latest information from the backend or data source. It ensures that the dashboard displays up-to-date data and reflects any recent changes or updates.

### Repository
Essentially, a repository is a location where charts are gathered and can be shared. If you want to learn more about repositories, [click here](https://helm.sh/docs/topics/chart_repository/). You can find the repository in the home section, as depicted in the figure.

You can add the repository by clicking on 'Add Repository', as shown in the figure.

## Installed Releases List
A release is an installation of your Helm chart deployed in your Kubernetes Cluster. That means every time that you
install or upgrade a Helm chart, it creates a new release revision that coexists with other releases. You
can filter releases based on namespaces or search for release names

The squares represent k8s resources installed by the release. Hover over each square to view a tooltip with details.
Yellow indicates "pending," green signifies a healthy state, and red indicates an unhealthy state.

It indicates the version of chart that corresponds to this release.

A revision is linked to a release to track the number of updates/changes that release encounters.

Namespaces are a way to organize clusters into virtual sub-clusters — they can be helpful when different teams or
projects share a Kubernetes cluster. Any number of namespaces are supported within a cluster, each logically separated
from others but with the ability to communicate with each other.

Updated" refers to the amount of time that has passed since the last revision of the release. Whenever you install or
upgrade the release, a new revision is created. You can think of it as the "age" of the latest revision.
It executes the test scripts or commands within the deployed application's environment and displays the results

Running test hooks results

The Helm Dashboard provides basic information about your Helm releases, including revision number, deployment date, release message, cluster details, and deployment status.

### Resource Tab
In the Resources tab of the Helm Dashboard, you can view the kind (type), name, status, and any associated messages for your Kubernetes resources.

### Manifest Tab
Text: The Manifests tab displays the textual representation of the Kubernetes manifests associated with your Helm release. It provides the YAML or JSON configuration files that define the desired state of the resources deployed in your cluster.

Diff with Previous: The "Diff with Previous" feature allows you to compare the current version of the manifests with the previous version. It highlights the differences between the two versions, making it easier to identify the changes made in the deployment.
Diff with Specific: The "Diff with Specific" option enables you to compare the current version of the manifests with a specific past version. It allows you to select a particular revision and view the differences between that revision and the current one.
Text: The Values tab displays the textual representation of the values file associated with your Helm chart. It shows the YAML or JSON file that contains the configuration values used during the deployment of the chart.

Diff: The "Diff" feature allows you to compare the current values with the previous values used in a previous deployment. It highlights any differences between the two versions, making it easier to identify changes made to the configuration.
Text: The Notes tab displays any accompanying notes or documentation related to the Helm chart.

Diff with previous: The "Diff" feature is not typically available in the Notes tab. This tab is primarily meant for viewing the static text-based notes associated with the chart and doesn't involve comparisons or tracking changes like in the Manifests or Values tabs.
Diff with Specific Version: Similar to the previous point, the ability to view a diff with a specific version of the notes is not a standard feature in the Notes section of the Helm Dashboard. The Notes section usually presents the information for the specific version of the Helm chart that is currently deployed.
The _Helm Dashboard_ plugin offers a UI-driven way to view the installed Helm charts, see their revision history and
corresponding k8s resources. Also, you can perform simple actions like roll back to a revision or upgrade to newer
version.
## Description
This project is part of [Komodor's](https://komodor.com/?utm_campaign=Helm-Dash&utm_source=helm-dash-gh) vision of
helping Kubernetes users to navigate and troubleshoot their clusters.
_Helm Dashboard_ is an **open-source project** which offers a UI-driven way to view the installed Helm charts, see their revision history and
corresponding k8s resources. It also allows users to perform simple actions such as rolling back to a
revision or upgrading to a newer version.
This project is part of [Komodor's](https://komodor.com/?utm_campaign=Helm-Dash&utm_source=helm-dash-gh) vision to
help Kubernetes users to navigate and troubleshoot their clusters. It is important to note that Helm Dashboard is **NOT** an official project by the [helm team](https://helm.sh/).
Some of the key capabilities of the tool:
Key capabilities of the tool:
- See all installed charts and their revision history
- See manifest diff of the past revisions
@@ -21,10 +28,22 @@ Some of the key capabilities of the tool:
- Easy rollback or upgrade version with a clear and easy manifest diff
- Integration with popular problem scanners
- Easy switch between multiple clusters
- Can be used locally, or installed into Kubernetes cluster
- Does not require Helm or Kubectl installed
## Installing
All the features of the tool can be discovered via our [features overview page](FEATURES.md).
To install it, simply run Helm command:
## Installation
### Standalone Binary
Since version 1.0, the recommended install method is to just use standalone binary. It does not require Helm or kubectl to be installed.
Download the appropriate [release package](https://github.com/komodorio/helm-dashboard/releases) for your platform, unpack it and just run `dashboard` binary from it. See below section for some more CLI parameters to use.
### Using Helm plugin manager
To install dashboard as Helm plugin, simply run Helm command:
> In case standard Helm plugin way did not work for you, you can just download the appropriate [release package](https://github.com/komodorio/helm-dashboard/releases) for your platform, unpack it and just run `dashboard` binary from it.
## Running
To use the plugin, your machine needs to have working `helm` and also `kubectl` commands. Helm version 3.4.0+ is required.
After installing, start the UI by running:
@@ -54,55 +69,75 @@ After installing, start the UI by running:
helm dashboard
```
The command above will launch the local Web server and will open the UI in new browser tab. The command will hang
The command above will launch the local Web server and will open the UI in a new browser tab. The command will hang
waiting for you to terminate it in command-line or web UI.
You can see the list of available command-line flags by running `helm dashboard --help`.
By default, the web server is only available locally. You can change that by specifying `HD_BIND` environment variable
to the desired value. For example, `0.0.0.0` would bind to all IPv4 addresses or `[::0]` would be all IPv6 addresses.
This can also be specified using flag `--bind <host>`, for example `--bind=0.0.0.0` or `--bind 0.0.0.0`.
> Precedence order: flag `--bind=<host>` > env `HD_BIND=<host>` > default value `localhost`
If your port 8080 is busy, you can specify a different port to use via `--port <number>` command-line flag.
If you need to limit the operations to a specific namespace, please use `--namespace=...` in your command-line.
If you need to limit the operations to a specific namespace, please use `--namespace=...` in your command-line. You can specify multiple namespaces, separated by commas.
If you don't want browser tab to automatically open, add `--no-browser` flag in your commandline.
If you don't want the browser tab to automatically open, add `--no-browser` flag in your command-line.
If you want to increase the logging verbosity and see all the debug info, use the `--verbose` flag.
> Disclaimer: For the sake of improving the project quality, there is user analytics collected by the tool. You can disable this collecting with `--no-analytics` option. The collection is done via DataDog RUM and Heap Analytics. Only the anonymous data is collected, no sensitive information is used.
## Scanner Integrations
### Deploying Helm Dashboard on Kubernetes
Upon startup, Helm Dashboard detects the presence of [Trivy](https://github.com/aquasecurity/trivy)
and [Checkov](https://github.com/bridgecrewio/checkov) scanners. When available, these scanners are offered on k8s
resources page, as well as install/upgrade preview page.
You can request scanning of the specific k8s resource in your cluster:

If you want to validate the k8s manifest prior to installing/reconfiguring a Helm chart, look for "Scan for Problems"
button at the bottom of the dialog:

The official helm chart is [available here](https://github.com/komodorio/helm-charts/blob/master/charts/helm-dashboard)
## Support Channels
We have two main channels for supporting the Helm Dashboard
users: [Slack community](https://join.slack.com/t/komodorkommunity/shared_invite/zt-1dm3cnkue-ov1Yh~_95teA35QNx5yuMg) for general conversations
users: [Slack community](https://komodorkommunity.slack.com) for general conversations
and [GitHub issues](https://github.com/komodorio/helm-dashboard/issues) for real bugs.
## Contributing
Kindly read our [Contributing Guide](CONTRIBUTING.md) to learn and understand about our development process, how to propose bug fixes and improvements, and how to build and test your changes to Helm Dashboard. <br>
This chart bootstraps a Helm Dashboard deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
While installed inside cluster, Helm Dashboard will run some additional background actions, for example, will automatically update Helm repositories. To enable that behavior locally, set `HD_CLUSTER_MODE` env variable.
## Prerequisites
- Kubernetes 1.16+
## Installing the Chart
To install the chart with the release name `helm-dashboard`:
```bash
helm install helm-dashboard .
```
The command deploys Helm Dashboard on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation.
> **Tip**: List all releases using `helm list`
## Uninstalling the Chart
To uninstall/delete the `helm-dashboard` deployment:
```bash
helm uninstall helm-dashboard
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Adding Authentication
The task of authentication and user control is out of scope for Helm Dashboard. Luckily, there are third-party solutions which are dedicated to provide that functionality.
For instance, you can place authentication proxy in front of Helm Dashboard, like this one: https://github.com/oauth2-proxy/oauth2-proxy
## Parameters
The following table lists the configurable parameters of the chart and their default values.
- "prettier-plugin-tailwindcss"# should be last https://github.com/tailwindlabs/prettier-plugin-tailwindcss?tab=readme-ov-file#compatibility-with-other-prettier-plugins
- TypeScript and ESLint will keep the project safe, please keep them clean.
- Tailwind for styling.
- React-Query for fetching data from the backend.
- Storybook is utilized to develop a component library.
Please follow through the file structure to understand how things are structured and should be used.
# Contribution guide
## Setting up your development environment
1. First you should fork this repository.
2. Clone your new repository using `git clone <https_or_ssh_url>`.
## Running helm dashboard
1. Make sure you cloned the project correctly. This is explained in this [stage](https://github.com/komodorio/helm-dashboard/blob/helm-dashboard-v2/dashboard/README.md#setting-up-your-development-environment).
2. run the backend server. This is also explained in the above link.
3. go to `frontend` in your local project.
4. in order to install dependencies and start the development server
-`npm i`
-`npm run dev`
5. with the default integration the dashboard should run on http://localhost:5173/
# Component library
We created a components library to have a consistent design system throughout the project. Please rely on these components.
Additional information and examples on how to use them are available when you run Storybook, which shows them in an interactive way and in different scenarios.
Once you run it, you'll be able to see pre-made scenarios, documentation, and play with the component properties.
To run Storybook, make sure that all the dependencies are installed and run:
```shell
npm run storybook
```
Refer to the [official documentation](https://storybook.js.org/docs/react/get-started/install) for more information.
"This is a very long error message that should demonstrate how the error modal handles text wrapping and displays lengthy error descriptions to the user. The error boundary should gracefully handle this scenario."
),
resetErrorBoundary:()=>{},
},
};
/**
* Non-Error object to test fallback behavior
*/
exportconstNonErrorObject: Story={
args:{
error:"String error message"asunknownasError,
resetErrorBoundary:()=>{},
},
};
/**
* Error with stack trace (useful for development)
*/
exportconstWithStackTrace: Story={
args:{
error:(()=>{
try{
thrownewError("Error with detailed stack trace");
}catch(e){
returneasError;
}
})(),
resetErrorBoundary:()=>{},
},
};
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.