Copy disabled (too large)
Download .txt
Showing preview only (13,229K chars total). Download the full file to get everything.
Repository: helm/helm-www
Branch: main
Commit: 7679207217e9
Files: 2098
Total size: 10.3 MB
Directory structure:
gitextract_c40cox6w/
├── .containerignore
├── .editorconfig
├── .github/
│ └── workflows/
│ ├── build.yml
│ ├── stale.yml
│ ├── typos.yml
│ └── update-community-docs.yml
├── .gitignore
├── .markdownlint.json
├── .netlify/
│ └── state.json
├── .nvmrc
├── .typos.toml
├── .vscode/
│ └── launch.json
├── AGENTS.md
├── ARCHITECTURAL_DECISIONS.md
├── CONTRIBUTING-ko.md
├── CONTRIBUTING.md
├── Containerfile
├── HELM2-TO-DOCUSAURUS.md
├── HELM3-TO-DOCUSAURUS.md
├── LICENSE
├── Makefile
├── OWNERS
├── README-ko.md
├── README.md
├── blog/
│ ├── 2018-06-01-cncf.md
│ ├── 2018-07-23-bring-helm-home.md
│ ├── 2018-07-24-helm-emeritus-rimus.md
│ ├── 2018-08-27-helm-switch-dco.md
│ ├── 2018-09-07-new-gov-and-elections.md
│ ├── 2018-09-25-chart-testing-intro.md
│ ├── 2018-10-04-helm-org-maintainers.md
│ ├── 2018-12-11-helm-hub.md
│ ├── 2019-01-14-chartmuseum-security-notice.md
│ ├── 2019-01-14-helm-security-notice.md
│ ├── 2019-04-18-helm-summit-eu-2019.md
│ ├── 2019-04-22-helm-3-preview-pt1.md
│ ├── 2019-04-25-helm-3-preview-pt2.md
│ ├── 2019-04-29-helm-3-preview-pt3.md
│ ├── 2019-05-02-helm-3-preview-pt4.md
│ ├── 2019-05-06-helm-3-preview-pt5.md
│ ├── 2019-05-09-helm-3-preview-pt6.md
│ ├── 2019-05-13-helm-3-preview-pt7.md
│ ├── 2019-06-10-get-helm-sh.md
│ ├── 2019-08-27-helm-v3-beta.md
│ ├── 2019-09-11-migrate-from-helm-v2-to-helm-v3.md
│ ├── 2019-10-22-helm-2150-released.md
│ ├── 2019-10-30-helm-symlink-security-notice.md
│ ├── 2019-11-04-helm-security-audit-results.md
│ ├── 2019-11-11-community-management.md
│ ├── 2019-11-13-helm-3-released.md
│ ├── 2019-11-15-helm-at-cloudnativecon.md
│ ├── 2020-04-02-covid-19-extending-helm-v2-bug-fixes.md
│ ├── 2020-04-30-celebrating-helms-cncf-graduation.md
│ ├── 2020-08-13-helm-v2-deprecation-timeline.md
│ ├── 2020-10-07-helm-hub-moving-artifact-hub.md
│ ├── 2020-10-19-helm-turns-five.md
│ ├── 2020-10-26-new-location-stable-incubator-charts.md
│ ├── 2020-10-30-charts-repo-deprecation.md
│ ├── 2020-11-11-helm-release-process.md
│ ├── 2020-11-13-helm-2-becomes-unsupported.md
│ ├── 2021-03-05-second-security-audit/
│ │ └── index.md
│ ├── 2021-06-24-welcome-martin-hickey.md
│ ├── 2022-01-11-welcome-karen-chu.md
│ ├── 2022-02-28-storing-charts-in-oci.md
│ ├── 2022-04-19-tools-to-manage-helm-declaratively.md
│ ├── 2022-10-14-helm-at-kubecon-na-22.md
│ ├── 2022-11-14-welcome-yxxhero.md
│ ├── 2023-03-31-helm-completes-fuzzing-security-audit.md
│ ├── 2023-05-15-helm-oci-mediatypes.md
│ ├── 2023-09-29-helm-3.13.md
│ ├── 2024-03-14-cve-2019-25210.md
│ ├── 2024-06-26-the-road-to-helm-4.md
│ ├── 2024-07-16-helm2to3-becomes-unsupported.md
│ ├── 2024-10-07-kubecon-na-24/
│ │ └── index.md
│ ├── 2024-11-08-experience-helm-release-kubecon-na-24.md
│ ├── 2025-08-19-debian-helm-repository-move.md
│ ├── 2025-09-09-path-to-helm-v4.md
│ ├── 2025-10-19-helm-turns-10/
│ │ └── index.md
│ ├── 2025-11-04-helm-at-kubecon-na-25.md
│ ├── 2025-11-17-helm-4-released/
│ │ └── index.md
│ ├── authors.yml
│ └── helm-at-kubecon-eu-25.md
├── code-of-conduct.md
├── community/
│ ├── MAINTAINERS.md
│ ├── README.md
│ ├── SECURITY.md
│ ├── art/
│ │ └── readme.md
│ ├── blog-topics.md
│ ├── code-of-conduct.md
│ ├── communication.md
│ ├── developers.md
│ ├── governance/
│ │ ├── README.md
│ │ ├── _category_.json
│ │ └── governance.md
│ ├── hips/
│ │ ├── README.md
│ │ ├── archives/
│ │ │ ├── README.md
│ │ │ ├── helm/
│ │ │ │ ├── distributed-search.md
│ │ │ │ └── helm-v3/
│ │ │ │ ├── 000-helm-v3.md
│ │ │ │ ├── 001-charts.md
│ │ │ │ ├── 002-events.md
│ │ │ │ ├── 003-state.md
│ │ │ │ ├── 004-hooks.md
│ │ │ │ ├── 005-plugins.md
│ │ │ │ ├── 006-repositories.md
│ │ │ │ ├── 007-security.md
│ │ │ │ ├── 008-controller.md
│ │ │ │ ├── 009-package_manager.md
│ │ │ │ ├── 010-removed.md
│ │ │ │ ├── 011-user_stories.md
│ │ │ │ ├── 012-chart-dev-stories.md
│ │ │ │ └── research/
│ │ │ │ └── package-manager-ux.md
│ │ │ └── monocular/
│ │ │ └── 1.0-improvements.md
│ │ ├── hip-0001.md
│ │ ├── hip-0002.md
│ │ ├── hip-0003.md
│ │ ├── hip-0004.md
│ │ ├── hip-0005.md
│ │ ├── hip-0006.md
│ │ ├── hip-0007.md
│ │ ├── hip-0008.md
│ │ ├── hip-0009.md
│ │ ├── hip-0010.md
│ │ ├── hip-0011.md
│ │ ├── hip-0012.md
│ │ ├── hip-0014.md
│ │ ├── hip-0015.md
│ │ ├── hip-0016.md
│ │ ├── hip-0017.md
│ │ ├── hip-0018.md
│ │ ├── hip-0019.md
│ │ ├── hip-0020.md
│ │ ├── hip-0021.md
│ │ ├── hip-0022.md
│ │ ├── hip-0023.md
│ │ ├── hip-0024.md
│ │ ├── hip-0025.md
│ │ └── hip-0026.md
│ ├── history.mdx
│ ├── incubator.md
│ ├── localization.md
│ ├── meeting-notes/
│ │ ├── 2017.md
│ │ ├── 2018.md
│ │ ├── 2019.md
│ │ ├── 2020.md
│ │ ├── 2021.md
│ │ └── index.mdx
│ ├── related.md
│ ├── release_checklist.md
│ ├── release_policy.md
│ ├── stable-repo-charts-new-locations.md
│ └── user-profiles.md
├── docs/
│ ├── _v4-in-progress.mdx
│ ├── changelog.md
│ ├── chart_best_practices/
│ │ ├── conventions.md
│ │ ├── custom_resource_definitions.md
│ │ ├── dependencies.mdx
│ │ ├── index.mdx
│ │ ├── labels.md
│ │ ├── pods.md
│ │ ├── rbac.md
│ │ ├── templates.md
│ │ └── values.md
│ ├── chart_template_guide/
│ │ ├── accessing_files.md
│ │ ├── builtin_objects.md
│ │ ├── control_structures.md
│ │ ├── data_types.md
│ │ ├── debugging.md
│ │ ├── function_list.mdx
│ │ ├── functions_and_pipelines.mdx
│ │ ├── getting_started.md
│ │ ├── helm_ignore_file.md
│ │ ├── index.mdx
│ │ ├── named_templates.md
│ │ ├── notes_files.md
│ │ ├── subcharts_and_globals.md
│ │ ├── values_files.mdx
│ │ ├── variables.md
│ │ ├── wrapping_up.md
│ │ └── yaml_techniques.md
│ ├── glossary/
│ │ └── index.mdx
│ ├── helm/
│ │ ├── _category_.json
│ │ ├── helm.md
│ │ ├── helm_completion.md
│ │ ├── helm_completion_bash.md
│ │ ├── helm_completion_fish.md
│ │ ├── helm_completion_powershell.md
│ │ ├── helm_completion_zsh.md
│ │ ├── helm_create.md
│ │ ├── helm_dependency.md
│ │ ├── helm_dependency_build.md
│ │ ├── helm_dependency_list.md
│ │ ├── helm_dependency_update.md
│ │ ├── helm_env.md
│ │ ├── helm_get.md
│ │ ├── helm_get_all.md
│ │ ├── helm_get_hooks.md
│ │ ├── helm_get_manifest.md
│ │ ├── helm_get_metadata.md
│ │ ├── helm_get_notes.md
│ │ ├── helm_get_values.md
│ │ ├── helm_history.md
│ │ ├── helm_install.md
│ │ ├── helm_lint.md
│ │ ├── helm_list.md
│ │ ├── helm_package.md
│ │ ├── helm_plugin.md
│ │ ├── helm_plugin_install.md
│ │ ├── helm_plugin_list.md
│ │ ├── helm_plugin_package.md
│ │ ├── helm_plugin_uninstall.md
│ │ ├── helm_plugin_update.md
│ │ ├── helm_plugin_verify.md
│ │ ├── helm_pull.md
│ │ ├── helm_push.md
│ │ ├── helm_registry.md
│ │ ├── helm_registry_login.md
│ │ ├── helm_registry_logout.md
│ │ ├── helm_repo.md
│ │ ├── helm_repo_add.md
│ │ ├── helm_repo_index.md
│ │ ├── helm_repo_list.md
│ │ ├── helm_repo_remove.md
│ │ ├── helm_repo_update.md
│ │ ├── helm_rollback.md
│ │ ├── helm_search.md
│ │ ├── helm_search_hub.md
│ │ ├── helm_search_repo.md
│ │ ├── helm_show.md
│ │ ├── helm_show_all.md
│ │ ├── helm_show_chart.md
│ │ ├── helm_show_crds.md
│ │ ├── helm_show_readme.md
│ │ ├── helm_show_values.md
│ │ ├── helm_status.md
│ │ ├── helm_template.md
│ │ ├── helm_test.md
│ │ ├── helm_uninstall.md
│ │ ├── helm_upgrade.md
│ │ ├── helm_verify.md
│ │ ├── helm_version.md
│ │ └── index.mdx
│ ├── howto/
│ │ ├── chart_releaser_action.md
│ │ ├── chart_repository_sync_example.md
│ │ ├── charts_tips_and_tricks.md
│ │ └── index.mdx
│ ├── index.mdx
│ ├── intro/
│ │ ├── CheatSheet.mdx
│ │ ├── index.mdx
│ │ ├── install.mdx
│ │ ├── quickstart.md
│ │ └── using_helm.mdx
│ ├── overview.md
│ ├── plugins/
│ │ ├── developer/
│ │ │ ├── index.mdx
│ │ │ ├── tutorial-cli-plugin.mdx
│ │ │ ├── tutorial-getter-plugin.mdx
│ │ │ └── tutorial-postrenderer-plugin.mdx
│ │ ├── index.mdx
│ │ ├── overview.md
│ │ └── user/
│ │ └── index.md
│ ├── sdk/
│ │ ├── examples.mdx
│ │ ├── gosdk.mdx
│ │ └── index.mdx
│ └── topics/
│ ├── advanced.mdx
│ ├── architecture.md
│ ├── chart_repository.md
│ ├── chart_tests.md
│ ├── charts.mdx
│ ├── charts_hooks.md
│ ├── index.mdx
│ ├── kubernetes_apis.md
│ ├── kubernetes_distros.md
│ ├── library_charts.md
│ ├── permissions_sql_storage_backend.md
│ ├── plugins.mdx
│ ├── provenance.mdx
│ ├── rbac.md
│ ├── registries.mdx
│ └── version_skew.mdx
├── docusaurus.config.js
├── i18n/
│ ├── de/
│ │ ├── code.json
│ │ ├── docusaurus-plugin-content-blog/
│ │ │ └── options.json
│ │ ├── docusaurus-plugin-content-docs/
│ │ │ ├── current.json
│ │ │ ├── version-2.json
│ │ │ ├── version-3/
│ │ │ │ ├── chart_best_practices/
│ │ │ │ │ ├── conventions.md
│ │ │ │ │ ├── custom_resource_definitions.md
│ │ │ │ │ ├── dependencies.md
│ │ │ │ │ ├── labels.md
│ │ │ │ │ ├── pods.md
│ │ │ │ │ ├── rbac.md
│ │ │ │ │ ├── templates.md
│ │ │ │ │ └── values.md
│ │ │ │ ├── chart_template_guide/
│ │ │ │ │ ├── accessing_files.md
│ │ │ │ │ ├── builtin_objects.md
│ │ │ │ │ ├── control_structures.md
│ │ │ │ │ ├── data_types.md
│ │ │ │ │ ├── debugging.md
│ │ │ │ │ ├── function_list.md
│ │ │ │ │ ├── functions_and_pipelines.md
│ │ │ │ │ ├── getting_started.md
│ │ │ │ │ ├── helm_ignore_file.md
│ │ │ │ │ ├── named_templates.md
│ │ │ │ │ ├── notes_files.md
│ │ │ │ │ ├── subcharts_and_globals.md
│ │ │ │ │ ├── values_files.md
│ │ │ │ │ ├── variables.md
│ │ │ │ │ ├── wrapping_up.md
│ │ │ │ │ └── yaml_techniques.md
│ │ │ │ ├── faq/
│ │ │ │ │ ├── changes_since_helm2.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── installing.md
│ │ │ │ │ ├── troubleshooting.md
│ │ │ │ │ └── uninstalling.md
│ │ │ │ ├── glossary/
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── helm/
│ │ │ │ │ ├── helm.md
│ │ │ │ │ ├── helm_completion.md
│ │ │ │ │ ├── helm_completion_bash.md
│ │ │ │ │ ├── helm_completion_fish.md
│ │ │ │ │ ├── helm_completion_powershell.md
│ │ │ │ │ ├── helm_completion_zsh.md
│ │ │ │ │ ├── helm_create.md
│ │ │ │ │ ├── helm_dependency.md
│ │ │ │ │ ├── helm_dependency_build.md
│ │ │ │ │ ├── helm_dependency_list.md
│ │ │ │ │ ├── helm_dependency_update.md
│ │ │ │ │ ├── helm_env.md
│ │ │ │ │ ├── helm_get.md
│ │ │ │ │ ├── helm_get_all.md
│ │ │ │ │ ├── helm_get_hooks.md
│ │ │ │ │ ├── helm_get_manifest.md
│ │ │ │ │ ├── helm_get_metadata.md
│ │ │ │ │ ├── helm_get_notes.md
│ │ │ │ │ ├── helm_get_values.md
│ │ │ │ │ ├── helm_history.md
│ │ │ │ │ ├── helm_install.md
│ │ │ │ │ ├── helm_lint.md
│ │ │ │ │ ├── helm_list.md
│ │ │ │ │ ├── helm_package.md
│ │ │ │ │ ├── helm_plugin.md
│ │ │ │ │ ├── helm_plugin_install.md
│ │ │ │ │ ├── helm_plugin_list.md
│ │ │ │ │ ├── helm_plugin_uninstall.md
│ │ │ │ │ ├── helm_plugin_update.md
│ │ │ │ │ ├── helm_pull.md
│ │ │ │ │ ├── helm_push.md
│ │ │ │ │ ├── helm_registry.md
│ │ │ │ │ ├── helm_registry_login.md
│ │ │ │ │ ├── helm_registry_logout.md
│ │ │ │ │ ├── helm_repo.md
│ │ │ │ │ ├── helm_repo_add.md
│ │ │ │ │ ├── helm_repo_index.md
│ │ │ │ │ ├── helm_repo_list.md
│ │ │ │ │ ├── helm_repo_remove.md
│ │ │ │ │ ├── helm_repo_update.md
│ │ │ │ │ ├── helm_rollback.md
│ │ │ │ │ ├── helm_search.md
│ │ │ │ │ ├── helm_search_hub.md
│ │ │ │ │ ├── helm_search_repo.md
│ │ │ │ │ ├── helm_show.md
│ │ │ │ │ ├── helm_show_all.md
│ │ │ │ │ ├── helm_show_chart.md
│ │ │ │ │ ├── helm_show_crds.md
│ │ │ │ │ ├── helm_show_readme.md
│ │ │ │ │ ├── helm_show_values.md
│ │ │ │ │ ├── helm_status.md
│ │ │ │ │ ├── helm_template.md
│ │ │ │ │ ├── helm_test.md
│ │ │ │ │ ├── helm_uninstall.md
│ │ │ │ │ ├── helm_upgrade.md
│ │ │ │ │ ├── helm_verify.md
│ │ │ │ │ └── helm_version.md
│ │ │ │ ├── howto/
│ │ │ │ │ ├── chart_releaser_action.md
│ │ │ │ │ ├── chart_repository_sync_example.md
│ │ │ │ │ ├── charts_tips_and_tricks.md
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── index.mdx
│ │ │ │ ├── intro/
│ │ │ │ │ ├── CheatSheet.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── install.md
│ │ │ │ │ ├── quickstart.md
│ │ │ │ │ └── using_helm.md
│ │ │ │ ├── sdk/
│ │ │ │ │ └── gosdk.md
│ │ │ │ └── topics/
│ │ │ │ ├── advanced.md
│ │ │ │ ├── architecture.md
│ │ │ │ ├── chart_repository.md
│ │ │ │ ├── chart_tests.md
│ │ │ │ ├── charts.md
│ │ │ │ ├── charts_hooks.md
│ │ │ │ ├── kubernetes_apis.md
│ │ │ │ ├── kubernetes_distros.md
│ │ │ │ ├── library_charts.md
│ │ │ │ ├── permissions_sql_storage_backend.md
│ │ │ │ ├── plugins.md
│ │ │ │ ├── provenance.md
│ │ │ │ ├── rbac.md
│ │ │ │ ├── registries.md
│ │ │ │ ├── v2_v3_migration.md
│ │ │ │ └── version_skew.md
│ │ │ └── version-3.json
│ │ ├── docusaurus-plugin-content-docs-community/
│ │ │ └── current/
│ │ │ └── release_policy.md
│ │ └── docusaurus-theme-classic/
│ │ ├── footer.json
│ │ └── navbar.json
│ ├── el/
│ │ ├── code.json
│ │ ├── docusaurus-plugin-content-blog/
│ │ │ └── options.json
│ │ ├── docusaurus-plugin-content-docs/
│ │ │ ├── current.json
│ │ │ ├── version-2.json
│ │ │ ├── version-3/
│ │ │ │ ├── chart_best_practices/
│ │ │ │ │ ├── conventions.md
│ │ │ │ │ ├── custom_resource_definitions.md
│ │ │ │ │ ├── dependencies.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── labels.md
│ │ │ │ │ ├── pods.md
│ │ │ │ │ ├── rbac.md
│ │ │ │ │ ├── templates.md
│ │ │ │ │ └── values.md
│ │ │ │ ├── chart_template_guide/
│ │ │ │ │ ├── accessing_files.md
│ │ │ │ │ ├── builtin_objects.md
│ │ │ │ │ ├── control_structures.md
│ │ │ │ │ ├── data_types.md
│ │ │ │ │ ├── debugging.md
│ │ │ │ │ ├── functions_and_pipelines.md
│ │ │ │ │ ├── getting_started.md
│ │ │ │ │ ├── helm_ignore_file.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── named_templates.md
│ │ │ │ │ ├── notes_files.md
│ │ │ │ │ ├── subcharts_and_globals.md
│ │ │ │ │ ├── values_files.md
│ │ │ │ │ ├── variables.md
│ │ │ │ │ ├── wrapping_up.md
│ │ │ │ │ └── yaml_techniques.md
│ │ │ │ ├── faq/
│ │ │ │ │ ├── changes_since_helm2.md
│ │ │ │ │ ├── installing.md
│ │ │ │ │ ├── troubleshooting.md
│ │ │ │ │ └── uninstalling.md
│ │ │ │ ├── helm/
│ │ │ │ │ ├── helm.md
│ │ │ │ │ ├── helm_completion.md
│ │ │ │ │ ├── helm_completion_bash.md
│ │ │ │ │ ├── helm_completion_fish.md
│ │ │ │ │ ├── helm_completion_powershell.md
│ │ │ │ │ ├── helm_completion_zsh.md
│ │ │ │ │ ├── helm_create.md
│ │ │ │ │ ├── helm_dependency.md
│ │ │ │ │ ├── helm_dependency_build.md
│ │ │ │ │ ├── helm_dependency_list.md
│ │ │ │ │ ├── helm_dependency_update.md
│ │ │ │ │ ├── helm_env.md
│ │ │ │ │ ├── helm_get.md
│ │ │ │ │ ├── helm_get_all.md
│ │ │ │ │ ├── helm_get_hooks.md
│ │ │ │ │ ├── helm_get_manifest.md
│ │ │ │ │ ├── helm_get_metadata.md
│ │ │ │ │ ├── helm_get_notes.md
│ │ │ │ │ ├── helm_get_values.md
│ │ │ │ │ ├── helm_history.md
│ │ │ │ │ ├── helm_install.md
│ │ │ │ │ ├── helm_lint.md
│ │ │ │ │ ├── helm_list.md
│ │ │ │ │ ├── helm_package.md
│ │ │ │ │ ├── helm_plugin.md
│ │ │ │ │ ├── helm_plugin_install.md
│ │ │ │ │ ├── helm_plugin_list.md
│ │ │ │ │ ├── helm_plugin_uninstall.md
│ │ │ │ │ ├── helm_plugin_update.md
│ │ │ │ │ ├── helm_pull.md
│ │ │ │ │ ├── helm_push.md
│ │ │ │ │ ├── helm_registry.md
│ │ │ │ │ ├── helm_registry_login.md
│ │ │ │ │ ├── helm_registry_logout.md
│ │ │ │ │ ├── helm_repo.md
│ │ │ │ │ ├── helm_repo_add.md
│ │ │ │ │ ├── helm_repo_index.md
│ │ │ │ │ ├── helm_repo_list.md
│ │ │ │ │ ├── helm_repo_remove.md
│ │ │ │ │ ├── helm_repo_update.md
│ │ │ │ │ ├── helm_rollback.md
│ │ │ │ │ ├── helm_search.md
│ │ │ │ │ ├── helm_search_hub.md
│ │ │ │ │ ├── helm_search_repo.md
│ │ │ │ │ ├── helm_show.md
│ │ │ │ │ ├── helm_show_all.md
│ │ │ │ │ ├── helm_show_chart.md
│ │ │ │ │ ├── helm_show_crds.md
│ │ │ │ │ ├── helm_show_readme.md
│ │ │ │ │ ├── helm_show_values.md
│ │ │ │ │ ├── helm_status.md
│ │ │ │ │ ├── helm_template.md
│ │ │ │ │ ├── helm_test.md
│ │ │ │ │ ├── helm_uninstall.md
│ │ │ │ │ ├── helm_upgrade.md
│ │ │ │ │ ├── helm_verify.md
│ │ │ │ │ └── helm_version.md
│ │ │ │ ├── howto/
│ │ │ │ │ ├── chart_releaser_action.md
│ │ │ │ │ ├── chart_repository_sync_example.md
│ │ │ │ │ └── charts_tips_and_tricks.md
│ │ │ │ ├── index.mdx
│ │ │ │ ├── intro/
│ │ │ │ │ ├── CheatSheet.md
│ │ │ │ │ ├── install.md
│ │ │ │ │ ├── quickstart.md
│ │ │ │ │ └── using_helm.md
│ │ │ │ ├── sdk/
│ │ │ │ │ ├── examples.mdx
│ │ │ │ │ └── gosdk.md
│ │ │ │ └── topics/
│ │ │ │ ├── advanced.md
│ │ │ │ ├── architecture.md
│ │ │ │ ├── chart_repository.md
│ │ │ │ ├── chart_tests.md
│ │ │ │ ├── charts.md
│ │ │ │ ├── charts_hooks.md
│ │ │ │ ├── kubernetes_apis.md
│ │ │ │ ├── kubernetes_distros.md
│ │ │ │ ├── library_charts.md
│ │ │ │ ├── permissions_sql_storage_backend.md
│ │ │ │ ├── plugins.md
│ │ │ │ ├── provenance.md
│ │ │ │ ├── rbac.md
│ │ │ │ ├── registries.md
│ │ │ │ ├── v2_v3_migration.md
│ │ │ │ └── version_skew.md
│ │ │ └── version-3.json
│ │ ├── docusaurus-plugin-content-docs-community/
│ │ │ └── current/
│ │ │ └── release_policy.md
│ │ └── docusaurus-theme-classic/
│ │ ├── footer.json
│ │ └── navbar.json
│ ├── es/
│ │ ├── code.json
│ │ ├── docusaurus-plugin-content-blog/
│ │ │ └── options.json
│ │ ├── docusaurus-plugin-content-docs/
│ │ │ ├── current.json
│ │ │ ├── version-2.json
│ │ │ ├── version-3/
│ │ │ │ ├── chart_best_practices/
│ │ │ │ │ ├── conventions.md
│ │ │ │ │ ├── custom_resource_definitions.md
│ │ │ │ │ ├── dependencies.md
│ │ │ │ │ ├── labels.md
│ │ │ │ │ ├── pods.md
│ │ │ │ │ ├── rbac.md
│ │ │ │ │ ├── templates.md
│ │ │ │ │ └── values.md
│ │ │ │ ├── chart_template_guide/
│ │ │ │ │ ├── accessing_files.md
│ │ │ │ │ ├── builtin_objects.md
│ │ │ │ │ ├── control_structures.md
│ │ │ │ │ ├── data_types.md
│ │ │ │ │ ├── debugging.md
│ │ │ │ │ ├── function_list.md
│ │ │ │ │ ├── functions_and_pipelines.md
│ │ │ │ │ ├── getting_started.md
│ │ │ │ │ ├── helm_ignore_file.md
│ │ │ │ │ ├── named_templates.md
│ │ │ │ │ ├── notes_files.md
│ │ │ │ │ ├── subcharts_and_globals.md
│ │ │ │ │ ├── values_files.md
│ │ │ │ │ ├── variables.md
│ │ │ │ │ ├── wrapping_up.md
│ │ │ │ │ └── yaml_techniques.md
│ │ │ │ ├── faq/
│ │ │ │ │ ├── changes_since_helm2.md
│ │ │ │ │ ├── installing.md
│ │ │ │ │ ├── troubleshooting.md
│ │ │ │ │ └── uninstalling.md
│ │ │ │ ├── helm/
│ │ │ │ │ ├── helm.md
│ │ │ │ │ ├── helm_completion.md
│ │ │ │ │ ├── helm_completion_bash.md
│ │ │ │ │ ├── helm_completion_fish.md
│ │ │ │ │ ├── helm_completion_powershell.md
│ │ │ │ │ ├── helm_completion_zsh.md
│ │ │ │ │ ├── helm_create.md
│ │ │ │ │ ├── helm_dependency.md
│ │ │ │ │ ├── helm_dependency_build.md
│ │ │ │ │ ├── helm_dependency_list.md
│ │ │ │ │ ├── helm_dependency_update.md
│ │ │ │ │ ├── helm_env.md
│ │ │ │ │ ├── helm_get.md
│ │ │ │ │ ├── helm_get_all.md
│ │ │ │ │ ├── helm_get_hooks.md
│ │ │ │ │ ├── helm_get_manifest.md
│ │ │ │ │ ├── helm_get_metadata.md
│ │ │ │ │ ├── helm_get_notes.md
│ │ │ │ │ ├── helm_get_values.md
│ │ │ │ │ ├── helm_history.md
│ │ │ │ │ ├── helm_install.md
│ │ │ │ │ ├── helm_lint.md
│ │ │ │ │ ├── helm_list.md
│ │ │ │ │ ├── helm_package.md
│ │ │ │ │ ├── helm_plugin.md
│ │ │ │ │ ├── helm_plugin_install.md
│ │ │ │ │ ├── helm_plugin_list.md
│ │ │ │ │ ├── helm_plugin_uninstall.md
│ │ │ │ │ ├── helm_plugin_update.md
│ │ │ │ │ ├── helm_pull.md
│ │ │ │ │ ├── helm_push.md
│ │ │ │ │ ├── helm_registry.md
│ │ │ │ │ ├── helm_registry_login.md
│ │ │ │ │ ├── helm_registry_logout.md
│ │ │ │ │ ├── helm_repo.md
│ │ │ │ │ ├── helm_repo_add.md
│ │ │ │ │ ├── helm_repo_index.md
│ │ │ │ │ ├── helm_repo_list.md
│ │ │ │ │ ├── helm_repo_remove.md
│ │ │ │ │ ├── helm_repo_update.md
│ │ │ │ │ ├── helm_rollback.md
│ │ │ │ │ ├── helm_search.md
│ │ │ │ │ ├── helm_search_hub.md
│ │ │ │ │ ├── helm_search_repo.md
│ │ │ │ │ ├── helm_show.md
│ │ │ │ │ ├── helm_show_all.md
│ │ │ │ │ ├── helm_show_chart.md
│ │ │ │ │ ├── helm_show_crds.md
│ │ │ │ │ ├── helm_show_readme.md
│ │ │ │ │ ├── helm_show_values.md
│ │ │ │ │ ├── helm_status.md
│ │ │ │ │ ├── helm_template.md
│ │ │ │ │ ├── helm_test.md
│ │ │ │ │ ├── helm_uninstall.md
│ │ │ │ │ ├── helm_upgrade.md
│ │ │ │ │ ├── helm_verify.md
│ │ │ │ │ └── helm_version.md
│ │ │ │ ├── howto/
│ │ │ │ │ ├── chart_releaser_action.md
│ │ │ │ │ ├── chart_repository_sync_example.md
│ │ │ │ │ ├── charts_tips_and_tricks.md
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── index.mdx
│ │ │ │ ├── intro/
│ │ │ │ │ ├── CheatSheet.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── install.md
│ │ │ │ │ ├── quickstart.md
│ │ │ │ │ └── using_helm.md
│ │ │ │ ├── sdk/
│ │ │ │ │ └── gosdk.md
│ │ │ │ └── topics/
│ │ │ │ ├── advanced.md
│ │ │ │ ├── architecture.md
│ │ │ │ ├── chart_repository.md
│ │ │ │ ├── chart_tests.md
│ │ │ │ ├── charts.md
│ │ │ │ ├── charts_hooks.md
│ │ │ │ ├── index.mdx
│ │ │ │ ├── kubernetes_apis.md
│ │ │ │ ├── kubernetes_distros.md
│ │ │ │ ├── library_charts.md
│ │ │ │ ├── permissions_sql_storage_backend.md
│ │ │ │ ├── plugins.md
│ │ │ │ ├── provenance.md
│ │ │ │ ├── rbac.md
│ │ │ │ ├── registries.md
│ │ │ │ ├── v2_v3_migration.md
│ │ │ │ └── version_skew.md
│ │ │ └── version-3.json
│ │ ├── docusaurus-plugin-content-docs-community/
│ │ │ └── current/
│ │ │ └── release_policy.md
│ │ └── docusaurus-theme-classic/
│ │ ├── footer.json
│ │ └── navbar.json
│ ├── fr/
│ │ ├── code.json
│ │ ├── docusaurus-plugin-content-blog/
│ │ │ └── options.json
│ │ ├── docusaurus-plugin-content-docs/
│ │ │ ├── current.json
│ │ │ ├── version-2.json
│ │ │ ├── version-3/
│ │ │ │ ├── chart_best_practices/
│ │ │ │ │ ├── conventions.md
│ │ │ │ │ ├── custom_resource_definitions.md
│ │ │ │ │ ├── dependencies.md
│ │ │ │ │ ├── labels.md
│ │ │ │ │ ├── pods.md
│ │ │ │ │ ├── rbac.md
│ │ │ │ │ ├── templates.md
│ │ │ │ │ └── values.md
│ │ │ │ ├── chart_template_guide/
│ │ │ │ │ ├── accessing_files.md
│ │ │ │ │ ├── builtin_objects.md
│ │ │ │ │ ├── control_structures.md
│ │ │ │ │ ├── data_types.md
│ │ │ │ │ ├── debugging.md
│ │ │ │ │ ├── function_list.md
│ │ │ │ │ ├── functions_and_pipelines.md
│ │ │ │ │ ├── getting_started.md
│ │ │ │ │ ├── helm_ignore_file.md
│ │ │ │ │ ├── named_templates.md
│ │ │ │ │ ├── notes_files.md
│ │ │ │ │ ├── subcharts_and_globals.md
│ │ │ │ │ ├── values_files.md
│ │ │ │ │ ├── variables.md
│ │ │ │ │ ├── wrapping_up.md
│ │ │ │ │ └── yaml_techniques.md
│ │ │ │ ├── faq/
│ │ │ │ │ ├── changes_since_helm2.md
│ │ │ │ │ ├── installing.md
│ │ │ │ │ ├── troubleshooting.md
│ │ │ │ │ └── uninstalling.md
│ │ │ │ ├── helm/
│ │ │ │ │ ├── _category_.json
│ │ │ │ │ ├── helm.md
│ │ │ │ │ ├── helm_completion.md
│ │ │ │ │ ├── helm_completion_bash.md
│ │ │ │ │ ├── helm_completion_fish.md
│ │ │ │ │ ├── helm_completion_powershell.md
│ │ │ │ │ ├── helm_completion_zsh.md
│ │ │ │ │ ├── helm_create.md
│ │ │ │ │ ├── helm_dependency.md
│ │ │ │ │ ├── helm_dependency_build.md
│ │ │ │ │ ├── helm_dependency_list.md
│ │ │ │ │ ├── helm_dependency_update.md
│ │ │ │ │ ├── helm_env.md
│ │ │ │ │ ├── helm_get.md
│ │ │ │ │ ├── helm_get_all.md
│ │ │ │ │ ├── helm_get_hooks.md
│ │ │ │ │ ├── helm_get_manifest.md
│ │ │ │ │ ├── helm_get_metadata.md
│ │ │ │ │ ├── helm_get_notes.md
│ │ │ │ │ ├── helm_get_values.md
│ │ │ │ │ ├── helm_history.md
│ │ │ │ │ ├── helm_install.md
│ │ │ │ │ ├── helm_lint.md
│ │ │ │ │ ├── helm_list.md
│ │ │ │ │ ├── helm_package.md
│ │ │ │ │ ├── helm_plugin.md
│ │ │ │ │ ├── helm_plugin_install.md
│ │ │ │ │ ├── helm_plugin_list.md
│ │ │ │ │ ├── helm_plugin_uninstall.md
│ │ │ │ │ ├── helm_plugin_update.md
│ │ │ │ │ ├── helm_pull.md
│ │ │ │ │ ├── helm_push.md
│ │ │ │ │ ├── helm_registry.md
│ │ │ │ │ ├── helm_registry_login.md
│ │ │ │ │ ├── helm_registry_logout.md
│ │ │ │ │ ├── helm_repo.md
│ │ │ │ │ ├── helm_repo_add.md
│ │ │ │ │ ├── helm_repo_index.md
│ │ │ │ │ ├── helm_repo_list.md
│ │ │ │ │ ├── helm_repo_remove.md
│ │ │ │ │ ├── helm_repo_update.md
│ │ │ │ │ ├── helm_rollback.md
│ │ │ │ │ ├── helm_search.md
│ │ │ │ │ ├── helm_search_hub.md
│ │ │ │ │ ├── helm_search_repo.md
│ │ │ │ │ ├── helm_show.md
│ │ │ │ │ ├── helm_show_all.md
│ │ │ │ │ ├── helm_show_chart.md
│ │ │ │ │ ├── helm_show_crds.md
│ │ │ │ │ ├── helm_show_readme.md
│ │ │ │ │ ├── helm_show_values.md
│ │ │ │ │ ├── helm_status.md
│ │ │ │ │ ├── helm_template.md
│ │ │ │ │ ├── helm_test.md
│ │ │ │ │ ├── helm_uninstall.md
│ │ │ │ │ ├── helm_upgrade.md
│ │ │ │ │ ├── helm_verify.md
│ │ │ │ │ ├── helm_version.md
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── howto/
│ │ │ │ │ ├── chart_releaser_action.md
│ │ │ │ │ ├── chart_repository_sync_example.md
│ │ │ │ │ ├── charts_tips_and_tricks.md
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── index.mdx
│ │ │ │ ├── intro/
│ │ │ │ │ ├── CheatSheet.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── install.md
│ │ │ │ │ ├── quickstart.md
│ │ │ │ │ └── using_helm.md
│ │ │ │ ├── sdk/
│ │ │ │ │ └── gosdk.md
│ │ │ │ └── topics/
│ │ │ │ ├── advanced.md
│ │ │ │ ├── architecture.md
│ │ │ │ ├── chart_repository.md
│ │ │ │ ├── chart_tests.md
│ │ │ │ ├── charts.md
│ │ │ │ ├── charts_hooks.md
│ │ │ │ ├── index.mdx
│ │ │ │ ├── kubernetes_apis.md
│ │ │ │ ├── kubernetes_distros.md
│ │ │ │ ├── library_charts.md
│ │ │ │ ├── permissions_sql_storage_backend.md
│ │ │ │ ├── plugins.md
│ │ │ │ ├── provenance.md
│ │ │ │ ├── rbac.md
│ │ │ │ ├── registries.md
│ │ │ │ ├── v2_v3_migration.md
│ │ │ │ └── version_skew.md
│ │ │ └── version-3.json
│ │ ├── docusaurus-plugin-content-docs-community/
│ │ │ └── current/
│ │ │ └── release_policy.md
│ │ └── docusaurus-theme-classic/
│ │ ├── footer.json
│ │ └── navbar.json
│ ├── it/
│ │ ├── code.json
│ │ ├── docusaurus-plugin-content-blog/
│ │ │ └── options.json
│ │ ├── docusaurus-plugin-content-docs/
│ │ │ ├── current.json
│ │ │ ├── version-2.json
│ │ │ ├── version-3/
│ │ │ │ ├── index.mdx
│ │ │ │ └── topics/
│ │ │ │ ├── advanced.md
│ │ │ │ ├── architecture.md
│ │ │ │ ├── chart_repository.md
│ │ │ │ ├── chart_tests.md
│ │ │ │ ├── charts.md
│ │ │ │ ├── charts_hooks.md
│ │ │ │ ├── index.mdx
│ │ │ │ ├── kubernetes_apis.md
│ │ │ │ ├── kubernetes_distros.md
│ │ │ │ ├── library_charts.md
│ │ │ │ ├── permissions_sql_storage_backend.md
│ │ │ │ ├── plugins.md
│ │ │ │ ├── provenance.md
│ │ │ │ ├── rbac.md
│ │ │ │ ├── registries.md
│ │ │ │ ├── release_policy.md
│ │ │ │ ├── v2_v3_migration.md
│ │ │ │ └── version_skew.md
│ │ │ └── version-3.json
│ │ └── docusaurus-theme-classic/
│ │ ├── footer.json
│ │ └── navbar.json
│ ├── ja/
│ │ ├── code.json
│ │ ├── docusaurus-plugin-content-blog/
│ │ │ └── options.json
│ │ ├── docusaurus-plugin-content-docs/
│ │ │ ├── current.json
│ │ │ ├── version-2.json
│ │ │ ├── version-3/
│ │ │ │ ├── chart_best_practices/
│ │ │ │ │ ├── conventions.md
│ │ │ │ │ ├── custom_resource_definitions.md
│ │ │ │ │ ├── dependencies.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── labels.md
│ │ │ │ │ ├── pods.md
│ │ │ │ │ ├── rbac.md
│ │ │ │ │ ├── templates.md
│ │ │ │ │ └── values.md
│ │ │ │ ├── chart_template_guide/
│ │ │ │ │ ├── accessing_files.md
│ │ │ │ │ ├── builtin_objects.md
│ │ │ │ │ ├── control_structures.md
│ │ │ │ │ ├── data_types.md
│ │ │ │ │ ├── debugging.md
│ │ │ │ │ ├── function_list.md
│ │ │ │ │ ├── functions_and_pipelines.md
│ │ │ │ │ ├── getting_started.md
│ │ │ │ │ ├── helm_ignore_file.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── named_templates.md
│ │ │ │ │ ├── notes_files.md
│ │ │ │ │ ├── subcharts_and_globals.md
│ │ │ │ │ ├── values_files.md
│ │ │ │ │ ├── variables.md
│ │ │ │ │ ├── wrapping_up.md
│ │ │ │ │ └── yaml_techniques.md
│ │ │ │ ├── faq/
│ │ │ │ │ ├── changes_since_helm2.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── installing.md
│ │ │ │ │ ├── troubleshooting.md
│ │ │ │ │ └── uninstalling.md
│ │ │ │ ├── glossary/
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── helm/
│ │ │ │ │ ├── _category_.json
│ │ │ │ │ ├── helm.md
│ │ │ │ │ ├── helm_completion.md
│ │ │ │ │ ├── helm_completion_bash.md
│ │ │ │ │ ├── helm_completion_fish.md
│ │ │ │ │ ├── helm_completion_powershell.md
│ │ │ │ │ ├── helm_completion_zsh.md
│ │ │ │ │ ├── helm_create.md
│ │ │ │ │ ├── helm_dependency.md
│ │ │ │ │ ├── helm_dependency_build.md
│ │ │ │ │ ├── helm_dependency_list.md
│ │ │ │ │ ├── helm_dependency_update.md
│ │ │ │ │ ├── helm_env.md
│ │ │ │ │ ├── helm_get.md
│ │ │ │ │ ├── helm_get_all.md
│ │ │ │ │ ├── helm_get_hooks.md
│ │ │ │ │ ├── helm_get_manifest.md
│ │ │ │ │ ├── helm_get_metadata.md
│ │ │ │ │ ├── helm_get_notes.md
│ │ │ │ │ ├── helm_get_values.md
│ │ │ │ │ ├── helm_history.md
│ │ │ │ │ ├── helm_install.md
│ │ │ │ │ ├── helm_lint.md
│ │ │ │ │ ├── helm_list.md
│ │ │ │ │ ├── helm_package.md
│ │ │ │ │ ├── helm_plugin.md
│ │ │ │ │ ├── helm_plugin_install.md
│ │ │ │ │ ├── helm_plugin_list.md
│ │ │ │ │ ├── helm_plugin_uninstall.md
│ │ │ │ │ ├── helm_plugin_update.md
│ │ │ │ │ ├── helm_pull.md
│ │ │ │ │ ├── helm_push.md
│ │ │ │ │ ├── helm_registry.md
│ │ │ │ │ ├── helm_registry_login.md
│ │ │ │ │ ├── helm_registry_logout.md
│ │ │ │ │ ├── helm_repo.md
│ │ │ │ │ ├── helm_repo_add.md
│ │ │ │ │ ├── helm_repo_index.md
│ │ │ │ │ ├── helm_repo_list.md
│ │ │ │ │ ├── helm_repo_remove.md
│ │ │ │ │ ├── helm_repo_update.md
│ │ │ │ │ ├── helm_rollback.md
│ │ │ │ │ ├── helm_search.md
│ │ │ │ │ ├── helm_search_hub.md
│ │ │ │ │ ├── helm_search_repo.md
│ │ │ │ │ ├── helm_show.md
│ │ │ │ │ ├── helm_show_all.md
│ │ │ │ │ ├── helm_show_chart.md
│ │ │ │ │ ├── helm_show_crds.md
│ │ │ │ │ ├── helm_show_readme.md
│ │ │ │ │ ├── helm_show_values.md
│ │ │ │ │ ├── helm_status.md
│ │ │ │ │ ├── helm_template.md
│ │ │ │ │ ├── helm_test.md
│ │ │ │ │ ├── helm_uninstall.md
│ │ │ │ │ ├── helm_upgrade.md
│ │ │ │ │ ├── helm_verify.md
│ │ │ │ │ ├── helm_version.md
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── howto/
│ │ │ │ │ ├── chart_releaser_action.md
│ │ │ │ │ ├── chart_repository_sync_example.md
│ │ │ │ │ ├── charts_tips_and_tricks.md
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── index.mdx
│ │ │ │ ├── intro/
│ │ │ │ │ ├── CheatSheet.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── install.md
│ │ │ │ │ ├── quickstart.md
│ │ │ │ │ └── using_helm.md
│ │ │ │ ├── sdk/
│ │ │ │ │ └── gosdk.md
│ │ │ │ └── topics/
│ │ │ │ ├── advanced.md
│ │ │ │ ├── architecture.md
│ │ │ │ ├── chart_repository.md
│ │ │ │ ├── chart_tests.md
│ │ │ │ ├── charts.md
│ │ │ │ ├── charts_hooks.md
│ │ │ │ ├── index.mdx
│ │ │ │ ├── kubernetes_apis.md
│ │ │ │ ├── kubernetes_distros.md
│ │ │ │ ├── library_charts.md
│ │ │ │ ├── permissions_sql_storage_backend.md
│ │ │ │ ├── plugins.md
│ │ │ │ ├── provenance.md
│ │ │ │ ├── rbac.md
│ │ │ │ ├── registries.md
│ │ │ │ ├── v2_v3_migration.md
│ │ │ │ └── version_skew.md
│ │ │ └── version-3.json
│ │ ├── docusaurus-plugin-content-docs-community/
│ │ │ └── current/
│ │ │ ├── developers.md
│ │ │ ├── history.mdx
│ │ │ ├── localization.md
│ │ │ └── release_policy.md
│ │ └── docusaurus-theme-classic/
│ │ ├── footer.json
│ │ └── navbar.json
│ ├── ko/
│ │ ├── code.json
│ │ ├── docusaurus-plugin-content-blog/
│ │ │ ├── 2019-11-13-helm-3-released.md
│ │ │ ├── 2019-11-15-helm-at-cloudnativecon.md
│ │ │ ├── 2020-04-02-covid-19-extending-helm-v2-bug-fixes.md
│ │ │ ├── 2020-04-30-celebrating-helms-cncf-graduation.md
│ │ │ ├── 2020-08-13-helm-v2-deprecation-timeline.md
│ │ │ ├── 2020-10-07-helm-hub-moving-artifact-hub.md
│ │ │ ├── 2020-10-19-helm-turns-five.md
│ │ │ ├── 2020-10-26-new-location-stable-incubator-charts.md
│ │ │ ├── 2020-10-30-charts-repo-deprecation.md
│ │ │ └── options.json
│ │ ├── docusaurus-plugin-content-docs/
│ │ │ ├── current/
│ │ │ │ ├── _v4-in-progress.mdx
│ │ │ │ ├── changelog.md
│ │ │ │ ├── index.mdx
│ │ │ │ ├── overview.md
│ │ │ │ └── plugins/
│ │ │ │ ├── developer/
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── tutorial-cli-plugin.mdx
│ │ │ │ │ ├── tutorial-getter-plugin.mdx
│ │ │ │ │ └── tutorial-postrenderer-plugin.mdx
│ │ │ │ ├── index.mdx
│ │ │ │ ├── overview.md
│ │ │ │ └── user/
│ │ │ │ └── index.md
│ │ │ ├── current.json
│ │ │ ├── version-2.json
│ │ │ ├── version-3/
│ │ │ │ ├── chart_best_practices/
│ │ │ │ │ ├── conventions.md
│ │ │ │ │ ├── custom_resource_definitions.md
│ │ │ │ │ ├── dependencies.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── labels.md
│ │ │ │ │ ├── pods.md
│ │ │ │ │ ├── rbac.md
│ │ │ │ │ ├── templates.md
│ │ │ │ │ └── values.md
│ │ │ │ ├── chart_template_guide/
│ │ │ │ │ ├── accessing_files.md
│ │ │ │ │ ├── builtin_objects.md
│ │ │ │ │ ├── control_structures.md
│ │ │ │ │ ├── data_types.md
│ │ │ │ │ ├── debugging.md
│ │ │ │ │ ├── function_list.md
│ │ │ │ │ ├── functions_and_pipelines.md
│ │ │ │ │ ├── getting_started.md
│ │ │ │ │ ├── helm_ignore_file.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── named_templates.md
│ │ │ │ │ ├── notes_files.md
│ │ │ │ │ ├── subcharts_and_globals.md
│ │ │ │ │ ├── values_files.md
│ │ │ │ │ ├── variables.md
│ │ │ │ │ ├── wrapping_up.md
│ │ │ │ │ └── yaml_techniques.md
│ │ │ │ ├── faq/
│ │ │ │ │ ├── changes_since_helm2.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── installing.md
│ │ │ │ │ ├── troubleshooting.md
│ │ │ │ │ └── uninstalling.md
│ │ │ │ ├── glossary/
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── helm/
│ │ │ │ │ ├── _category_.json
│ │ │ │ │ ├── helm.md
│ │ │ │ │ ├── helm_completion.md
│ │ │ │ │ ├── helm_completion_bash.md
│ │ │ │ │ ├── helm_completion_fish.md
│ │ │ │ │ ├── helm_completion_powershell.md
│ │ │ │ │ ├── helm_completion_zsh.md
│ │ │ │ │ ├── helm_create.md
│ │ │ │ │ ├── helm_dependency.md
│ │ │ │ │ ├── helm_dependency_build.md
│ │ │ │ │ ├── helm_dependency_list.md
│ │ │ │ │ ├── helm_dependency_update.md
│ │ │ │ │ ├── helm_env.md
│ │ │ │ │ ├── helm_get.md
│ │ │ │ │ ├── helm_get_all.md
│ │ │ │ │ ├── helm_get_hooks.md
│ │ │ │ │ ├── helm_get_manifest.md
│ │ │ │ │ ├── helm_get_metadata.md
│ │ │ │ │ ├── helm_get_notes.md
│ │ │ │ │ ├── helm_get_values.md
│ │ │ │ │ ├── helm_history.md
│ │ │ │ │ ├── helm_install.md
│ │ │ │ │ ├── helm_lint.md
│ │ │ │ │ ├── helm_list.md
│ │ │ │ │ ├── helm_package.md
│ │ │ │ │ ├── helm_plugin.md
│ │ │ │ │ ├── helm_plugin_install.md
│ │ │ │ │ ├── helm_plugin_list.md
│ │ │ │ │ ├── helm_plugin_uninstall.md
│ │ │ │ │ ├── helm_plugin_update.md
│ │ │ │ │ ├── helm_pull.md
│ │ │ │ │ ├── helm_push.md
│ │ │ │ │ ├── helm_registry.md
│ │ │ │ │ ├── helm_registry_login.md
│ │ │ │ │ ├── helm_registry_logout.md
│ │ │ │ │ ├── helm_repo.md
│ │ │ │ │ ├── helm_repo_add.md
│ │ │ │ │ ├── helm_repo_index.md
│ │ │ │ │ ├── helm_repo_list.md
│ │ │ │ │ ├── helm_repo_remove.md
│ │ │ │ │ ├── helm_repo_update.md
│ │ │ │ │ ├── helm_rollback.md
│ │ │ │ │ ├── helm_search.md
│ │ │ │ │ ├── helm_search_hub.md
│ │ │ │ │ ├── helm_search_repo.md
│ │ │ │ │ ├── helm_show.md
│ │ │ │ │ ├── helm_show_all.md
│ │ │ │ │ ├── helm_show_chart.md
│ │ │ │ │ ├── helm_show_crds.md
│ │ │ │ │ ├── helm_show_readme.md
│ │ │ │ │ ├── helm_show_values.md
│ │ │ │ │ ├── helm_status.md
│ │ │ │ │ ├── helm_template.md
│ │ │ │ │ ├── helm_test.md
│ │ │ │ │ ├── helm_uninstall.md
│ │ │ │ │ ├── helm_upgrade.md
│ │ │ │ │ ├── helm_verify.md
│ │ │ │ │ ├── helm_version.md
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── howto/
│ │ │ │ │ ├── chart_releaser_action.md
│ │ │ │ │ ├── chart_repository_sync_example.md
│ │ │ │ │ ├── charts_tips_and_tricks.md
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── index.mdx
│ │ │ │ ├── intro/
│ │ │ │ │ ├── CheatSheet.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── install.md
│ │ │ │ │ ├── quickstart.md
│ │ │ │ │ └── using_helm.md
│ │ │ │ ├── sdk/
│ │ │ │ │ ├── _install.mdx
│ │ │ │ │ ├── _list.mdx
│ │ │ │ │ ├── _main.mdx
│ │ │ │ │ ├── _pull.mdx
│ │ │ │ │ ├── _uninstall.mdx
│ │ │ │ │ ├── _upgrade.mdx
│ │ │ │ │ ├── examples.mdx
│ │ │ │ │ ├── gosdk.md
│ │ │ │ │ └── index.mdx
│ │ │ │ └── topics/
│ │ │ │ ├── advanced.md
│ │ │ │ ├── architecture.md
│ │ │ │ ├── chart_repository.md
│ │ │ │ ├── chart_tests.md
│ │ │ │ ├── charts.md
│ │ │ │ ├── charts_hooks.md
│ │ │ │ ├── index.mdx
│ │ │ │ ├── kubernetes_apis.md
│ │ │ │ ├── kubernetes_distros.md
│ │ │ │ ├── library_charts.md
│ │ │ │ ├── permissions_sql_storage_backend.md
│ │ │ │ ├── plugins.md
│ │ │ │ ├── provenance.md
│ │ │ │ ├── rbac.md
│ │ │ │ ├── registries.md
│ │ │ │ ├── v2_v3_migration.md
│ │ │ │ └── version_skew.md
│ │ │ └── version-3.json
│ │ ├── docusaurus-plugin-content-docs-community/
│ │ │ └── current/
│ │ │ ├── developers.md
│ │ │ ├── history.mdx
│ │ │ ├── localization.md
│ │ │ ├── related.md
│ │ │ ├── release_checklist.md
│ │ │ └── release_policy.md
│ │ └── docusaurus-theme-classic/
│ │ ├── footer.json
│ │ └── navbar.json
│ ├── pt/
│ │ ├── code.json
│ │ ├── docusaurus-plugin-content-blog/
│ │ │ └── options.json
│ │ ├── docusaurus-plugin-content-docs/
│ │ │ ├── current.json
│ │ │ ├── version-2.json
│ │ │ ├── version-3/
│ │ │ │ ├── chart_best_practices/
│ │ │ │ │ ├── conventions.md
│ │ │ │ │ ├── custom_resource_definitions.md
│ │ │ │ │ ├── dependencies.md
│ │ │ │ │ ├── labels.md
│ │ │ │ │ ├── pods.md
│ │ │ │ │ ├── rbac.md
│ │ │ │ │ ├── templates.md
│ │ │ │ │ └── values.md
│ │ │ │ ├── chart_template_guide/
│ │ │ │ │ ├── accessing_files.md
│ │ │ │ │ ├── builtin_objects.md
│ │ │ │ │ ├── control_structures.md
│ │ │ │ │ ├── data_types.md
│ │ │ │ │ ├── debugging.md
│ │ │ │ │ ├── function_list.md
│ │ │ │ │ ├── functions_and_pipelines.md
│ │ │ │ │ ├── getting_started.md
│ │ │ │ │ ├── helm_ignore_file.md
│ │ │ │ │ ├── named_templates.md
│ │ │ │ │ ├── notes_files.md
│ │ │ │ │ ├── subcharts_and_globals.md
│ │ │ │ │ ├── values_files.md
│ │ │ │ │ ├── variables.md
│ │ │ │ │ ├── wrapping_up.md
│ │ │ │ │ └── yaml_techniques.md
│ │ │ │ ├── faq/
│ │ │ │ │ ├── changes_since_helm2.md
│ │ │ │ │ ├── installing.md
│ │ │ │ │ ├── troubleshooting.md
│ │ │ │ │ └── uninstalling.md
│ │ │ │ ├── glossary/
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── helm/
│ │ │ │ │ ├── _category_.json
│ │ │ │ │ ├── helm.md
│ │ │ │ │ ├── helm_completion.md
│ │ │ │ │ ├── helm_completion_bash.md
│ │ │ │ │ ├── helm_completion_fish.md
│ │ │ │ │ ├── helm_completion_powershell.md
│ │ │ │ │ ├── helm_completion_zsh.md
│ │ │ │ │ ├── helm_create.md
│ │ │ │ │ ├── helm_dependency.md
│ │ │ │ │ ├── helm_dependency_build.md
│ │ │ │ │ ├── helm_dependency_list.md
│ │ │ │ │ ├── helm_dependency_update.md
│ │ │ │ │ ├── helm_env.md
│ │ │ │ │ ├── helm_get.md
│ │ │ │ │ ├── helm_get_all.md
│ │ │ │ │ ├── helm_get_hooks.md
│ │ │ │ │ ├── helm_get_manifest.md
│ │ │ │ │ ├── helm_get_metadata.md
│ │ │ │ │ ├── helm_get_notes.md
│ │ │ │ │ ├── helm_get_values.md
│ │ │ │ │ ├── helm_history.md
│ │ │ │ │ ├── helm_install.md
│ │ │ │ │ ├── helm_lint.md
│ │ │ │ │ ├── helm_list.md
│ │ │ │ │ ├── helm_package.md
│ │ │ │ │ ├── helm_plugin.md
│ │ │ │ │ ├── helm_plugin_install.md
│ │ │ │ │ ├── helm_plugin_list.md
│ │ │ │ │ ├── helm_plugin_uninstall.md
│ │ │ │ │ ├── helm_plugin_update.md
│ │ │ │ │ ├── helm_pull.md
│ │ │ │ │ ├── helm_push.md
│ │ │ │ │ ├── helm_registry.md
│ │ │ │ │ ├── helm_registry_login.md
│ │ │ │ │ ├── helm_registry_logout.md
│ │ │ │ │ ├── helm_repo.md
│ │ │ │ │ ├── helm_repo_add.md
│ │ │ │ │ ├── helm_repo_index.md
│ │ │ │ │ ├── helm_repo_list.md
│ │ │ │ │ ├── helm_repo_remove.md
│ │ │ │ │ ├── helm_repo_update.md
│ │ │ │ │ ├── helm_rollback.md
│ │ │ │ │ ├── helm_search.md
│ │ │ │ │ ├── helm_search_hub.md
│ │ │ │ │ ├── helm_search_repo.md
│ │ │ │ │ ├── helm_show.md
│ │ │ │ │ ├── helm_show_all.md
│ │ │ │ │ ├── helm_show_chart.md
│ │ │ │ │ ├── helm_show_crds.md
│ │ │ │ │ ├── helm_show_readme.md
│ │ │ │ │ ├── helm_show_values.md
│ │ │ │ │ ├── helm_status.md
│ │ │ │ │ ├── helm_template.md
│ │ │ │ │ ├── helm_test.md
│ │ │ │ │ ├── helm_uninstall.md
│ │ │ │ │ ├── helm_upgrade.md
│ │ │ │ │ ├── helm_verify.md
│ │ │ │ │ ├── helm_version.md
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── howto/
│ │ │ │ │ ├── chart_releaser_action.md
│ │ │ │ │ ├── chart_repository_sync_example.md
│ │ │ │ │ ├── charts_tips_and_tricks.md
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── index.mdx
│ │ │ │ ├── intro/
│ │ │ │ │ ├── CheatSheet.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── install.md
│ │ │ │ │ ├── quickstart.md
│ │ │ │ │ └── using_helm.md
│ │ │ │ ├── sdk/
│ │ │ │ │ └── gosdk.md
│ │ │ │ └── topics/
│ │ │ │ ├── advanced.md
│ │ │ │ ├── architecture.md
│ │ │ │ ├── chart_repository.md
│ │ │ │ ├── chart_tests.md
│ │ │ │ ├── charts.md
│ │ │ │ ├── charts_hooks.md
│ │ │ │ ├── index.mdx
│ │ │ │ ├── kubernetes_apis.md
│ │ │ │ ├── kubernetes_distros.md
│ │ │ │ ├── library_charts.md
│ │ │ │ ├── permissions_sql_storage_backend.md
│ │ │ │ ├── plugins.md
│ │ │ │ ├── provenance.md
│ │ │ │ ├── rbac.md
│ │ │ │ ├── registries.md
│ │ │ │ ├── v2_v3_migration.md
│ │ │ │ └── version_skew.md
│ │ │ └── version-3.json
│ │ ├── docusaurus-plugin-content-docs-community/
│ │ │ └── current/
│ │ │ └── release_policy.md
│ │ └── docusaurus-theme-classic/
│ │ ├── footer.json
│ │ └── navbar.json
│ ├── ru/
│ │ ├── code.json
│ │ ├── docusaurus-plugin-content-blog/
│ │ │ └── options.json
│ │ ├── docusaurus-plugin-content-docs/
│ │ │ ├── current.json
│ │ │ ├── version-2.json
│ │ │ ├── version-3/
│ │ │ │ ├── chart_best_practices/
│ │ │ │ │ ├── conventions.md
│ │ │ │ │ ├── custom_resource_definitions.md
│ │ │ │ │ ├── dependencies.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── labels.md
│ │ │ │ │ ├── pods.md
│ │ │ │ │ ├── rbac.md
│ │ │ │ │ ├── templates.md
│ │ │ │ │ └── values.md
│ │ │ │ ├── chart_template_guide/
│ │ │ │ │ ├── accessing_files.md
│ │ │ │ │ ├── builtin_objects.md
│ │ │ │ │ ├── control_structures.md
│ │ │ │ │ ├── data_types.md
│ │ │ │ │ ├── debugging.md
│ │ │ │ │ ├── function_list.md
│ │ │ │ │ ├── functions_and_pipelines.md
│ │ │ │ │ ├── getting_started.md
│ │ │ │ │ ├── helm_ignore_file.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── named_templates.md
│ │ │ │ │ ├── notes_files.md
│ │ │ │ │ ├── subcharts_and_globals.md
│ │ │ │ │ ├── values_files.md
│ │ │ │ │ ├── variables.md
│ │ │ │ │ ├── wrapping_up.md
│ │ │ │ │ └── yaml_techniques.md
│ │ │ │ ├── faq/
│ │ │ │ │ ├── changes_since_helm2.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── installing.md
│ │ │ │ │ ├── troubleshooting.md
│ │ │ │ │ └── uninstalling.md
│ │ │ │ ├── glossary/
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── helm/
│ │ │ │ │ ├── helm.md
│ │ │ │ │ ├── helm_completion.md
│ │ │ │ │ ├── helm_completion_bash.md
│ │ │ │ │ ├── helm_completion_fish.md
│ │ │ │ │ ├── helm_completion_powershell.md
│ │ │ │ │ ├── helm_completion_zsh.md
│ │ │ │ │ ├── helm_create.md
│ │ │ │ │ ├── helm_dependency.md
│ │ │ │ │ ├── helm_dependency_build.md
│ │ │ │ │ ├── helm_dependency_list.md
│ │ │ │ │ ├── helm_dependency_update.md
│ │ │ │ │ ├── helm_env.md
│ │ │ │ │ ├── helm_get.md
│ │ │ │ │ ├── helm_get_all.md
│ │ │ │ │ ├── helm_get_hooks.md
│ │ │ │ │ ├── helm_get_manifest.md
│ │ │ │ │ ├── helm_get_metadata.md
│ │ │ │ │ ├── helm_get_notes.md
│ │ │ │ │ ├── helm_get_values.md
│ │ │ │ │ ├── helm_history.md
│ │ │ │ │ ├── helm_install.md
│ │ │ │ │ ├── helm_lint.md
│ │ │ │ │ ├── helm_list.md
│ │ │ │ │ ├── helm_package.md
│ │ │ │ │ ├── helm_plugin.md
│ │ │ │ │ ├── helm_plugin_install.md
│ │ │ │ │ ├── helm_plugin_list.md
│ │ │ │ │ ├── helm_plugin_uninstall.md
│ │ │ │ │ ├── helm_plugin_update.md
│ │ │ │ │ ├── helm_pull.md
│ │ │ │ │ ├── helm_push.md
│ │ │ │ │ ├── helm_registry.md
│ │ │ │ │ ├── helm_registry_login.md
│ │ │ │ │ ├── helm_registry_logout.md
│ │ │ │ │ ├── helm_repo.md
│ │ │ │ │ ├── helm_repo_add.md
│ │ │ │ │ ├── helm_repo_index.md
│ │ │ │ │ ├── helm_repo_list.md
│ │ │ │ │ ├── helm_repo_remove.md
│ │ │ │ │ ├── helm_repo_update.md
│ │ │ │ │ ├── helm_rollback.md
│ │ │ │ │ ├── helm_search.md
│ │ │ │ │ ├── helm_search_hub.md
│ │ │ │ │ ├── helm_search_repo.md
│ │ │ │ │ ├── helm_show.md
│ │ │ │ │ ├── helm_show_all.md
│ │ │ │ │ ├── helm_show_chart.md
│ │ │ │ │ ├── helm_show_crds.md
│ │ │ │ │ ├── helm_show_readme.md
│ │ │ │ │ ├── helm_show_values.md
│ │ │ │ │ ├── helm_status.md
│ │ │ │ │ ├── helm_template.md
│ │ │ │ │ ├── helm_test.md
│ │ │ │ │ ├── helm_uninstall.md
│ │ │ │ │ ├── helm_upgrade.md
│ │ │ │ │ ├── helm_verify.md
│ │ │ │ │ ├── helm_version.md
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── howto/
│ │ │ │ │ ├── chart_releaser_action.md
│ │ │ │ │ ├── chart_repository_sync_example.md
│ │ │ │ │ ├── charts_tips_and_tricks.md
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── index.mdx
│ │ │ │ ├── intro/
│ │ │ │ │ ├── CheatSheet.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── install.md
│ │ │ │ │ ├── quickstart.md
│ │ │ │ │ └── using_helm.md
│ │ │ │ ├── sdk/
│ │ │ │ │ ├── _install.mdx
│ │ │ │ │ ├── _list.mdx
│ │ │ │ │ ├── _main.mdx
│ │ │ │ │ ├── _pull.mdx
│ │ │ │ │ ├── _uninstall.mdx
│ │ │ │ │ ├── _upgrade.mdx
│ │ │ │ │ ├── examples.mdx
│ │ │ │ │ ├── gosdk.md
│ │ │ │ │ └── index.mdx
│ │ │ │ └── topics/
│ │ │ │ ├── advanced.md
│ │ │ │ ├── architecture.md
│ │ │ │ ├── chart_repository.md
│ │ │ │ ├── chart_tests.md
│ │ │ │ ├── charts.md
│ │ │ │ ├── charts_hooks.md
│ │ │ │ ├── index.mdx
│ │ │ │ ├── kubernetes_apis.md
│ │ │ │ ├── kubernetes_distros.md
│ │ │ │ ├── library_charts.md
│ │ │ │ ├── permissions_sql_storage_backend.md
│ │ │ │ ├── plugins.md
│ │ │ │ ├── provenance.md
│ │ │ │ ├── rbac.md
│ │ │ │ ├── registries.md
│ │ │ │ ├── v2_v3_migration.md
│ │ │ │ └── version_skew.md
│ │ │ └── version-3.json
│ │ ├── docusaurus-plugin-content-docs-community/
│ │ │ └── current/
│ │ │ └── release_policy.md
│ │ └── docusaurus-theme-classic/
│ │ ├── footer.json
│ │ └── navbar.json
│ ├── uk/
│ │ ├── code.json
│ │ ├── docusaurus-plugin-content-blog/
│ │ │ ├── 2024-10-07-kubecon-na-24/
│ │ │ │ └── index.md
│ │ │ ├── 2025-09-09-path-to-helm-v4.md
│ │ │ └── options.json
│ │ ├── docusaurus-plugin-content-docs/
│ │ │ ├── current/
│ │ │ │ ├── _v4-in-progress.mdx
│ │ │ │ ├── changelog.md
│ │ │ │ ├── chart_best_practices/
│ │ │ │ │ ├── conventions.md
│ │ │ │ │ ├── custom_resource_definitions.md
│ │ │ │ │ ├── dependencies.mdx
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── labels.md
│ │ │ │ │ ├── pods.md
│ │ │ │ │ ├── rbac.md
│ │ │ │ │ ├── templates.md
│ │ │ │ │ └── values.md
│ │ │ │ ├── chart_template_guide/
│ │ │ │ │ ├── accessing_files.md
│ │ │ │ │ ├── builtin_objects.md
│ │ │ │ │ ├── control_structures.md
│ │ │ │ │ ├── data_types.md
│ │ │ │ │ ├── debugging.md
│ │ │ │ │ ├── function_list.mdx
│ │ │ │ │ ├── functions_and_pipelines.mdx
│ │ │ │ │ ├── getting_started.md
│ │ │ │ │ ├── helm_ignore_file.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── named_templates.md
│ │ │ │ │ ├── notes_files.md
│ │ │ │ │ ├── subcharts_and_globals.md
│ │ │ │ │ ├── values_files.mdx
│ │ │ │ │ ├── variables.md
│ │ │ │ │ ├── wrapping_up.md
│ │ │ │ │ └── yaml_techniques.md
│ │ │ │ ├── faq/
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── installing.mdx
│ │ │ │ │ └── uninstalling.mdx
│ │ │ │ ├── glossary/
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── helm/
│ │ │ │ │ ├── _category_.json
│ │ │ │ │ ├── helm.md
│ │ │ │ │ ├── helm_completion.md
│ │ │ │ │ ├── helm_completion_bash.md
│ │ │ │ │ ├── helm_completion_fish.md
│ │ │ │ │ ├── helm_completion_powershell.md
│ │ │ │ │ ├── helm_completion_zsh.md
│ │ │ │ │ ├── helm_create.md
│ │ │ │ │ ├── helm_dependency.md
│ │ │ │ │ ├── helm_dependency_build.md
│ │ │ │ │ ├── helm_dependency_list.md
│ │ │ │ │ ├── helm_dependency_update.md
│ │ │ │ │ ├── helm_env.md
│ │ │ │ │ ├── helm_get.md
│ │ │ │ │ ├── helm_get_all.md
│ │ │ │ │ ├── helm_get_hooks.md
│ │ │ │ │ ├── helm_get_manifest.md
│ │ │ │ │ ├── helm_get_metadata.md
│ │ │ │ │ ├── helm_get_notes.md
│ │ │ │ │ ├── helm_get_values.md
│ │ │ │ │ ├── helm_history.md
│ │ │ │ │ ├── helm_install.md
│ │ │ │ │ ├── helm_lint.md
│ │ │ │ │ ├── helm_list.md
│ │ │ │ │ ├── helm_package.md
│ │ │ │ │ ├── helm_plugin.md
│ │ │ │ │ ├── helm_plugin_install.md
│ │ │ │ │ ├── helm_plugin_list.md
│ │ │ │ │ ├── helm_plugin_package.md
│ │ │ │ │ ├── helm_plugin_uninstall.md
│ │ │ │ │ ├── helm_plugin_update.md
│ │ │ │ │ ├── helm_plugin_verify.md
│ │ │ │ │ ├── helm_pull.md
│ │ │ │ │ ├── helm_push.md
│ │ │ │ │ ├── helm_registry.md
│ │ │ │ │ ├── helm_registry_login.md
│ │ │ │ │ ├── helm_registry_logout.md
│ │ │ │ │ ├── helm_repo.md
│ │ │ │ │ ├── helm_repo_add.md
│ │ │ │ │ ├── helm_repo_index.md
│ │ │ │ │ ├── helm_repo_list.md
│ │ │ │ │ ├── helm_repo_remove.md
│ │ │ │ │ ├── helm_repo_update.md
│ │ │ │ │ ├── helm_rollback.md
│ │ │ │ │ ├── helm_search.md
│ │ │ │ │ ├── helm_search_hub.md
│ │ │ │ │ ├── helm_search_repo.md
│ │ │ │ │ ├── helm_show.md
│ │ │ │ │ ├── helm_show_all.md
│ │ │ │ │ ├── helm_show_chart.md
│ │ │ │ │ ├── helm_show_crds.md
│ │ │ │ │ ├── helm_show_readme.md
│ │ │ │ │ ├── helm_show_values.md
│ │ │ │ │ ├── helm_status.md
│ │ │ │ │ ├── helm_template.md
│ │ │ │ │ ├── helm_test.md
│ │ │ │ │ ├── helm_uninstall.md
│ │ │ │ │ ├── helm_upgrade.md
│ │ │ │ │ ├── helm_verify.md
│ │ │ │ │ ├── helm_version.md
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── howto/
│ │ │ │ │ ├── chart_releaser_action.md
│ │ │ │ │ ├── chart_repository_sync_example.md
│ │ │ │ │ ├── charts_tips_and_tricks.md
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── index.mdx
│ │ │ │ ├── intro/
│ │ │ │ │ ├── CheatSheet.mdx
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── install.mdx
│ │ │ │ │ ├── quickstart.md
│ │ │ │ │ └── using_helm.mdx
│ │ │ │ ├── overview.md
│ │ │ │ ├── plugins/
│ │ │ │ │ ├── developer/
│ │ │ │ │ │ ├── index.mdx
│ │ │ │ │ │ ├── tutorial-cli-plugin.mdx
│ │ │ │ │ │ ├── tutorial-getter-plugin.mdx
│ │ │ │ │ │ └── tutorial-postrenderer-plugin.mdx
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── overview.md
│ │ │ │ │ └── user/
│ │ │ │ │ └── index.md
│ │ │ │ ├── sdk/
│ │ │ │ │ ├── examples.mdx
│ │ │ │ │ ├── gosdk.mdx
│ │ │ │ │ └── index.mdx
│ │ │ │ └── topics/
│ │ │ │ ├── advanced.mdx
│ │ │ │ ├── architecture.md
│ │ │ │ ├── chart_repository.md
│ │ │ │ ├── chart_tests.md
│ │ │ │ ├── charts.mdx
│ │ │ │ ├── charts_hooks.md
│ │ │ │ ├── index.mdx
│ │ │ │ ├── kubernetes_apis.md
│ │ │ │ ├── kubernetes_distros.md
│ │ │ │ ├── library_charts.md
│ │ │ │ ├── permissions_sql_storage_backend.md
│ │ │ │ ├── plugins.mdx
│ │ │ │ ├── provenance.mdx
│ │ │ │ ├── rbac.md
│ │ │ │ ├── registries.mdx
│ │ │ │ └── version_skew.mdx
│ │ │ ├── current.json
│ │ │ ├── version-2.json
│ │ │ ├── version-3/
│ │ │ │ ├── chart_best_practices/
│ │ │ │ │ ├── conventions.md
│ │ │ │ │ ├── custom_resource_definitions.md
│ │ │ │ │ ├── dependencies.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── labels.md
│ │ │ │ │ ├── pods.md
│ │ │ │ │ ├── rbac.md
│ │ │ │ │ ├── templates.md
│ │ │ │ │ └── values.md
│ │ │ │ ├── chart_template_guide/
│ │ │ │ │ ├── accessing_files.md
│ │ │ │ │ ├── builtin_objects.md
│ │ │ │ │ ├── control_structures.md
│ │ │ │ │ ├── data_types.md
│ │ │ │ │ ├── debugging.md
│ │ │ │ │ ├── function_list.md
│ │ │ │ │ ├── functions_and_pipelines.md
│ │ │ │ │ ├── getting_started.md
│ │ │ │ │ ├── helm_ignore_file.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── named_templates.md
│ │ │ │ │ ├── notes_files.md
│ │ │ │ │ ├── subcharts_and_globals.md
│ │ │ │ │ ├── values_files.md
│ │ │ │ │ ├── variables.md
│ │ │ │ │ ├── wrapping_up.md
│ │ │ │ │ └── yaml_techniques.md
│ │ │ │ ├── faq/
│ │ │ │ │ ├── changes_since_helm2.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── installing.md
│ │ │ │ │ ├── troubleshooting.md
│ │ │ │ │ └── uninstalling.md
│ │ │ │ ├── glossary/
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── helm/
│ │ │ │ │ ├── _category_.json
│ │ │ │ │ ├── helm.md
│ │ │ │ │ ├── helm_completion.md
│ │ │ │ │ ├── helm_completion_bash.md
│ │ │ │ │ ├── helm_completion_fish.md
│ │ │ │ │ ├── helm_completion_powershell.md
│ │ │ │ │ ├── helm_completion_zsh.md
│ │ │ │ │ ├── helm_create.md
│ │ │ │ │ ├── helm_dependency.md
│ │ │ │ │ ├── helm_dependency_build.md
│ │ │ │ │ ├── helm_dependency_list.md
│ │ │ │ │ ├── helm_dependency_update.md
│ │ │ │ │ ├── helm_env.md
│ │ │ │ │ ├── helm_get.md
│ │ │ │ │ ├── helm_get_all.md
│ │ │ │ │ ├── helm_get_hooks.md
│ │ │ │ │ ├── helm_get_manifest.md
│ │ │ │ │ ├── helm_get_metadata.md
│ │ │ │ │ ├── helm_get_notes.md
│ │ │ │ │ ├── helm_get_values.md
│ │ │ │ │ ├── helm_history.md
│ │ │ │ │ ├── helm_install.md
│ │ │ │ │ ├── helm_lint.md
│ │ │ │ │ ├── helm_list.md
│ │ │ │ │ ├── helm_package.md
│ │ │ │ │ ├── helm_plugin.md
│ │ │ │ │ ├── helm_plugin_install.md
│ │ │ │ │ ├── helm_plugin_list.md
│ │ │ │ │ ├── helm_plugin_uninstall.md
│ │ │ │ │ ├── helm_plugin_update.md
│ │ │ │ │ ├── helm_pull.md
│ │ │ │ │ ├── helm_push.md
│ │ │ │ │ ├── helm_registry.md
│ │ │ │ │ ├── helm_registry_login.md
│ │ │ │ │ ├── helm_registry_logout.md
│ │ │ │ │ ├── helm_repo.md
│ │ │ │ │ ├── helm_repo_add.md
│ │ │ │ │ ├── helm_repo_index.md
│ │ │ │ │ ├── helm_repo_list.md
│ │ │ │ │ ├── helm_repo_remove.md
│ │ │ │ │ ├── helm_repo_update.md
│ │ │ │ │ ├── helm_rollback.md
│ │ │ │ │ ├── helm_search.md
│ │ │ │ │ ├── helm_search_hub.md
│ │ │ │ │ ├── helm_search_repo.md
│ │ │ │ │ ├── helm_show.md
│ │ │ │ │ ├── helm_show_all.md
│ │ │ │ │ ├── helm_show_chart.md
│ │ │ │ │ ├── helm_show_crds.md
│ │ │ │ │ ├── helm_show_readme.md
│ │ │ │ │ ├── helm_show_values.md
│ │ │ │ │ ├── helm_status.md
│ │ │ │ │ ├── helm_template.md
│ │ │ │ │ ├── helm_test.md
│ │ │ │ │ ├── helm_uninstall.md
│ │ │ │ │ ├── helm_upgrade.md
│ │ │ │ │ ├── helm_verify.md
│ │ │ │ │ ├── helm_version.md
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── howto/
│ │ │ │ │ ├── chart_releaser_action.md
│ │ │ │ │ ├── chart_repository_sync_example.md
│ │ │ │ │ ├── charts_tips_and_tricks.md
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── index.mdx
│ │ │ │ ├── intro/
│ │ │ │ │ ├── CheatSheet.md
│ │ │ │ │ ├── index.mdx
│ │ │ │ │ ├── install.md
│ │ │ │ │ ├── quickstart.md
│ │ │ │ │ └── using_helm.md
│ │ │ │ ├── sdk/
│ │ │ │ │ ├── _install.mdx
│ │ │ │ │ ├── _list.mdx
│ │ │ │ │ ├── _main.mdx
│ │ │ │ │ ├── _pull.mdx
│ │ │ │ │ ├── _uninstall.mdx
│ │ │ │ │ ├── _upgrade.mdx
│ │ │ │ │ ├── examples.mdx
│ │ │ │ │ ├── gosdk.md
│ │ │ │ │ └── index.mdx
│ │ │ │ └── topics/
│ │ │ │ ├── advanced.md
│ │ │ │ ├── architecture.md
│ │ │ │ ├── chart_repository.md
│ │ │ │ ├── chart_tests.md
│ │ │ │ ├── charts.md
│ │ │ │ ├── charts_hooks.md
│ │ │ │ ├── index.mdx
│ │ │ │ ├── kubernetes_apis.md
│ │ │ │ ├── kubernetes_distros.md
│ │ │ │ ├── library_charts.md
│ │ │ │ ├── permissions_sql_storage_backend.md
│ │ │ │ ├── plugins.md
│ │ │ │ ├── provenance.md
│ │ │ │ ├── rbac.md
│ │ │ │ ├── registries.md
│ │ │ │ ├── v2_v3_migration.md
│ │ │ │ └── version_skew.md
│ │ │ └── version-3.json
│ │ ├── docusaurus-plugin-content-docs-community/
│ │ │ └── current/
│ │ │ ├── MAINTAINERS.md
│ │ │ ├── README.md
│ │ │ ├── code-of-conduct.md
│ │ │ ├── communication.md
│ │ │ ├── developers.md
│ │ │ ├── history.mdx
│ │ │ ├── localization.md
│ │ │ ├── related.md
│ │ │ ├── release_checklist.md
│ │ │ └── release_policy.md
│ │ └── docusaurus-theme-classic/
│ │ ├── footer.json
│ │ └── navbar.json
│ └── zh/
│ ├── code.json
│ ├── docusaurus-plugin-content-blog/
│ │ └── options.json
│ ├── docusaurus-plugin-content-docs/
│ │ ├── current.json
│ │ ├── version-2.json
│ │ ├── version-3/
│ │ │ ├── chart_best_practices/
│ │ │ │ ├── conventions.md
│ │ │ │ ├── custom_resource_definitions.md
│ │ │ │ ├── dependencies.md
│ │ │ │ ├── index.mdx
│ │ │ │ ├── labels.md
│ │ │ │ ├── pods.md
│ │ │ │ ├── rbac.md
│ │ │ │ ├── templates.md
│ │ │ │ └── values.md
│ │ │ ├── chart_template_guide/
│ │ │ │ ├── accessing_files.md
│ │ │ │ ├── builtin_objects.md
│ │ │ │ ├── control_structures.md
│ │ │ │ ├── data_types.md
│ │ │ │ ├── debugging.md
│ │ │ │ ├── function_list.md
│ │ │ │ ├── functions_and_pipelines.md
│ │ │ │ ├── getting_started.md
│ │ │ │ ├── helm_ignore_file.md
│ │ │ │ ├── index.mdx
│ │ │ │ ├── named_templates.md
│ │ │ │ ├── notes_files.md
│ │ │ │ ├── subcharts_and_globals.md
│ │ │ │ ├── values_files.md
│ │ │ │ ├── variables.md
│ │ │ │ ├── wrapping_up.md
│ │ │ │ └── yaml_techniques.md
│ │ │ ├── example/
│ │ │ │ ├── golang.md
│ │ │ │ └── index.mdx
│ │ │ ├── faq/
│ │ │ │ ├── changes_since_helm2.md
│ │ │ │ ├── index.mdx
│ │ │ │ ├── installing.md
│ │ │ │ ├── troubleshooting.md
│ │ │ │ └── uninstalling.md
│ │ │ ├── glossary/
│ │ │ │ └── index.mdx
│ │ │ ├── helm/
│ │ │ │ ├── _category_.json
│ │ │ │ ├── helm.md
│ │ │ │ ├── helm_completion.md
│ │ │ │ ├── helm_completion_bash.md
│ │ │ │ ├── helm_completion_fish.md
│ │ │ │ ├── helm_completion_powershell.md
│ │ │ │ ├── helm_completion_zsh.md
│ │ │ │ ├── helm_create.md
│ │ │ │ ├── helm_delete.md
│ │ │ │ ├── helm_dependency.md
│ │ │ │ ├── helm_dependency_build.md
│ │ │ │ ├── helm_dependency_list.md
│ │ │ │ ├── helm_dependency_update.md
│ │ │ │ ├── helm_env.md
│ │ │ │ ├── helm_get.md
│ │ │ │ ├── helm_get_all.md
│ │ │ │ ├── helm_get_hooks.md
│ │ │ │ ├── helm_get_manifest.md
│ │ │ │ ├── helm_get_metadata.md
│ │ │ │ ├── helm_get_notes.md
│ │ │ │ ├── helm_get_values.md
│ │ │ │ ├── helm_history.md
│ │ │ │ ├── helm_init.md
│ │ │ │ ├── helm_inspect.md
│ │ │ │ ├── helm_install.md
│ │ │ │ ├── helm_lint.md
│ │ │ │ ├── helm_list.md
│ │ │ │ ├── helm_package.md
│ │ │ │ ├── helm_plugin.md
│ │ │ │ ├── helm_plugin_install.md
│ │ │ │ ├── helm_plugin_list.md
│ │ │ │ ├── helm_plugin_uninstall.md
│ │ │ │ ├── helm_plugin_update.md
│ │ │ │ ├── helm_pull.md
│ │ │ │ ├── helm_push.md
│ │ │ │ ├── helm_registry.md
│ │ │ │ ├── helm_registry_login.md
│ │ │ │ ├── helm_registry_logout.md
│ │ │ │ ├── helm_repo.md
│ │ │ │ ├── helm_repo_add.md
│ │ │ │ ├── helm_repo_index.md
│ │ │ │ ├── helm_repo_list.md
│ │ │ │ ├── helm_repo_remove.md
│ │ │ │ ├── helm_repo_update.md
│ │ │ │ ├── helm_rollback.md
│ │ │ │ ├── helm_search.md
│ │ │ │ ├── helm_search_hub.md
│ │ │ │ ├── helm_search_repo.md
│ │ │ │ ├── helm_show.md
│ │ │ │ ├── helm_show_all.md
│ │ │ │ ├── helm_show_chart.md
│ │ │ │ ├── helm_show_crds.md
│ │ │ │ ├── helm_show_readme.md
│ │ │ │ ├── helm_show_values.md
│ │ │ │ ├── helm_status.md
│ │ │ │ ├── helm_template.md
│ │ │ │ ├── helm_test.md
│ │ │ │ ├── helm_uninstall.md
│ │ │ │ ├── helm_upgrade.md
│ │ │ │ ├── helm_verify.md
│ │ │ │ ├── helm_version.md
│ │ │ │ └── index.mdx
│ │ │ ├── howto/
│ │ │ │ ├── chart_releaser_action.md
│ │ │ │ ├── chart_repository_sync_example.md
│ │ │ │ ├── charts_tips_and_tricks.md
│ │ │ │ └── index.mdx
│ │ │ ├── index.mdx
│ │ │ ├── intro/
│ │ │ │ ├── CheatSheet.md
│ │ │ │ ├── index.mdx
│ │ │ │ ├── install.md
│ │ │ │ ├── quickstart.md
│ │ │ │ └── using_helm.md
│ │ │ ├── sdk/
│ │ │ │ ├── _install.mdx
│ │ │ │ ├── _list.mdx
│ │ │ │ ├── _main.mdx
│ │ │ │ ├── _pull.mdx
│ │ │ │ ├── _uninstall.mdx
│ │ │ │ ├── _upgrade.mdx
│ │ │ │ ├── examples.mdx
│ │ │ │ ├── gosdk.md
│ │ │ │ └── index.mdx
│ │ │ └── topics/
│ │ │ ├── advanced.md
│ │ │ ├── architecture.md
│ │ │ ├── chart_repository.md
│ │ │ ├── chart_tests.md
│ │ │ ├── charts.md
│ │ │ ├── charts_hooks.md
│ │ │ ├── index.mdx
│ │ │ ├── kubernetes_apis.md
│ │ │ ├── kubernetes_distros.md
│ │ │ ├── library_charts.md
│ │ │ ├── permissions_sql_storage_backend.md
│ │ │ ├── plugins.md
│ │ │ ├── provenance.md
│ │ │ ├── rbac.md
│ │ │ ├── registries.md
│ │ │ ├── v2_v3_migration.md
│ │ │ └── version_skew.md
│ │ └── version-3.json
│ ├── docusaurus-plugin-content-docs-community/
│ │ └── current/
│ │ ├── developers.md
│ │ ├── history.mdx
│ │ ├── localization.md
│ │ ├── related.md
│ │ ├── release_checklist.md
│ │ └── release_policy.md
│ └── docusaurus-theme-classic/
│ ├── footer.json
│ └── navbar.json
├── netlify-plugins/
│ ├── README.md
│ ├── cache-docusaurus-dirs-api/
│ │ ├── index.js
│ │ └── manifest.yml
│ └── cache-docusaurus-dirs-file/
│ ├── index.js
│ └── manifest.yml
├── netlify.toml
├── package.json
├── postcss.config.js
├── remote-content_community.js
├── scripts/
│ ├── migrate-v2-docs.js
│ ├── migrate-v3-docs.js
│ ├── regenerate-cli-docs.mjs
│ ├── util/
│ │ ├── href-diffs-process.js
│ │ ├── util-docusaurus-links.js
│ │ ├── util-file-operations.js
│ │ ├── util-frontmatter.js
│ │ ├── util-migration.js
│ │ └── util-text-replacements.js
│ ├── v2/
│ │ ├── copy-files.js
│ │ ├── href-diffs.json
│ │ ├── menu-generate.js
│ │ └── menu.json
│ ├── v3/
│ │ ├── add-netlify-redirects.js
│ │ ├── href-diffs.json
│ │ ├── migrate-sdk-section.js
│ │ ├── migrate-sdk-section.json
│ │ ├── process-helm-files.js
│ │ ├── remove-aliases.js
│ │ ├── removed-aliases.json
│ │ └── sdk-href-diffs.json
│ └── v4/
│ └── changelog.mjs
├── sdkexamples/
│ ├── .gitignore
│ ├── Makefile
│ ├── README.md
│ ├── go.mod
│ ├── go.sum
│ ├── install.go
│ ├── list.go
│ ├── main.go
│ ├── pull.go
│ ├── tlsutil.go
│ ├── uninstall.go
│ └── upgrade.go
├── sidebars.js
├── sidebars_community.js
├── src/
│ ├── client-modules/
│ │ └── heroHeightCalculator.js
│ ├── components/
│ │ ├── Boat/
│ │ │ ├── boat.css
│ │ │ └── index.js
│ │ ├── GetVersion.js
│ │ ├── HomeAbout/
│ │ │ ├── index.js
│ │ │ └── styles.module.css
│ │ ├── HomeCommunity/
│ │ │ ├── index.js
│ │ │ └── styles.module.css
│ │ ├── HomeFeatures/
│ │ │ ├── index.js
│ │ │ └── styles.module.css
│ │ ├── HomeGettingStarted/
│ │ │ ├── index.js
│ │ │ └── styles.module.css
│ │ ├── HomeHeader/
│ │ │ ├── index.js
│ │ │ └── styles.module.css
│ │ └── HomeSupport/
│ │ ├── index.js
│ │ └── styles.module.css
│ ├── css/
│ │ ├── announcement-bar.css
│ │ ├── content.css
│ │ ├── custom.css
│ │ ├── fonts.css
│ │ ├── footer.css
│ │ ├── home-cards.module.css
│ │ ├── home-sections.module.css
│ │ ├── main.css
│ │ └── navbar.css
│ ├── pages/
│ │ ├── helm-4-release-party.js
│ │ ├── index.js
│ │ ├── index.module.css
│ │ ├── markdown-page.md
│ │ └── party.module.css
│ ├── theme/
│ │ ├── Blog/
│ │ │ └── Pages/
│ │ │ ├── BlogAuthorsListPage/
│ │ │ │ ├── index.js
│ │ │ │ └── styles.module.css
│ │ │ └── BlogAuthorsPostsPage/
│ │ │ └── index.js
│ │ ├── BlogAuthorsListBreadcrumbs/
│ │ │ ├── index.js
│ │ │ └── styles.module.css
│ │ ├── BlogAuthorsPostsBreadcrumbs/
│ │ │ ├── index.js
│ │ │ └── styles.module.css
│ │ ├── BlogBreadcrumbs/
│ │ │ ├── index.js
│ │ │ └── styles.module.css
│ │ ├── BlogLayout/
│ │ │ ├── index.js
│ │ │ └── styles.module.css
│ │ ├── BlogListBreadcrumbs/
│ │ │ ├── index.js
│ │ │ └── styles.module.css
│ │ ├── BlogListPage/
│ │ │ ├── StructuredData/
│ │ │ │ └── index.js
│ │ │ └── index.js
│ │ ├── BlogPostItem/
│ │ │ └── index.tsx
│ │ ├── BlogPostPage/
│ │ │ ├── Metadata/
│ │ │ │ └── index.js
│ │ │ ├── StructuredData/
│ │ │ │ └── index.js
│ │ │ └── index.js
│ │ ├── BlogSidebar/
│ │ │ └── Desktop/
│ │ │ ├── index.js
│ │ │ └── styles.module.css
│ │ ├── DocBreadcrumbs/
│ │ │ ├── Items/
│ │ │ │ └── Home/
│ │ │ │ ├── index.js
│ │ │ │ └── styles.module.css
│ │ │ ├── StructuredData/
│ │ │ │ └── index.js
│ │ │ ├── index.js
│ │ │ └── styles.module.css
│ │ └── TOCCollapsible/
│ │ ├── CollapseButton/
│ │ │ ├── index.js
│ │ │ └── styles.module.css
│ │ ├── index.js
│ │ └── styles.module.css
│ └── utils/
│ ├── communityDocsHelpers.js
│ └── communityDocsTransforms.js
├── static/
│ ├── .nojekyll
│ ├── chartmuseum/
│ │ └── index.html
│ └── helm/
│ ├── index.html
│ ├── v2/
│ │ └── index.html
│ ├── v3/
│ │ └── index.html
│ └── v4/
│ └── index.html
├── style-guide.md
├── versioned_docs/
│ ├── version-2/
│ │ ├── architecture.md
│ │ ├── chart_best_practices/
│ │ │ ├── chart_best_practices.md
│ │ │ ├── conventions.md
│ │ │ ├── custom_resource_definitions.md
│ │ │ ├── labels.md
│ │ │ ├── pods.md
│ │ │ ├── rbac.md
│ │ │ ├── requirements.md
│ │ │ ├── templates.md
│ │ │ └── values.md
│ │ ├── chart_template_guide/
│ │ │ ├── accessing_files.md
│ │ │ ├── builtin_objects.md
│ │ │ ├── chart_template_guide.md
│ │ │ ├── control_structures.md
│ │ │ ├── data_types.md
│ │ │ ├── debugging.md
│ │ │ ├── functions_and_pipelines.md
│ │ │ ├── getting_started.md
│ │ │ ├── helm_ignore_file.md
│ │ │ ├── named_templates.md
│ │ │ ├── notes_files.md
│ │ │ ├── subcharts_and_globals.md
│ │ │ ├── values_files.md
│ │ │ ├── variables.md
│ │ │ ├── wrapping_up.md
│ │ │ └── yaml_techniques.md
│ │ ├── developers.md
│ │ ├── developing_charts/
│ │ │ ├── chart_repository.md
│ │ │ ├── chart_repository_faq.md
│ │ │ ├── chart_repository_sync_example.md
│ │ │ ├── chart_tests.md
│ │ │ ├── charts_hooks.md
│ │ │ ├── charts_tips_and_tricks.md
│ │ │ ├── developing_charts.md
│ │ │ └── provenance.md
│ │ ├── glossary.md
│ │ ├── helm/
│ │ │ ├── helm.md
│ │ │ ├── helm_completion.md
│ │ │ ├── helm_create.md
│ │ │ ├── helm_delete.md
│ │ │ ├── helm_dependency.md
│ │ │ ├── helm_dependency_build.md
│ │ │ ├── helm_dependency_list.md
│ │ │ ├── helm_dependency_update.md
│ │ │ ├── helm_fetch.md
│ │ │ ├── helm_get.md
│ │ │ ├── helm_get_hooks.md
│ │ │ ├── helm_get_manifest.md
│ │ │ ├── helm_get_notes.md
│ │ │ ├── helm_get_values.md
│ │ │ ├── helm_history.md
│ │ │ ├── helm_home.md
│ │ │ ├── helm_init.md
│ │ │ ├── helm_inspect.md
│ │ │ ├── helm_inspect_chart.md
│ │ │ ├── helm_inspect_readme.md
│ │ │ ├── helm_inspect_values.md
│ │ │ ├── helm_install.md
│ │ │ ├── helm_lint.md
│ │ │ ├── helm_list.md
│ │ │ ├── helm_package.md
│ │ │ ├── helm_plugin.md
│ │ │ ├── helm_plugin_install.md
│ │ │ ├── helm_plugin_list.md
│ │ │ ├── helm_plugin_remove.md
│ │ │ ├── helm_plugin_update.md
│ │ │ ├── helm_repo.md
│ │ │ ├── helm_repo_add.md
│ │ │ ├── helm_repo_index.md
│ │ │ ├── helm_repo_list.md
│ │ │ ├── helm_repo_remove.md
│ │ │ ├── helm_repo_update.md
│ │ │ ├── helm_reset.md
│ │ │ ├── helm_rollback.md
│ │ │ ├── helm_search.md
│ │ │ ├── helm_serve.md
│ │ │ ├── helm_status.md
│ │ │ ├── helm_template.md
│ │ │ ├── helm_test.md
│ │ │ ├── helm_upgrade.md
│ │ │ ├── helm_verify.md
│ │ │ └── helm_version.md
│ │ ├── history.md
│ │ ├── index.mdx
│ │ ├── related.md
│ │ └── using_helm/
│ │ ├── install.md
│ │ ├── install_faq.md
│ │ ├── kubernetes_apis.md
│ │ ├── kubernetes_distros.md
│ │ ├── plugins.md
│ │ ├── rbac.md
│ │ ├── securing_installation.md
│ │ ├── tiller_ssl.md
│ │ └── using_helm.md
│ └── version-3/
│ ├── chart_best_practices/
│ │ ├── conventions.md
│ │ ├── custom_resource_definitions.md
│ │ ├── dependencies.md
│ │ ├── index.mdx
│ │ ├── labels.md
│ │ ├── pods.md
│ │ ├── rbac.md
│ │ ├── templates.md
│ │ └── values.md
│ ├── chart_template_guide/
│ │ ├── accessing_files.md
│ │ ├── builtin_objects.md
│ │ ├── control_structures.md
│ │ ├── data_types.md
│ │ ├── debugging.md
│ │ ├── function_list.md
│ │ ├── functions_and_pipelines.md
│ │ ├── getting_started.md
│ │ ├── helm_ignore_file.md
│ │ ├── index.mdx
│ │ ├── named_templates.md
│ │ ├── notes_files.md
│ │ ├── subcharts_and_globals.md
│ │ ├── values_files.md
│ │ ├── variables.md
│ │ ├── wrapping_up.md
│ │ └── yaml_techniques.md
│ ├── faq/
│ │ ├── changes_since_helm2.md
│ │ ├── index.mdx
│ │ ├── installing.md
│ │ ├── troubleshooting.md
│ │ └── uninstalling.md
│ ├── glossary/
│ │ └── index.mdx
│ ├── helm/
│ │ ├── _category_.json
│ │ ├── helm.md
│ │ ├── helm_completion.md
│ │ ├── helm_completion_bash.md
│ │ ├── helm_completion_fish.md
│ │ ├── helm_completion_powershell.md
│ │ ├── helm_completion_zsh.md
│ │ ├── helm_create.md
│ │ ├── helm_dependency.md
│ │ ├── helm_dependency_build.md
│ │ ├── helm_dependency_list.md
│ │ ├── helm_dependency_update.md
│ │ ├── helm_env.md
│ │ ├── helm_get.md
│ │ ├── helm_get_all.md
│ │ ├── helm_get_hooks.md
│ │ ├── helm_get_manifest.md
│ │ ├── helm_get_metadata.md
│ │ ├── helm_get_notes.md
│ │ ├── helm_get_values.md
│ │ ├── helm_history.md
│ │ ├── helm_install.md
│ │ ├── helm_lint.md
│ │ ├── helm_list.md
│ │ ├── helm_package.md
│ │ ├── helm_plugin.md
│ │ ├── helm_plugin_install.md
│ │ ├── helm_plugin_list.md
│ │ ├── helm_plugin_uninstall.md
│ │ ├── helm_plugin_update.md
│ │ ├── helm_pull.md
│ │ ├── helm_push.md
│ │ ├── helm_registry.md
│ │ ├── helm_registry_login.md
│ │ ├── helm_registry_logout.md
│ │ ├── helm_repo.md
│ │ ├── helm_repo_add.md
│ │ ├── helm_repo_index.md
│ │ ├── helm_repo_list.md
│ │ ├── helm_repo_remove.md
│ │ ├── helm_repo_update.md
│ │ ├── helm_rollback.md
│ │ ├── helm_search.md
│ │ ├── helm_search_hub.md
│ │ ├── helm_search_repo.md
│ │ ├── helm_show.md
│ │ ├── helm_show_all.md
│ │ ├── helm_show_chart.md
│ │ ├── helm_show_crds.md
│ │ ├── helm_show_readme.md
│ │ ├── helm_show_values.md
│ │ ├── helm_status.md
│ │ ├── helm_template.md
│ │ ├── helm_test.md
│ │ ├── helm_uninstall.md
│ │ ├── helm_upgrade.md
│ │ ├── helm_verify.md
│ │ ├── helm_version.md
│ │ └── index.mdx
│ ├── howto/
│ │ ├── chart_releaser_action.md
│ │ ├── chart_repository_sync_example.md
│ │ ├── charts_tips_and_tricks.md
│ │ └── index.mdx
│ ├── index.mdx
│ ├── intro/
│ │ ├── CheatSheet.md
│ │ ├── index.mdx
│ │ ├── install.md
│ │ ├── quickstart.md
│ │ └── using_helm.md
│ ├── sdk/
│ │ ├── _install.mdx
│ │ ├── _list.mdx
│ │ ├── _main.mdx
│ │ ├── _pull.mdx
│ │ ├── _uninstall.mdx
│ │ ├── _upgrade.mdx
│ │ ├── examples.mdx
│ │ ├── gosdk.md
│ │ └── index.mdx
│ └── topics/
│ ├── advanced.md
│ ├── architecture.md
│ ├── chart_repository.md
│ ├── chart_tests.md
│ ├── charts.md
│ ├── charts_hooks.md
│ ├── index.mdx
│ ├── kubernetes_apis.md
│ ├── kubernetes_distros.md
│ ├── library_charts.md
│ ├── permissions_sql_storage_backend.md
│ ├── plugins.md
│ ├── provenance.md
│ ├── rbac.md
│ ├── registries.md
│ ├── v2_v3_migration.md
│ └── version_skew.md
├── versioned_sidebars/
│ ├── version-2-sidebars.json
│ └── version-3-sidebars.json
└── versions.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .containerignore
================================================
# Ignore node_modules directory
node_modules
# Ignore any log files
*.log
# Ignore Containerfile and .containerignore itself
Containerfile
.containerignore
# Ignore git repository files
.git
.gitignore
# Ignore temporary files
tmp
*.tmp
# Ignore build output
dist
build
resources
app
================================================
FILE: .editorconfig
================================================
root = true
[*]
end_of_line = lf
insert_final_newline = true
[Makefile]
indent_style = tab
[*.{html,js,json,md,sass,scss,yaml}]
indent_style = space
indent_size = 2
================================================
FILE: .github/workflows/build.yml
================================================
name: build
on:
push:
paths:
- sdkexamples/**
branches:
- main
pull_request:
paths:
- sdkexamples/**
branches:
- main
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: true
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4.2.2
- name: Setup Go sdkexamples/go.mod file
uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # pin@5.1.0
with:
go-version-file: 'sdkexamples/go.mod'
check-latest: true
- name: Build sdkexamples
run: make sdkexamples
================================================
FILE: .github/workflows/stale.yml
================================================
name: "Close stale issues and prs"
on:
schedule:
- cron: "0 0 * * *"
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10.1.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'This issue has been marked as stale because it has been open for 90 days with no activity. This thread will be automatically closed in 30 days if no further activity occurs.'
stale-pr-message: 'This pull request has been marked as stale because it has been open for 90 days with no activity. This pull request will be automatically closed in 30 days if no further activity occurs.'
exempt-issue-labels: 'keep open,v4.x,in progress'
days-before-stale: 90
days-before-close: 30
operations-per-run: 200
================================================
FILE: .github/workflows/typos.yml
================================================
name: typos
on:
push:
branches:
- main
pull_request:
branches:
- main
permissions:
contents: read
jobs:
typos:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4.2.2
- name: Check for typos
uses: crate-ci/typos@v1.38.1
================================================
FILE: .github/workflows/update-community-docs.yml
================================================
name: Update Community Documentation
on:
schedule:
# Run weekly on Mondays at 3 AM UTC
# Adjust frequency as needed - could be nightly: '0 3 * * *'
- cron: '0 3 * * 1'
workflow_dispatch: # Allows manual triggering
permissions:
contents: write
pull-requests: write
jobs:
update-community-docs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'yarn'
- name: Install dependencies
run: yarn install --frozen-lockfile
- name: Update community docs
run: yarn download-remote-community
- name: Create or Update Pull Request
uses: peter-evans/create-pull-request@v7
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: 'chore(community): update docs from upstream'
signoff: true
title: 'chore(community): update docs from helm/community'
body: |
## 🔄 Automated Community Documentation Update
Updates community documentation from [helm/community](https://github.com/helm/community) repository.
### What this does:
- Downloads latest docs from helm/community
- Applies transformations (frontmatter, links, etc.)
- Creates PR if there are changes
### Review checklist:
- [ ] Verify docs render correctly with `yarn start`
- [ ] Check that no local files were overwritten
---
*This is an automated PR. See `.github/workflows/update-community-docs.yml` for details.*
branch: upstream-community-changes
delete-branch: true
labels: |
docs
community
================================================
FILE: .gitignore
================================================
# Dependencies
/node_modules
# Production
/build
# Generated files
.docusaurus
.cache-loader
# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# SDKExamples build output
sdkexamples/sdkexamples
# JetBrains IDEs (GoLand, IntelliJ, ...) config folder
.idea
# Obsidian IDE config folder
.obsidian
# Link checker artifacts
bin/
tmp/
# Migration source files
orig/
.claude
CLAUDE.md
================================================
FILE: .markdownlint.json
================================================
{
"default": true,
"MD013": {
"code_block_line_length": 999,
"tables": false
},
"MD014": false,
"MD025": false,
"MD026": false,
"MD033": false
}
================================================
FILE: .netlify/state.json
================================================
{
"siteId": "bbe72dce-fa74-4199-abb2-6bdfe2b4d08c"
}
================================================
FILE: .nvmrc
================================================
22
================================================
FILE: .typos.toml
================================================
[default]
extend-ignore-re = [
# Hex color codes in SCSS/CSS
"F[0-9A-F]{2,4}",
]
[default.extend-words]
# Company/Publisher names
Packt = "Packt"
SkippBox = "SkippBox"
Skipp = "Skipp"
KOMMA = "KOMMA"
Hashi = "Hashi" # HashiCorp
# Icon/variable names
stange = "stange"
mutliple = "mutliple" # May be intentional in legacy code
multiplebgs = "multiplebgs"
psuedo = "psuedo" # Legacy typo in vendor code
# Technical terms
AKS = "AKS" # Azure Kubernetes Service
ba = "ba"
ede = "ede" # Git commit hash
# German words in translations
Paket = "Paket" # German for "package"
[files]
extend-exclude = [
# Internationalization files (Docusaurus i18n directory)
"i18n/",
# Go dependencies
"sdkexamples/go.mod",
"sdkexamples/go.sum",
# v4 changelog (don't want to change commit messages)
"docs/changelog.md",
# v2 docs
"versioned_docs/version-2/*",
# Ignore typos on files imported from remote repos (fix upstream instead)
# See docusaurus.config.js customFields.communityDocs.remoteDocs[] for full list
"community/art/",
"community/hips/",
"community/meeting-notes/",
]
================================================
FILE: .vscode/launch.json
================================================
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}"
}
]
}
================================================
FILE: AGENTS.md
================================================
# AGENTS.md
This file provides guidance to AI coding agents working with the helm.sh website repository.
## Overview
This is the official Helm project website (helm.sh) - a Docusaurus static site serving Helm documentation, blog, and community resources. The site supports multiple languages and versions, and is automatically deployed to Netlify.
### Technology Stack
- Docusaurus (static site generator)
- React (component framework)
- Node.js/Yarn (package management)
- Netlify (hosting and deployment)
## Quick Start
```bash
# Install dependencies
yarn install
# Start development server
yarn start
# Build for production
yarn build
# Serve production build locally
yarn serve
```
## Repository Structure
### Content Organization
- `docs/` - Current version documentation (unversioned)
- `versioned_docs/version-N/` - Versioned documentation snapshots
- `blog/` - Blog posts and announcements
- `i18n/{lang}/` - Internationalized content for supported languages
- `src/` - React components and custom pages
- `static/` - Static assets (images, files)
### Configuration
- `docusaurus.config.js` - Main Docusaurus configuration
- `sidebars.js` - Documentation sidebar structure
- `versions.json` - Available documentation versions
- `netlify.toml` - Netlify deployment configuration
### Languages
Supported: English (en), German (de), Spanish (es), French (fr), Japanese (ja), Korean (ko), Portuguese (pt), Russian (ru), Ukrainian (uk), Chinese (zh)
## Build and Test Commands
### Development
```bash
# Start dev server (usually port 3000)
yarn start
# Start with specific locale
yarn start --locale ko
# Clear cache if needed
yarn clear
```
### Production Build
```bash
# Build all locales
yarn build
# Build specific locale
yarn build --locale en
# Build without minification (faster for testing)
yarn build --no-minify
```
### Quality Checks
```bash
# Type checking (if TypeScript is added)
yarn typecheck
# Link checking
make check-links-ci
# Spell checking
typos
```
## Architectural Documentation
This codebase includes an `ARCHITECTURAL_DECISIONS.md` document that explains key architectural decisions made during the Docusaurus implementation. When implementing new features or making significant changes:
1. **Document architectural decisions** in `ARCHITECTURAL_DECISIONS.md` with clear reasoning
2. **Include requirements** that drove the decision
3. **Link to relevant Docusaurus documentation** when applicable
4. **Keep explanations concise** but comprehensive enough for future contributors
This helps maintain consistency and guides future development decisions.
### Writing Guidelines for ARCHITECTURAL_DECISIONS.md
When updating architectural decisions:
- **Describe current state** - Document what exists now, not proposals or ideas
- **Keep it concise** - One paragraph per topic, link to external docs instead of repeating them
- **Focus on the "why"** - Explain decisions that aren't obvious from the code
- **Help contributors** - Write for developers who need to understand the codebase quickly
- **Avoid duplication** - Link to Docusaurus docs rather than explaining Docusaurus features
Example: Don't explain what CSS modules are, but DO explain why we chose them over other styling approaches for this specific project.
## Content Management
### Documentation
#### Adding/Editing Docs
1. Edit files in `docs/` for current version
2. For versioned docs, edit in `versioned_docs/version-N/`
3. Frontmatter format:
```yaml
---
title: "Page Title"
sidebar_label: "Short Label"
sidebar_position: 1
---
```
#### Creating New Versions
```bash
# Create new version snapshot
yarn docusaurus docs:version 3.18.0
```
This creates:
- `versioned_docs/version-3.18.0/` - Snapshot of current docs
- `versioned_sidebars/version-3.18.0-sidebars.json` - Sidebar config
- Updates `versions.json`
#### CLI Reference Documentation
Located in `docs/helm/` (and versioned equivalents). To update:
1. Uninstall all helm plugins: `helm plugin uninstall`
2. Navigate to appropriate docs directory
3. Run: `HOME='~' helm docs --type markdown --generate-headers`
4. Commit changes
### Blog Posts
Create in `blog/` directory with naming: `YYYY-MM-DD-slug/index.md`
Frontmatter format:
```yaml
---
title: "Post Title"
authors:
- name: Author Name
url: https://author.link
tags: [tag1, tag2]
---
Post summary appears here.
<!--truncate-->
Full post content here.
```
Images go in the same directory as the blog post or in `blog/assets/`.
### Internationalization
#### Adding Translations
1. Extract strings: `yarn write-translations --locale ko`
2. Translate files in `i18n/{locale}/`
3. Content structure:
- `i18n/{locale}/docusaurus-plugin-content-docs/` - Docs translations
- `i18n/{locale}/docusaurus-plugin-content-blog/` - Blog translations
- `i18n/{locale}/code.json` - UI strings
#### Translation Guidelines
- Maintain consistent terminology across versions
- Test with `yarn start --locale {locale}`
- Ensure all navigation and UI elements are translated
## Code Style and Conventions
### Markdown
- Use semantic line breaks (one sentence per line preferred for diffs)
- Code blocks should specify language: ```yaml, ```bash, ```go
- Use relative links for internal pages: `[text](../path/to/page.md)`
- Images: `` or from static: ``
### Frontmatter Standards
- Required: `title`
- Recommended: `sidebar_label`, `sidebar_position`, `description`
- Blog posts: Use `authors` array, not `author` string
### Component Usage
- Use Docusaurus components when available: `<Tabs>`, `<TabItem>`, `<Admonition>`
- Custom components in `src/components/`
- Import at top of MDX files: `import ComponentName from '@site/src/components/ComponentName'`
### File Naming
- Docs: Use descriptive names, lowercase with hyphens: `getting-started.md`
- Blog: Date prefix required: `YYYY-MM-DD-title/index.md`
- Assets: Descriptive names, avoid spaces
## Deployment
### Netlify Configuration
- **Build command**: `yarn install && make build`
- **Publish directory**: `build`
- **Node version**: Specified in `netlify.toml`
- **Auto-deploys**: From `main` branch
- **Preview deploys**: Automatic for PRs
### Build Process
1. Netlify clones repository
2. Installs dependencies with yarn
3. Runs `make build` which executes `yarn build`
4. Deploys `build/` directory contents
5. Runs post-build plugins (link checking, etc.)
### Environment Considerations
- Build timeout: 15 minutes
- Memory: Standard Netlify build environment
- Cache: `node_modules/` and `.docusaurus/` cached between builds
## Contributing Guidelines
### Requirements
- **Signed commits**: All commits must include DCO sign-off (`git commit -s`)
- **PR approval**: Requires maintainer review
- **Testing**: Build locally before submitting PR
### Workflow
1. Fork repository and create feature branch from `main`
2. Make changes following existing patterns
3. Test locally: `yarn build && yarn serve`
4. Commit with sign-off: `git commit -s -m "description"`
5. Submit PR with clear description
6. Address review feedback
### Commit Messages
- Use conventional commits format when possible
- Be descriptive but concise
- Reference issues: `fixes #123` or `relates to #456`
- Sign all commits with `-s` flag
### Content Approval Process
- **Documentation**: Any maintainer can approve
- **Blog posts**: Require core maintainer approval
- **Configuration changes**: Require thorough review and testing
## Common Tasks
### Updating Helm Version References
1. Update `docusaurus.config.js` - Search for version strings
2. Update relevant documentation pages
3. Consider creating new version snapshot if major release
4. Update `versions.json` if needed
### Adding New Documentation Section
1. Create directory in `docs/`
2. Add index page: `docs/new-section/index.md`
3. Update `sidebars.js` to include new section
4. Add translations to `i18n/{locale}/` directories
### Fixing Broken Links
1. Run link checker: `make check-links-ci`
2. Review output for broken links
3. Fix links in source files
4. Verify in both current and versioned docs if applicable
### Migration from Hugo
If encountering Hugo-specific syntax or structure:
- Hugo shortcodes -> Docusaurus components or MDX
- Hugo frontmatter -> Docusaurus frontmatter (mostly compatible)
- Hugo content organization -> Docusaurus docs structure
- See `HELM2-TO-DOCUSAURUS.md` and `HELM3-TO-DOCUSAURUS.md` for migration details
## Security Considerations
### Content Security
- Never commit secrets or credentials
- Be cautious with external links and embeds
- Validate all user-contributed content
- Use HTTPS for all external resources
### Build Security
- Dependencies audited via Dependabot
- Use exact versions in `package.json` where security-critical
- Review dependency updates before merging
### Deployment Security
- Netlify handles HTTPS/SSL certificates
- No server-side code execution (static site)
- Environment variables kept in Netlify dashboard, not in repo
## Troubleshooting
### Common Issues
**Build fails with "Cannot find module"**
- Solution: `rm -rf node_modules .docusaurus && yarn install`
**Changes not reflecting in dev server**
- Solution: `yarn clear && yarn start`
**Version mismatch errors**
- Solution: Ensure Node.js version matches `.nvmrc` or `netlify.toml`
**Broken links after content move**
- Solution: Search for old path, update all references, run link checker
**Translation missing strings**
- Solution: `yarn write-translations --locale {locale}` to regenerate
### Getting Help
- GitHub Issues: https://github.com/helm/helm-www
- Kubernetes Slack: #helm-users and #helm-dev channels
- Documentation: https://docusaurus.io/docs
## Special Notes for AI Agents
### When Making Changes
1. Always build and test locally before considering work complete
2. Check both English and at least one translated version if touching i18n
3. Verify changes in both current docs and latest versioned docs if applicable
4. Run link checker before finalizing PR
5. Ensure all commits are properly formatted and signed
### File Generation
- CLI reference docs are auto-generated - note this in commits
- Don't manually edit generated files without noting the generation source
- If regenerating docs, ensure clean helm environment (no plugins)
### Be Aware Of
- This is a versioned documentation site - changes may need to apply to multiple versions
- Blog posts are part of permanent site history - be extra careful with edits
- Some content may be in multiple languages - coordinate changes across translations when needed
- External links should be checked periodically as they can break over time
================================================
FILE: ARCHITECTURAL_DECISIONS.md
================================================
# Architectural Decisions - Helm Website
This document explains Helm-specific architectural decisions that help maintain the site and guide contributors. For general Docusaurus concepts, see the [official documentation](https://docusaurus.io/docs).
## Homepage Hero Height Management
### Helm-Specific Requirement
The Helm homepage hero needs to fill the full viewport height minus the navbar for a clean presentation.
### Solution
Uses a [Docusaurus client module](https://docusaurus.io/docs/advanced/client#client-modules): `src/client-modules/heroHeightCalculator.js`
**Handles:** Window resize, orientation change, client-side navigation (SPA routing), and development hot reloading
**Why client modules instead of static scripts:** Integrates with Docusaurus build process and avoids file serving issues in different deployment environments.
## Homepage Component Organization
### Helm-Specific Requirement
Split the homepage into focused components so contributors can easily find and edit specific sections.
### Component Structure
```
src/components/
├── HomeHeader/ # Hero section
├── HomeAbout/ # "What is Helm?" section
├── HomeFeatures/ # Feature cards
├── HomeGettingStarted/ # Installation tabs
└── HomeCommunity/ # Community links
```
**Shared CSS modules:** `src/css/home-*.module.css` for common patterns across components.
**Date internationalization:** Uses [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) for locale-aware date formatting instead of hardcoded strings, automatically adapting to user's language settings.
## Hero Responsive Design
### Helm-Specific Requirement
Hero content must never be hidden behind navbar or waves, especially on mobile landscape or small windows.
### Key Solutions
**Extreme height constraint (< 380px):** Switches to side-by-side layout instead of stacked
**Text scaling:** Uses CSS `clamp()` for smooth scaling while maintaining readability
**Container bounds:** Absolute positioning keeps content above wave animations
## CLI Documentation Generation Script
### Helm-Specific Requirement
Regenerate Helm CLI documentation for each release with consistent formatting and Docusaurus-compatible structure.
### Solution
Uses an ESM Node.js script: `scripts/regenerate-cli-docs.mjs`
**Why ESM over CommonJS:** Modern package compatibility (ora, p-limit) and consistency with future Node.js direction while maintaining parallel processing capabilities for performance.
**Post-processing steps:** Automatically handles Docusaurus requirements like converting links to absolute paths, cleaning frontmatter, and creating proper index files - tasks that would be error-prone if done manually for each release.
See `src/components/HomeHeader/styles.module.css` for implementation details.
## React Hydration Warning Suppression
### Helm-Specific Requirement
The HomeCommunity component displays event dates using locale-specific formatting, which causes unavoidable hydration mismatches between server and client rendering.
### Solution
Following [React's official guidance for suppressing unavoidable hydration mismatches](https://react.dev/reference/react-dom/client/hydrateRoot#suppressing-unavoidable-hydration-mismatch-errors), we use `suppressHydrationWarning` on date-displaying `<span>` elements in `src/components/HomeCommunity/index.js`.
**Why this happens:** The server renders dates using one locale during static generation, but the client may have a different locale, causing React error #418 (text content mismatch). Since dates are intentionally locale-aware for internationalization, this mismatch is expected and acceptable.
**Implementation:** Added `suppressHydrationWarning` prop to both date range and single date `<span>` elements in the CustomDate component.
## Boat and Wave Animation
### Helm-Specific Requirement
Boat must appear to float on waves across all screen sizes while using minimal space in the hero section.
### Key Solutions
**Scaling:** Uses `max(rem, vw)` for viewport-proportional scaling with minimum readable sizes
**Space efficiency:** Boat can overflow above a compact wave container to maximize hero content space
**Animation sync:** Boat bob animation coordinates with wave heights for consistent floating appearance
See `src/components/Boat/styles.module.css` for implementation.
## CSS Organization
### Helm-Specific Requirement
Homepage styles should only load on homepage, not other pages.
### Solution
Uses [CSS Modules](https://docusaurus.io/docs/styling-layout#css-modules) with strategic sharing:
- `src/css/home-*.module.css` - Shared patterns (sections, cards)
- Component `styles.module.css` - Component-specific styles
**Why this approach:** Only homepage components import homepage CSS, so other pages don't load unnecessary styles.
## Blog and Docs Layout Consistency
### Why This Change Was Made
Blog and docs pages now use identical layout and navigation. This was done by [swizzling Docusaurus theme components](https://docusaurus.io/docs/swizzling) rather than custom CSS.
### Key Files for Maintainers
**Core Components (don't delete):**
```
src/theme/BlogLayout/ # Makes blog look like docs
src/theme/BlogBreadcrumbs/ # "Home → Blog → Post" navigation
src/theme/BlogListBreadcrumbs/ # "Home → Blog" navigation
src/theme/DocBreadcrumbs/ # "Home → Docs → Page" navigation
src/theme/TOCCollapsible/ # Mobile "On this page" menu
```
### Expected Navigation Patterns
- **Blog listing:** Home → Blog
- **Blog post:** Home → Blog → Post Title
- **Docs page:** Home → Docs → Category → Page
### Common Issues
**Blog breadcrumbs broken?** Check `src/theme/BlogBreadcrumbs/index.js`
**Mobile TOC not working?** Verify `src/theme/TOCCollapsible/` and that blog posts use proper headers (##, ###)
**Missing "Docs" in breadcrumbs?** Check `src/theme/DocBreadcrumbs/index.js` has the "Docs" link
**Layout looks wrong?** Don't add custom CSS - edit the React components instead
See [Docusaurus swizzling docs](https://docusaurus.io/docs/swizzling) for how these theme components work.
## Markdown Links
This section provides guidance for working with markdown links in the Helm docs site.
### Absolute paths required
Absolute paths are required for all links. Absolute paths are more verbose but necessary to avoid broken links in our multi-locale site due to the following Docusaurus i18n bug: [facebook/docusaurus#10907](https://github.com/facebook/docusaurus/issues/10907).
The sections below include more information about how and when to use absolute file paths or URL paths.
#### Linking within docs or blogs
When linking from one doc page to another or from one blog post to another, use the _absolute file path_:
* Exclude `/blog/` or `/docs/` from the path
* Start the path from the directory within `/blogs` (eg `/2024-10-07-kubecon-na-24/`), or from the version-specific docs folder (eg, `/topics/`, `/chart_template_guide/`, `/helm/`)
* Include the `.md` or `.mdx` file extension
Examples:
```markdown
✅ GOOD (doc to doc link): [Advanced Topics](/topics/advanced.md)
✅ GOOD (blog to blog link): [Helm at KubeCon/CloudNativeCon SLC](/2024-10-07-kubecon-na-24/index.md)
❌ AVOID (relative file path): [Advanced Topics](../topics/advanced.md)
❌ AVOID (relative file path): [Advanced Topics](advanced.md)
❌ AVOID (adding /docs): [Advanced Topics](/docs/topics/advanced.md)
❌ AVOID (absolute URL path, no .md/.mdx): [Advanced Topics](/docs/topics/advanced)
```
#### Linking across docs and blogs
When linking to a doc from a blog, or from a blog to a doc, use the _absolute URL path_:
* Include `/blog/` or `/docs/`
* Exclude the `.md` or `.mdx` file extension
* If the doc or blog has a `slug` defined in its front matter, use the slug in the URL path instead of the filename
Examples:
```markdown
✅ GOOD (file name without .md extension when no slug is in front matter): [See this blog post](/blog/2024-01-01-title)
✅ GOOD (when slug is in front matter): [See this blog post](/blog/my-slug)
❌ AVOID (don't use the file extension): [Advanced Topics](/docs/topics/advanced.md)
```
### Anchor links to headings
Anchor links are challenging in multi-locale sites because anchor IDs are automatically generated from the heading text. This means that any links that point to English language anchor IDs will break in other locales if the given heading is translated to a different language.
For example:
```markdown
English: ## Storage backends → #storage-backends
Chinese: ## 后端存储 → #后端存储 (different anchor ID)
```
To avoid broken anchor links, add explicit IDs to headings in all translations. For example:
```markdown
## Storage backends {#storage-backends}
## 后端存储 {#storage-backends}
```
In this case, anchor links to the given ID will work across all locales since the anchor ID itself remains the same in all translations.
### Troubleshoot broken links
You can run a local build to check for broken links (`yarn build`). If there are broken links, you'll see an error like this in the build output:
```bash
Broken link on source page path = /docs/faq/changes_since_helm2
-> linking to /topics/charts.md
```
To troubleshoot, go to the _source page_ listed in the error message. Note that the source page with the broken link might be in the English docs, even if the broken link was triggered for a different locale.
## Netlify Redirects Strategy
### Hugo to Docusaurus Migration Requirements
During the migration from Hugo to Docusaurus, several legacy URL patterns needed to be preserved to avoid breaking existing links and integrations.
### Redirect Processing Order
[Netlify processes redirects from top to bottom](https://docs.netlify.com/routing/redirects/redirect-options/), with the **first matching rule taking precedence**. This means **more specific patterns must come before general ones**.
### Go Module Import Support
Hugo served Go module import pages at `/helm/`, `/helm/v2/`, `/helm/v3/`, `/helm/v4/`, `/chartmuseum/` using a `content/en/code/` directory with metadata files processed by `themes/helm/layouts/code/single.html`.
### Docusaurus Implementation
Docusaurus replicates this functionality using static HTML files in `/static/`:
- `/static/helm/index.html`
- `/static/helm/v2/index.html`
- `/static/helm/v3/index.html`
- `/static/helm/v4/index.html`
- `/static/chartmuseum/index.html`
Each file provides:
1. **Go import meta tags**: `<meta name="go-import" content="...">` for Go module proxy
2. **Go source meta tags**: `<meta name="go-source" content="...">` for source code navigation
3. **Client-side redirect**: `<meta http-equiv="refresh">` for browser users
4. **Fallback link**: HTML body with link to GitHub repository
### Go Package Import Compatibility
Internal redirects handle Go module proxy requests:
```toml
[[redirects]]
from = "/helm/v3/*"
to = "/helm/v3"
status = 200
[[redirects]]
from = "/helm/v2/*"
to = "/helm/v2"
status = 200
```
### Helm v2 Documentation Redirects
Legacy Helm v2 documentation from `https://v2.helm.sh/docs/*` redirects to the new combined site at `/docs/2/*`. These redirects:
1. **URL format changes**: Map old underscore URLs to new dash URLs (e.g., `using_helm/` → `using-helm/`)
2. **Category-level only**: Target section landing pages (fragments not supported by Netlify)
3. **Temporary status**: Use 302 status during migration phase for easy rollback if issues discovered
4. **Script-managed**: Generated by `scripts/helm2-to-docusaurus.js` for consistency
```toml
# TODO: Change status codes from 302 to 301 after cutover verification
[[redirects]]
from = "https://v2.helm.sh/docs/using_helm/"
to = "/docs/2/using-helm/"
status = 302
```
### Status Code Strategy
- **302 (temporary)** during testing/migration phase - allows easy rollback if issues are discovered
- **301 (permanent)** after Docusaurus site cutover is verified - provides SEO benefits and signals permanent move
This follows [Netlify's best practices](https://docs.netlify.com/routing/redirects/redirect-options/#http-status-codes) for safe migrations.
## Documentation Migration Automation
### Helm-Specific Requirement
Migrating legacy Helm documentation (v2 from Hugo, v3 from existing content) to Docusaurus while preserving URLs and fixing broken links.
### Solution
**Migration Orchestrators:** `scripts/migrate-v2-docs.js` and `scripts/migrate-v3-docs.js` with corresponding `yarn migrate:v2` and `yarn migrate:v3` commands.
**Modular Architecture:** Scripts organized in `scripts/util/`, `scripts/v2/`, `scripts/v3/` directories following UNIX philosophy - each script has a single purpose and can be composed together.
**Key Features:**
- **Fresh start capability:** Each migration clears and rebuilds from source
- **Menu generation:** Extracts navigation structure from live Helm v2 site
- **Link path correction:** Shared `scripts/util/href-diffs-process.js` applies version-specific link fixes from JSON configuration files
- **Missing file handling:** Adds helm commands not present in original navigation but available in source
**Why this approach:** Enables repeatable, testable migrations while maintaining URL compatibility and fixing legacy Hugo-to-Docusaurus link issues.
**For contributors:** Run `yarn migrate:v2` or `yarn migrate:v3` to regenerate versioned documentation. Link fixes are managed via JSON files in each version directory.
**Detailed operational guides:**
- [HELM2-TO-DOCUSAURUS.md](./HELM2-TO-DOCUSAURUS.md) - v2 migration procedures
- [HELM3-TO-DOCUSAURUS.md](./HELM3-TO-DOCUSAURUS.md) - v3 migration procedures
## Hugo Legacy Files Cleanup
### Files to Remove Post-Migration
Once the Docusaurus migration is complete and verified, these Hugo-specific files should be removed:
- **`config.toml`** - Hugo configuration file, replaced by `docusaurus.config.js`
- **`themes/` directory** - Hugo theme files, replaced by Docusaurus theme components
- **`content/en/code/` directory** - Hugo code metadata files, functionality replaced by Netlify redirects
### Migration Strategy
Keep these files during the migration phase to:
1. Reference Hugo configuration when setting up Docusaurus equivalents
2. Understand legacy URL patterns for redirect configuration
3. Maintain ability to rollback if needed during testing
Remove them only after:
1. Docusaurus site cutover is verified
2. All redirects are tested and working
3. No rollback scenarios require Hugo functionality
## Community Documentation Import
### Helm-Specific Requirement
The Helm project maintains community governance documents in a [separate repository](https://github.com/helm/community) that need to be included in the website as an unversioned documentation section with proper Docusaurus integration.
### Solution
Uses [docusaurus-plugin-remote-content](https://github.com/rdilweb/docusaurus-plugin-remote-content) to import and transform content at build time.
**Architecture:**
- **Multi-instance docs:** Community docs are a separate Docusaurus docs plugin instance with `id: "community"`, creating `/community/*` URLs
- **Content transformation:** Custom functions in `src/utils/communityDocsTransforms.js` handle all content processing
- **Configuration:** Centralized in `docusaurus.config.js` under `customFields.communityDocs`
- **Files committed to Git:** Imported files are tracked in version control to maintain clean git status and avoid complex .gitignore management
- **Build settings:** Uses `performCleanup: false` to prevent file deletion during i18n builds (workaround for [plugin issue #98](https://github.com/rdilweb/docusaurus-plugin-remote-content/issues/98))
### Content Transformation Features
**Import notice headers:** Every imported file gets a warning header indicating it shouldn't be edited directly, with a link to the source file in the helm/community repository.
**HIP (Helm Improvement Proposal) formatting:** HIP documents get special treatment:
- Metadata fields (hip, authors, created, status, etc.) displayed as a markdown table
- Sidebar labels include HIP number for easy navigation (e.g., "0023: Utilize Server Side Apply")
- Frontmatter cleaned to remove duplicate metadata
**Plain text file handling:** `.txt` files (like meeting notes) are automatically:
- Converted to `.md` files during import
- Title extracted from content headers
- Content wrapped in code blocks to preserve formatting
**Link transformations:** Only applied for configured exceptions - most links work as-is since the file structure mirrors the source repository.
### Why imported files are committed to Git
The `/community` directory mixes imported files from helm/community with locally-maintained community docs. Committing imported files to Git:
1. **Avoids complex .gitignore patterns** - No need to maintain a parallel list of which specific files to ignore
2. **Provides clean git status** - Contributors don't see dozens of untracked files during development
3. **Enables offline development** - With `noRuntimeDownloads: true`, `yarn start` works without network access
4. **Simplifies mental model** - All files in `/community` are tracked, regardless of source
The tradeoff of content duplication is acceptable since these files rarely change structure and the import notices clearly indicate they shouldn't be edited locally.
### Commands
- `yarn download-remote-community` - Fetch and transform latest content from helm/community repository
- `yarn clear-remote-community` - Remove imported files (useful for testing)
### Automated Updates
A GitHub Action (`.github/workflows/update-community-docs.yml`) runs weekly to:
1. Check for updates in helm/community repository
2. Apply transformations and import changes
3. Create or update a PR if there are changes
4. Skip if an identical PR already exists
The workflow can also be triggered manually through GitHub Actions UI.
### For Contributors
To add new community documents:
1. Add entry to `customFields.communityDocs.remoteDocs` in `docusaurus.config.js`
2. Include optional `meta` field for frontmatter overrides
3. Add link exceptions only if specific links need custom mapping
4. Run `yarn download-remote-community` to test import locally
To modify transformation logic:
1. Edit `src/utils/communityDocsTransforms.js` for content processing
2. Test changes with `yarn download-remote-community`
## Netlify Build Caching
### Problem
Docusaurus builds take ~11 minutes. Need faster builds for development workflow.
### Solution
Custom Netlify plugins cache `.docusaurus/`, `node_modules/`, and `build/` directories.
**Current:** `cache-docusaurus-dirs-file` (stable, 2-4 minute builds)
**Future:** `cache-docusaurus-dirs-api` (beta, potentially 10x faster)
### Build Pipeline Changes
Changed from `make build` (runs destructive `clean`) to `make netlify-build` (preserves cache).
### Cache Strategy
- **Production/branches:** Isolated per branch
- **PR previews:** Shared across PRs via `CACHE_PER_BRANCH=false`
- **Auto-invalidation:** `yarn.lock` changes, `CACHE_VERSION` environment variable
See `netlify-plugins/README.md` for configuration details.
================================================
FILE: CONTRIBUTING-ko.md
================================================
# 기여 가이드라인
helm.sh 웹사이트 및 문서에 대한 기여 가이드입니다. 헬름의 기본 프로젝트는 [helm/helm](https://github.com/helm/helm/blob/main/CONTRIBUTING.md)으로 이동하세요.
---
헬름은 GitHub 풀 리퀘스트를 통해 기여를 받습니다. 이 문서는 기여하는 데 도움이 되는 프로세스를 간략히 설명합니다.
## 보안 이슈 신고
대부분의 경우 헬름에서 버그를 발견하면 [GitHub 이슈](https://github.com/helm/helm/issues)를
사용하여 신고해야 합니다. 그러나 _보안 취약성_ 을 신고하는 경우
[cncf-kubernetes-helm-security@lists.cncf.io](mailto:cncf-kubernetes-helm-security@lists.cncf.io)
이메일로 신고해주세요. 이것은 이슈가 악용되기 전에 해결할 수 있는
기회를 줄 것입니다.
## 당신의 작업에 서명해주세요
서명(sign-off)은 커밋 메시지 끝에 있는 간단한 줄입니다. 모든 커밋은 서명이
있어야 합니다. 귀하의 서명은 패치를 작성했거나 자료를 기여할 권한이 있음을
증명합니다. 아래 개발자 증명서([developercertificate.org](https://developercertificate.org/)에서 발췌)에
동의하는 경우, 규칙은 매우 간단합니다.
```
원본 개발자 증명서
버전 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129
모든 사용자는 이 라이센스 문서의 사본을 복사하여
배포할 수 있지만 변경할 수는 없습니다.
원본 개발자 증명서 1.1
본 프로젝트에 기여함으로써 저는 다음 사항을 보증합니다:
(a) 해당 기여의 전부 또는 일부를 제가 작성했으며,
파일에 명시된 오픈 소스 라이센스에 따라
제출할 권리가 있습니다. 또는
(b) 해당 기여는 제가 아는 한 적합한 오픈 소스
라이센스에 따라 적용되었으며, 해당 라이센스에
따라 (다른 라이센스로 제출할 수 있는 권한이
없는 경우) 파일에 표시된 것과 동일한 오픈
소스 라이센스로 제가 작성한 전부 또는 일부의
수정 작업을 제출할 권리가 있습니다.
또는
(c) 해당 기여는 (a), (b) 또는 (c)를 인증한
다른 사람이 직접 제공했으며, 제가 수정하지
않았습니다.
(d) 저는 해당 프로젝트와 기여를 공개하고 기여
기록(본인의 서명과 함께 제출한 모든 개인
정보 포함)이 무기한 유지되며 해당 프로젝트
또는 관련 오픈 소스 라이센스와 일치하도록
재배포될 수 있음을 이해하고 동의합니다.
```
모든 git 커밋 메시지에 한 줄을 추가하기만 하면 됩니다.
Signed-off-by: Joe Smith <joe.smith@example.com>
실명을 사용해주세요. (죄송하지만, 가명 또는 익명의 기여는 허용되지 않습니다.)
`user.name` 과 `user.email` git config를 설정하면 `git commit -s` 로
자동으로 커밋에 서명할 수 있습니다.
참고: git 설정 정보가 올바르게 지정된 경우 `git log` 를 보면
커밋 정보가 다음과 같습니다.
```
Author: Joe Smith <joe.smith@example.com>
Date: Thu Feb 2 11:41:15 2018 -0800
Update README
Signed-off-by: Joe Smith <joe.smith@example.com>
```
`Author` 와 `Signed-off-by` 줄이 일치하는 것에 주목해주세요. 만약 일치하지
않는다면 자동 DCO 검사에서 PR을 거부할 것입니다.
## 지원 채널
당신이 사용자 혹은 기여자라면 공식 지원 채널은 다음과 같습니다.
- [이슈](https://github.com/helm/helm/issues)
- 슬랙:
- 사용자: [#helm-users](https://kubernetes.slack.com/messages/C0NH30761/details/)
- 기여자: [#helm-dev](https://kubernetes.slack.com/messages/C51E88VDG/)
새로운 이슈를 열거나 새로운 풀 리퀘스트를 보내기 전에 해당 프로젝트를 검색하는 것이 도움이 됩니다. 사용자가 겪은 이슈를 다른 사용자가 이미 보고했거나 저희가 이미 알고 있는 이슈일 수 있습니다. 슬랙 채널에서 물어보는 것도 도움이 될 수 있습니다.
## 이슈
이슈는 헬름 프로젝트와 관련된 모든 항목을 추적하는 기본 방법으로 사용됩니다.
### 이슈 유형
5가지 유형의 이슈가 있습니다(각 이슈마다 해당 [레이블](#labels)이 있음).
- `question/support`: 향후 참조를 위해 기록하기를 원하는 지원 또는 기능 관련
문의가 있습니다. 일반적으로 슬랙 채널에 저장하기에 너무 복잡한 또는 큰 질문이거나
커뮤니티 전체에서 특별한 관심을 갖는 질문입니다. 논의에 따라 `feature` 또는 `bug`
이슈로 바뀔 수 있습니다.
- `proposal`: 대규모 커뮤니티 논의가 필요한 새로운 아이디어 또는 기능을 제안하는
(이 글과 같은) 이슈에 사용됩니다. 이렇게 하면 기능이 실제로 개발되기 전에
커뮤니티의 다른 사용자로부터 피드백을 받을 수 있습니다. 해당 레이블은 작은 이슈에
필요하진 않습니다. 기능의 제안 필요 여부 결정은 핵심 관리자에게 달려 있습니다.
모든 제안 이슈는 해당 레이블과 "Proposal: [제목의 나머지 부분]" 이라는 제목이
있어야 합니다. 제안은 `feature` 가 될 수 있으며 마일스톤은 필요하지 않습니다.
- `feature`: 이 이슈는 완료될 때까지 특정 기능 요청 및 아이디어를 추적합니다.
`proposal` 에서 바뀔 수도 있고 이슈 사이즈에 따라 개별적으로 제출될 수 있습니다.
- `bug`: 코드와 함께 버그를 추적하는 이슈입니다.
- `docs`: 문서 관련 문제(예: 누락 또는 미완)를 추적합니다.
### 이슈 생명 주기
이슈 생명 주기는 주로 핵심 관리자에 의해 관리되지만, 헬름에 기여하는 사람들에게도 좋은 정보입니다.
모든 유형의 이슈는 동일한 생명 주기를 따릅니다. 차이점은 아래에 설명되어 있습니다.
1. 이슈 생성
2. 분류
- 분류를 담당하는 관리자가 해당 이슈에 대한 적절한 레이블을 적용합니다.
여기에는 우선 순위, 유형, 메타데이터(예: `good first issue`)
레이블이 포함됩니다. 저희가 추적할 유일한 이슈 우선 순위는 이 이슈가
"중요한지" 여부입니다. 향후 추가 레이블이 필요하면 추가하겠습니다.
- (필요한 경우) 간결하고 명확하게 이슈를 설명하기 위해 제목을 정리하세요.
또한 제안의 제목은 "Proposal: [제목의 나머지 부분]"으로 서두를 떼야 합니다.
- 이슈를 올바른 마일스톤에 추가합니다. 질문 이슈일 경우, 질문에
답변할 때까지 이슈를 마일스톤 추가하는 것에 대해 염려하지 마세요.
- 저희는 작업일에 적어도 한 번 이상 이 과정을 시도합니다.
3. 논의
- `feature` 또는 `bug` 로 레이블이 지정된 이슈는 이를 해결하는 PR에 연결해야 합니다.
- `feature` 또는 `bug` 이슈를 작업하는 사람(관리자 또는 커뮤니티의 누군가)은
해당 이슈를 직접 자신에게 배정하거나 해당 이슈를 처리하고 있다는 내용의 코멘트를
작성해야 합니다.
- `proposal` 및 `support/question` 이슈는 해결될 때까지 또는 30일 이상 활발하지 않은
경우에도 계속 열려 있어야 합니다. 이렇게 하면 이슈 대기열을 관리 가능한 크기로 유지하고 잡음을
줄일 수 있습니다. 이슈가 계속 열려 있어야 하는 경우 `keep open` 레이블을 추가할 수 있습니다.
4. 이슈 종결
## 패치에 기여하는 방법
1. 아직 서명하지 않은 경우 기여자 라이센스 계약에 서명하세요(위 세부 정보 참조).
2. 원하는 저장소를 포크하여 코드 변경 사항을 개발하고 테스트하세요.
3. 풀 리퀘스트를 보내주세요.
코딩 규약 및 표준은 [공식 개발자 문서](/community/developers)에 설명되어 있습니다.
## 풀 리퀘스트
모든 좋은 오픈 소스 프로젝트와 마찬가지로, 저희는 PR(풀 리퀘스트)을 사용하여 코드 수정을 추적합니다.
### PR 생명 주기
1. PR 생성
- PR은 일반적으로 이슈를 해결하기 위해 생성되거나 특정 이슈를 해결하는 다른 PR의 하위 집합이 됩니다.
- 저희는 현재 진행 중인 PR을 환영합니다. 아직 진행 중이지만 다른 사람들이 보기에
유용한 중요 작업을 추적할 수 있는 좋은 방법입니다. PR이 진행 중인 작업의 경우
**반드시** "WIP: [제목]"으로 제목을 시작해야 합니다. PR을 리뷰할 준비가 되면
제목에서 "WIP"를 제거합니다.
- 특정 이슈와 관련된 PR을 보내는 것이 바람직하지만 필수 사항은 아닙니다.
해당 PR이 급한 해결책이라면 이슈가 적절하지 않게 종결될 수 있는 상황이 있을
수 있습니다. 이 경우 PR 설명란에 세부 정보를 넣어주세요.
2. 분류
- 분류를 담당하는 관리자가 해당 이슈에 대한 적절한 레이블을 적용합니다. 모든 레이블이
적용된 후에는 최소한 사이즈 레이블, `bug` 또는 `feature`, `awaiting review` 가 포함되어야 합니다.
레이블 정의에 대한 자세한 내용은 [레이블 섹션](#레이블)을 참조합니다.
- PR을 올바른 마일스톤에 추가합니다. 이는 PR이 닫는 이슈와 동일해야 합니다.
3. 리뷰 배정
- 리뷰에 `awaiting review` 라는 레이블이 표시되면 관리자는 스케줄이 허용하는 대로 리뷰합니다.
이슈를 제기한 관리자는 리뷰에 대해 자체 요청(self-request)해야 합니다.
- `size/large` 레이블이 있는 PR은 병합하기 전에 관리자로부터 2개의 리뷰 승인이 필요합니다.
`size/medium` 또는 `size/small` 인 경우 관리자의 판단에 따릅니다.
4. 리뷰/논의
- 모든 리뷰는 GitHub 리뷰 도구를 사용하여 완료됩니다.
- "Comment(주석)" 리뷰는 답변해야 하는 코드 관련 질문이 있을 때 사용해야 하지만 코드 변경은
포함되지 않습니다. 이러한 유형의 리뷰는 승인에 포함되지 않습니다.
- "Changes Requested(변경 요청)" 리뷰는 코드를 병합하기 전에 수정해야 함을 나타냅니다.
- 리뷰어는 필요에 따라 레이블을 갱신해야 합니다(예: `needs rebase`).
5. 질문에 답변하거나 코드를 수정하여 의견을 반영합니다.
6. LGTM (Looks good to me)
- 리뷰어가 리뷰를 완료하고 코드가 병합될 준비가 된 것으로 보이면 "Approve(승인)"
리뷰는 기여자와 다른 관리자에게 코드를 리뷰한 후 병합 준비가 완료되었음을 알리는 데
사용됩니다.
7. 병합(merge) 또는 종결(close)
- PR은 병합될 때까지 또는 30일 이상 활발하지 않은 경우 열려 있어야 합니다. 이렇게 하면
PR 대기열을 관리 가능한 크기로 유지하고 잡음을 줄일 수 있습니다. PR이 계속 열려 있어야
하는 경우 (WIP의 경우처럼), `keep open` 레이블을 추가할 수 있습니다.
- PR을 병합하기 전에 PR에 한 개 이상의 LGTM이 필요한지 여부를 결정하기 위해
아래 [사이즈 레이블](#사이즈-레이블) 항목을 참조하세요.
- PR 소유자가 `OWNERS` 파일에 포함되어 있는 경우 해당 사용자는 반드시 자신의 PR을 병합하거나
다른 OWNER에게 명시적으로 요청해야 합니다.
- PR의 소유자가 `OWNERS`에 포함되어 있지 않은 경우, 모든 핵심 관리자가 PR을 병합할 수 있습니다.
#### 문서 PR
문서 PR은 다른 PR과 동일한 수명 주기를 따릅니다. 또한 `docs` 레이블로
레이블이 지정됩니다. 문서의 경우 철자, 문법, 명료성에 특히 주의를 기울여야
합니다(코드의 주석*만큼* 중요하지 않음).
## 분류자 (Triager)
매주 목요일 공개 스탠드업 회의를 시작으로 핵심 관리자 중 한 명이 "분류자"
역할을 하게 됩니다. 이 담당자는 일주일 내내 새로운 PR 및 이슈에 대한 분류를
담당하게 됩니다.
## 레이블
다음 표에서는 헬름에 사용되는 모든 레이블 유형을 정의합니다. 카테고리별로 나뉩니다.
### 공통 레이블
| 레이블 | 설명 |
| ----- | ----------- |
| `bug` | 이슈를 버그 또는 PR을 버그 수정으로 표시합니다. |
| `critical` | 이슈 또는 PR을 중요한 것으로 표시합니다. 이것은 PR이나 이슈를 다루는 것이 최우선이며 가능한 한 빨리 해결되어야 한다는 것을 의미합니다. |
| `docs` | 이슈 또는 PR이 문서 변경임을 나타냅니다. |
| `feature` | 이슈를 기능 요청으로 표시하거나 PR을 기능 구현으로 표시합니다. |
| `keep open` | 이슈 또는 PR을 30일간 사용되지 않는 상태로 열어 둬야 함을 나타냅니다. |
| `refactor` | 이슈가 코드 개선이며 버그를 고치거나 추가 기능을 추가하지 않음을 나타냅니다. |
### 이슈용 레이블
| 레이블 | 설명 |
| ----- | ----------- |
| `help wanted` | 이슈를 해결하기 위해 커뮤니티의 도움이 필요하다고 표시합니다. |
| `proposal` | 이슈를 제안으로 표시합니다. |
| `question/support` | 이슈를 요청이나 질문으로 표시합니다. |
| `good first issue` | 이슈를 헬름을 처음 접하는 사용자에게 좋은 첫 이슈로 표시합니다. |
| `wont fix` | 이슈가 논의되었으며 구현되지 않을 것임(또는 제안의 경우 받았음)을 나타냅니다. |
### PR용 레이블
| 레이블 | 설명 |
| ----- | ----------- |
| `awaiting review` | PR이 분류되었으며 다른 사용자가 리뷰할 준비가 되었음을 나타냅니다 |
| `breaking` | PR이 코드를 변경한다는 것을 나타냅니다 (예: API 변경) |
| `in progress` | 아직 리뷰되지 않았어도 관리자가 PR을 보고 있음을 나타냅니다 |
| `needs rebase` | PR이 병합되기 전 리베이스(rebase)할 필요가 있음을 나타냅니다 |
| `needs pick` | PR이 기능 브랜치(일반적으로 버그 수정 브랜치)로 체리픽(cherry-pick)할 필요가 있음을 나타냅니다. 체리픽했다면 `picked` 레이블을 적용하고 해당 레이블을 제거해야 합니다 |
| `picked` | 해당 PR은 기능 브랜치로 체리픽했다는 것을 나타냅니다 |
#### 사이즈 레이블
사이즈 레이블은 PR이 얼마나 "위험"한지를 나타내는 데 사용됩니다.
아래 가이드라인은 레이블을 배정하는 데 사용되지만, 궁극적으로 관리자에 의해 변경 될
수 있습니다. 예를 들어 PR이 한 파일에서 30 줄만 변경하더라도 주요 기능이 바뀐다면
여러 명의 서명이 필요하므로 `size/L` 로 레이블이 지정될 가능성이 높습니다.
반대로 작은 기능을 추가하지만 모든 경우를 다루기 위해 150 줄의 테스트가 필요한 PR은
줄 수가 아래에 정의된 것보다 많더라도 `size/S` 로 레이블을 지정할 수 있습니다.
핵심 관리자에 의해 제출되는 PR은 사이즈에 상관없이 한 명의 추가 관리자 승인만 필요로
합니다. 이렇게 하면 코드베이스(codebase)에 도입된 중요한 PR을 알고 있는 관리자가
두 명 이상 있게 됩니다.
| 레이블 | 설명 |
| ----- | ----------- |
| `size/XS` | 생성된 파일은 무시하고 0~9줄을 변경하는 PR을 나타냅니다. 변경 사항에 따라 테스트가 거의 필요하지 않을 수 있습니다. |
| `size/S` | 생성된 파일은 무시하고 10-29줄을 변경하는 PR을 나타냅니다. 소량의 수동 테스트만 필요할 수 있습니다. |
| `size/M` | 생성된 파일은 무시하고 30-99줄을 변경하는 PR을 나타냅니다. 수동 유효성 검사가 필요합니다. |
| `size/L` | 생성된 파일은 무시하고 100-499줄을 변경하는 PR을 나타냅니다. 이 작업은 병합하기 전에 철저히 테스트해야 하며 항상 2개의 승인이 필요합니다. |
| `size/XL` | 생성된 파일은 무시하고 500-999 줄을 변경하는 PR을 나타냅니다. 이 작업은 병합하기 전에 철저히 테스트해야 하며 항상 2개의 승인이 필요합니다. |
| `size/XXL` | 생성된 파일은 무시하고 1000개 이상의 행을 변경하는 PR을 나타냅니다. 이 작업은 병합하기 전에 철저히 테스트해야 하며 항상 2개의 승인이 필요합니다. |
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing Guidelines
This is the contribution guide for the helm.sh website and documentation. Go to [helm/helm](https://github.com/helm/helm/blob/main/CONTRIBUTING.md) for the core project.
---
Helm accepts contributions via GitHub pull requests. This document outlines the process to help get your contribution accepted.
## Reporting a Security Issue
Most of the time, when you find a bug in Helm, it should be reported
using [GitHub issues](https://github.com/helm/helm/issues). However, if
you are reporting a _security vulnerability_, please email a report to
[cncf-kubernetes-helm-security@lists.cncf.io](mailto:cncf-kubernetes-helm-security@lists.cncf.io). This will give
us a chance to try to fix the issue before it is exploited in the wild.
## Sign Your Work
The sign-off is a simple line at the end of the explanation for a commit. All
commits needs to be signed. Your signature certifies that you wrote the patch or
otherwise have the right to contribute the material. The rules are pretty simple,
if you can certify the below (from [developercertificate.org](https://developercertificate.org/)):
```
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
```
Then you just add a line to every git commit message:
Signed-off-by: Joe Smith <joe.smith@example.com>
Use your real name (sorry, no pseudonyms or anonymous contributions.)
If you set your `user.name` and `user.email` git configs, you can sign your
commit automatically with `git commit -s`.
Note: If your git config information is set properly then viewing the
`git log` information for your commit will look something like this:
```
Author: Joe Smith <joe.smith@example.com>
Date: Thu Feb 2 11:41:15 2018 -0800
Update README
Signed-off-by: Joe Smith <joe.smith@example.com>
```
Notice the `Author` and `Signed-off-by` lines match. If they don't
your PR will be rejected by the automated DCO check.
## Support Channels
Whether you are a user or contributor, official support channels include:
- [Issues](https://github.com/helm/helm/issues)
- Slack:
- User: [#helm-users](https://kubernetes.slack.com/messages/C0NH30761/details/)
- Contributor: [#helm-dev](https://kubernetes.slack.com/messages/C51E88VDG/)
Before opening a new issue or submitting a new pull request, it's helpful to search the project - it's likely that another user has already reported the issue you're facing, or it's a known issue that we're already aware of. It is also worth asking on the Slack channels.
## Issues
Issues are used as the primary method for tracking anything to do with the Helm project.
### Issue Types
There are 5 types of issues (each with their own corresponding [label](#labels)):
- `question/support`: These are support or functionality inquiries that we want to have a record of for
future reference. Generally these are questions that are too complex or large to store in the
Slack channel or have particular interest to the community as a whole. Depending on the discussion,
these can turn into `feature` or `bug` issues.
- `proposal`: Used for items (like this one) that propose new ideas or functionality that require
a larger community discussion. This allows for feedback from others in the community before a
feature is actually developed. This is not needed for small additions. Final word on whether or
not a feature needs a proposal is up to the core maintainers. All issues that are proposals should
both have a label and an issue title of "Proposal: [the rest of the title]." A proposal can become
a `feature` and does not require a milestone.
- `feature`: These track specific feature requests and ideas until they are complete. They can evolve
from a `proposal` or can be submitted individually depending on the size.
- `bug`: These track bugs with the code
- `docs`: These track problems with the documentation (i.e. missing or incomplete)
### Issue Lifecycle
The issue lifecycle is mainly driven by the core maintainers, but is good information for those
contributing to Helm. All issue types follow the same general lifecycle. Differences are noted below.
1. Issue creation
2. Triage
- The maintainer in charge of triaging will apply the proper labels for the issue. This
includes labels for priority, type, and metadata (such as `good first issue`). The only issue
priority we will be tracking is whether or not the issue is "critical." If additional
levels are needed in the future, we will add them.
- (If needed) Clean up the title to succinctly and clearly state the issue. Also ensure
that proposals are prefaced with "Proposal: [the rest of the title]".
- Add the issue to the correct milestone. If any questions come up, don't worry about
adding the issue to a milestone until the questions are answered.
- We attempt to do this process at least once per work day.
3. Discussion
- issues that are labeled as `feature` or `bug` should be connected to the PR that resolves it.
- Whoever is working on a `feature` or `bug` issue (whether a maintainer or someone from
the community), should either assign the issue to themself or make a comment in the issue
saying that they are taking it.
- `proposal` and `support/question` issues should stay open until resolved or if they have not been
active for more than 30 days. This will help keep the issue queue to a manageable size and
reduce noise. Should the issue need to stay open, the `keep open` label can be added.
4. Issue closure
## How to Contribute a Patch
1. If you haven't already done so, sign a Contributor License Agreement (see details above).
2. Fork the desired repo, develop and test your code changes.
3. Submit a pull request.
Coding conventions and standards are explained in the [official developer docs](https://helm.sh/docs/developers/).
## Pull Requests
Like any good open source project, we use Pull Requests (PRs) to track code changes.
### PR Lifecycle
1. PR creation
- PRs are usually created to fix or else be a subset of other PRs that fix a particular issue.
- We more than welcome PRs that are currently in progress. They are a great way to keep track of
important work that is in-flight, but useful for others to see. If a PR is a work in progress,
it **must** be prefaced with "WIP: [title]". Once the PR is ready for review, remove "WIP" from
the title.
- It is preferred, but not required, to have a PR tied to a specific issue. There can be
circumstances where if it is a quick fix then an issue might be overkill. The details provided
in the PR description would suffice in this case.
2. Triage
- The maintainer in charge of triaging will apply the proper labels for the issue. This should
include at least a size label, `bug` or `feature`, and `awaiting review` once all labels are applied.
See the [Labels section](#labels) for full details on the definitions of labels.
- Add the PR to the correct milestone. This should be the same as the issue the PR closes.
3. Assigning reviews
- Once a review has the `awaiting review` label, maintainers will review them as schedule permits.
The maintainer who takes the issue should self-request a review.
- Any PR with the `size/large` label requires 2 review approvals from maintainers before it can be
merged. Those with `size/medium` or `size/small` are per the judgement of the maintainers.
4. Reviewing/Discussion
- All reviews will be completed using GitHub review tool.
- A "Comment" review should be used when there are questions about the code that should be
answered, but that don't involve code changes. This type of review does not count as approval.
- A "Changes Requested" review indicates that changes to the code need to be made before they will be merged.
- Reviewers should update labels as needed (such as `needs rebase`)
5. Address comments by answering questions or changing code
6. LGTM (Looks good to me)
- Once a Reviewer has completed a review and the code looks ready to merge, an "Approve" review is used
to signal to the contributor and to other maintainers that you have reviewed the code and feel that it is
ready to be merged.
7. Merge or close
- PRs should stay open until merged or if they have not been active for more than 30 days.
This will help keep the PR queue to a manageable size and reduce noise. Should the PR need
to stay open (like in the case of a WIP), the `keep open` label can be added.
- Before merging a PR, refer to the topic on [Size Labels](#size-labels) below to determine if
the PR requires more than one LGTM to merge.
- If the owner of the PR is listed in the `OWNERS` file, that user **must** merge their own PRs
or explicitly request another OWNER do that for them.
- If the owner of a PR is _not_ listed in `OWNERS`, any core maintainer may merge the PR.
#### Documentation PRs
Documentation PRs will follow the same lifecycle as other PRs. They will also be labeled with the
`docs` label. For documentation, special attention will be paid to spelling, grammar, and clarity
(whereas those things don't matter *as* much for comments in code).
For additional style guidelines, see [Documentation Style Guide](style-guide.md).
## The Triager
Each week, one of the core maintainers will serve as the designated "triager" starting after the
public stand-up meetings on Thursday. This person will be in charge triaging new PRs and issues
throughout the work week.
## Labels
The following tables define all label types used for Helm. It is split up by category.
### Common
| Label | Description |
| ----- | ----------- |
| `bug` | Marks an issue as a bug or a PR as a bugfix |
| `critical` | Marks an issue or PR as critical. This means that addressing the PR or issue is top priority and must be addressed as soon as possible |
| `docs` | Indicates the issue or PR is a documentation change |
| `feature` | Marks the issue as a feature request or a PR as a feature implementation |
| `keep open` | Denotes that the issue or PR should be kept open past 30 days of inactivity |
| `refactor` | Indicates that the issue is a code refactor and is not fixing a bug or adding additional functionality |
### Issue Specific
| Label | Description |
| ----- | ----------- |
| `help wanted` | Marks an issue needs help from the community to solve |
| `proposal` | Marks an issue as a proposal |
| `question/support` | Marks an issue as a support request or question |
| `good first issue` | Marks an issue as a good starter issue for someone new to Helm |
| `wont fix` | Marks an issue as discussed and will not be implemented (or accepted in the case of a proposal) |
### PR Specific
| Label | Description |
| ----- | ----------- |
| `awaiting review` | Indicates a PR has been triaged and is ready for someone to review |
| `breaking` | Indicates a PR has breaking changes (such as API changes) |
| `in progress` | Indicates that a maintainer is looking at the PR, even if no review has been posted yet |
| `needs rebase` | Indicates a PR needs to be rebased before it can be merged |
| `needs pick` | Indicates a PR needs to be cherry-picked into a feature branch (generally bugfix branches). Once it has been, the `picked` label should be applied and this one removed |
| `picked` | This PR has been cherry-picked into a feature branch |
#### Size labels
Size labels are used to indicate how "dangerous" a PR is. The guidelines below are used to assign the
labels, but ultimately this can be changed by the maintainers. For example, even if a PR only makes
30 lines of changes in 1 file, but it changes key functionality, it will likely be labeled as `size/L`
because it requires sign off from multiple people. Conversely, a PR that adds a small feature, but requires
another 150 lines of tests to cover all cases, could be labeled as `size/S` even though the number of
lines is greater than defined below.
PRs submitted by a core maintainer, regardless of size, only requires approval from one additional
maintainer. This ensures there are at least two maintainers who are aware of any significant PRs
introduced to the codebase.
| Label | Description |
| ----- | ----------- |
| `size/XS` | Denotes a PR that changes 0-9 lines, ignoring generated files. Very little testing may be required depending on the change. |
| `size/S` | Denotes a PR that changes 10-29 lines, ignoring generated files. Only small amounts of manual testing may be required. |
| `size/M` | Denotes a PR that changes 30-99 lines, ignoring generated files. Manual validation should be required. |
| `size/L` | Denotes a PR that changes 100-499 lines, ignoring generated files. This should be thoroughly tested before merging and always requires 2 approvals. |
| `size/XL` | Denotes a PR that changes 500-999 lines, ignoring generated files. This should be thoroughly tested before merging and always requires 2 approvals. |
| `size/XXL` | Denotes a PR that changes 1000+ lines, ignoring generated files. This should be thoroughly tested before merging and always requires 2 approvals. |
================================================
FILE: Containerfile
================================================
FROM node:20-alpine
WORKDIR /src
# Tools needed by Make targets
RUN apk update && apk add --no-cache make
# Use existing Yarn; install deps with lockfile for reproducibility
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile
# Copy project files
COPY . .
# Docusaurus dev server port
EXPOSE 3000
# Make targets run inside the container (serve, build, etc.)
ENTRYPOINT ["make"]
================================================
FILE: HELM2-TO-DOCUSAURUS.md
================================================
# Helm v2 to Docusaurus Migration Guide
Automated migration of Helm v2 documentation from the original source repository to Docusaurus versioned documentation format, preserving the familiar v2.helm.sh navigation structure and fixing broken links.
## Key Features
- **Complete Structure Analysis** - Analyzes live v2.helm.sh to capture exact sidebar structure
- **Missing File Integration** - Adds helm commands not present in navigation but available in source
- **Link Path Correction** - Fixes broken internal links using shared href processing utility
- **Image Path Replacement** - Updates all image references to `/img/helm2/` format
- **H2 Heading Removal** - Removes redundant first H2 headings from helm command files
- **Index File Creation** - Generates proper Docusaurus landing page with DocCardList
- **Proper Positioning** - Maintains v2.helm.sh hierarchical organization
- **Fully idempotent** - Safe to re-run multiple times
## Usage
**Simple command:**
```bash
yarn migrate:v2
```
**Manual steps (if needed):**
1. **Run complete migration:**
```bash
node scripts/migrate-v2-docs.js
```
2. **Copy images (if not already present):**
```bash
cp -r helm2/docs/images static/img/helm2
```
The migration command handles all steps automatically including:
- Cloning helm2 source repository
- Generating navigation structure
- Processing and copying files
- Applying link path corrections
## What It Does
The migration process includes:
1. **Fresh Start**: Clears existing v2 documentation and helm2 source
2. **Source Setup**: Clones Helm v2 repository (release-2.17 branch)
3. **Structure Analysis**: `scripts/v2/menu-generate.js` fetches and analyzes complete v2.helm.sh sidebar structure
4. **Content Processing**: `scripts/v2/copy-files.js` processes all files:
- Removes UTF-8 BOM characters
- Replaces image paths from `(images/` to `(/img/helm2/`
- Removes first H2 headings from helm command files
- Creates proper Docusaurus frontmatter with hierarchical positioning
- Adds missing helm commands (helm get notes, helm inspect readme)
5. **Link Correction**: `scripts/util/href-diffs-process.js` fixes broken internal links using `scripts/v2/href-diffs.json`
6. **Structure Creation**: Generates `versioned_docs/version-2/` with proper category organization
7. **Index Generation**: Creates `index.mdx` landing page with DocCardList component
## Output Structure
```
versioned_docs/version-2/ # Complete Docusaurus v2 docs
├── index.mdx # Landing page (position 1)
├── using_helm/ # Basic usage (position 2)
├── helm/ # CLI reference (position 3, 45 commands)
├── developing_charts/ # Chart development (position 4)
├── chart_template_guide/ # Template guides (position 5)
├── chart_best_practices/ # Best practices (position 6)
└── [5 top-level files] # architecture, developers, etc. (positions 7-11)
static/img/helm2/ # All migrated images
```
## Validation & Maintenance
**Verify after running:**
- Navigation matches v2.helm.sh structure with correct positioning (1,2,3,4,5,6,7-11)
- All images display correctly (`/img/helm2/` paths)
- Index files use parent category labels in sidebar
- First H2 headings removed from all helm command files
- Netlify redirects handle v2 → v3 category mapping
**Key paths:**
- Migration orchestrator: `scripts/migrate-v2-docs.js`
- Component scripts: `scripts/v2/menu-generate.js`, `scripts/v2/copy-files.js`
- Link correction: `scripts/util/href-diffs-process.js` with `scripts/v2/href-diffs.json`
- Generated data: `scripts/v2/menu.json`
- Source: `helm2/docs/` (auto-cloned)
- Output: `versioned_docs/version-2/` and `static/img/helm2/`
The migration is fully automated and idempotent - safe to re-run multiple times.
**Link path corrections:** Managed via `scripts/v2/href-diffs.json` - add entries here to fix additional broken links discovered in migrated content.
================================================
FILE: HELM3-TO-DOCUSAURUS.md
================================================
# Helm v3 to Docusaurus Migration Guide
Automated migration of Helm v3 documentation from existing Hugo content to Docusaurus versioned documentation format, applying comprehensive text transformations and link corrections.
## Key Features
- **Hugo to Docusaurus Conversion** - Transforms Hugo content structure to Docusaurus versioning
- **Hugo Shortcode Processing** - Converts `{{< ref "path" >}}` and `{{< highlightexamplego file="path" >}}` to standard links
- **Link Path Correction** - Fixes broken internal links using shared href processing utility
- **Alias Removal** - Removes Hugo aliases that conflict with Docusaurus routing
- **SDK Section Migration** - Imports and processes Go SDK examples with transformations
- **DocCardList Integration** - Adds navigation cards to index pages
- **Netlify Redirect Generation** - Creates redirects for removed aliases
- **Fully idempotent** - Safe to re-run multiple times
## Usage
**Simple command:**
```bash
yarn migrate:v3
```
**Manual steps (if needed):**
1. **Run complete migration:**
```bash
node scripts/migrate-v3-docs.js
```
The migration command handles all steps automatically including:
- Fresh start with clean slate
- Moving docs from Hugo structure to Docusaurus versioning
- Processing Hugo shortcodes and text replacements
- Applying link path corrections
- Removing conflicting aliases
- Adding navigation components
## What It Does
The migration process includes:
1. **Fresh Start**: Clears existing v3 documentation and restores from git main
2. **Docusaurus Setup**: Creates `versioned_docs/version-3/` structure
3. **Content Migration**: Moves docs from `content/en/docs/` to versioned structure
4. **Content Cleanup**: Deletes files marked with deprecated frontmatter section
5. **File Renaming**: Converts `index.md` files to `index.mdx` for React component support
6. **Frontmatter Conversion**: Replaces Hugo `weight` with Docusaurus `sidebar_position`
7. **Index Metadata**: Adds proper metadata to main index file
8. **SDK Migration**: `scripts/v3/migrate-sdk-section.js` imports Go SDK examples with transformations
9. **Text Processing**: `scripts/util/util-text-replacements.js` handles:
- Hugo shortcode conversion (`{{< ref "path" >}}` → `path`)
- Link path correction using `scripts/v3/href-diffs.json`
10. **Helm File Processing**: `scripts/v3/process-helm-files.js` removes redundant H2 headings and adds metadata
11. **Alias Removal**: `scripts/v3/remove-aliases.js` removes conflicting Hugo aliases
12. **Navigation Enhancement**: `scripts/util/util-migration.js` adds DocCardList components to index pages
13. **Redirect Generation**: `scripts/v3/add-netlify-redirects.js` creates redirects for removed aliases
## Output Structure
```
versioned_docs/version-3/ # Complete Docusaurus v3 docs
├── index.mdx # Landing page with DocCardList
├── intro/ # Introduction section
├── topics/ # Advanced topics
├── chart_template_guide/ # Template development
├── chart_best_practices/ # Best practices
├── community/ # Community resources
├── helm/ # CLI reference
└── [other sections] # Additional documentation areas
netlify.toml # Updated with v3 redirects
```
## Validation & Maintenance
**Verify after running:**
- Navigation structure matches expected Docusaurus layout
- Hugo shortcodes converted to standard markdown links
- All `index.mdx` files have proper DocCardList components
- CLI reference files have clean headings (no redundant H2s)
- Netlify redirects handle removed aliases
- No Hugo aliases remain in frontmatter
**Key paths:**
- Migration orchestrator: `scripts/migrate-v3-docs.js`
- Component scripts: `scripts/v3/migrate-sdk-section.js`, `scripts/v3/process-helm-files.js`, `scripts/v3/remove-aliases.js`, `scripts/v3/add-netlify-redirects.js`
- Text processing: `scripts/util/util-text-replacements.js`, `scripts/util/util-migration.js`
- Link correction: `scripts/util/href-diffs-process.js` with `scripts/v3/href-diffs.json`
- Source: `content/en/docs/` (Hugo structure)
- Output: `versioned_docs/version-3/` (Docusaurus structure)
The migration is fully automated and idempotent - safe to re-run multiple times.
**Link path corrections:** Managed via `scripts/v3/href-diffs.json` - add entries here to fix additional broken links discovered in migrated content.
**SDK examples:** The migration includes Go SDK examples from `sdkexamples/` with automatic transformations for Docusaurus compatibility.
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2017 Microsoft Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: Makefile
================================================
SITE_URL ?= http://localhost:3000
BASE_URL ?= /
clean:
rm -rf node_modules/ build/ .docusaurus .cache-loader
install:
yarn install --frozen-lockfile
build: clean install
SITE_URL=$(SITE_URL) BASE_URL=$(BASE_URL) yarn run build
# Cache-friendly install - only runs if dependencies missing or yarn.lock is newer
install-if-needed:
@if [ ! -f "node_modules/.bin/docusaurus" ] || [ "yarn.lock" -nt "node_modules" ]; then \
echo "Installing dependencies..."; \
yarn install --frozen-lockfile; \
else \
echo "Dependencies up to date, skipping install"; \
fi
# Cache-friendly build for Netlify - preserves cached directories
netlify-build: install-if-needed
SITE_URL=$(SITE_URL) BASE_URL=$(BASE_URL) yarn run build
.PHONY: sdkexamples
sdkexamples:
make -C sdkexamples
serve:
SITE_URL=$(SITE_URL) BASE_URL=$(BASE_URL) yarn run start --host 0.0.0.0
IMAGE_NAME ?= helm-www
image:
podman build -t $(IMAGE_NAME) -f Containerfile .
# Default target executed inside the container if none specified
CONTAINER_TARGET = $(if $(filter-out image-run,$(MAKECMDGOALS)),$(filter-out image-run,$(MAKECMDGOALS)),serve)
# Podman run: pass env for both build and serve targets
image-run: image
podman run --rm --init -it \
-p 3000:3000 \
-v $(PWD):/src:Z \
-e BASE_URL="$(BASE_URL)" \
-e SITE_URL="$(SITE_URL)" \
--name $(IMAGE_NAME)-run \
$(IMAGE_NAME) $(CONTAINER_TARGET)
================================================
FILE: OWNERS
================================================
maintainers:
- gjenkins8
- karenhchu
- mattfarina
- paigecalvert
- scottrigby
- technosophos
- TerryHowe
- yxxhero
emeritus:
- angellk
- bacongobbler
- bridgetkromhout
- flynnduism
- hickeyma
- jdolitsky
- thomastaylor312
================================================
FILE: README-ko.md
================================================

여기서 [헬름](https://github.com/helm/helm) 프로젝트의 웹 사이트 [helm.sh](https://helm.sh/)를 구성하는 모든 것을 확인할 수 있습니다. 문서를 편집하거나 웹 사이트 버그를 보고하거나 새 블로그 게시물을 작성하려는 경우 잘 찾아오셨습니다!
## 개발
Helm.sh는 간단한 [Docusaurus](https://docusaurus.io/) 정적 사이트입니다. 웹 사이트를 로컬에서 실행하려면 먼저 의존성을 설치해야 합니다.
```
yarn
```
그런 다음 사이트를 로컬에서 컴파일하고 실행할 수 있습니다.
```
yarn start
```
## 배포 [](https://app.netlify.com/sites/helm-merge/deploys)
변경 사항을 `main` 브랜치에 병합하면 [넷틀리파이(Netlify)](https://app.netlify.com/sites/helm-merge/deploys)에 자동으로 배포됩니다. 빌드 로그는 [여기](https://app.netlify.com/sites/helm-merge/deploys)에서 확인할 수 있습니다.
---
## 기여
누구나 풀 리퀘스트(PR)를 제출하여 Helm.sh을 편집할 수 있습니다. 커밋을 위해서는 서명이 필요합니다. [기여 가이드](https://github.com/helm/helm/blob/main/CONTRIBUTING.md#sign-your-work)를 참조하세요.
풀 리퀘스트는 병합되기 전에 [관리자](https://github.com/helm/helm-www/blob/main/OWNERS)의 승인이 필요합니다.
### 헬름 문서를 편집하는 방법
헬름 v4 문서는 이 저장소의 `/docs/` 에 있습니다. 헬름 v4 문서의 사이드바는 `sidebars.js`에 있습니다.
헬름 v3 문서는 `versioned-docs/version-3` 에 있습니다. 헬름 v3 문서의 사이드바는 `versioned-sidebars/sidebars-version-2.js`에 있습니다.
이전 버전의 경우, [기본 헬름 저장소](https://github.com/helm/helm/tree/dev-v2/docs)의 dev-v2 브랜치를 참조합니다.
### 헬름 CLI 레퍼런스 문서 업데이트
헬름 CLI 명령어 목록에 대한 문서는 기본 헬름 프로젝트 저장소에서 [내보내지고](https://github.com/helm/helm/blob/a6b2c9e2126753f6f94df231e89b2153c2862764/cmd/helm/root.go#L169), [여기](https://helm.sh/docs/helm)에서 레퍼런스로 제공됩니다.
문서를 업데이트하려면 다음을 수행해야 합니다.
1. `helm plugin uninstall` 을 실행하여 현재 설치된 모든 플러그인을 제거합니다.
2. `content/en/docs/helm/` 으로 이동합니다.
3. 기존 마크다운 파일을 대체하여 새로운 마크다운 문서 파일을 생성하기 위해 `HOME='~' helm docs --type markdown --generate-headers`를 실행합니다. **참고:** 문서를 빌드하려는 helm 버전을 실행해야 합니다 (예: 올바른 태그를 체크아웃하고 빌드)
4. 변경 내용을 커밋하고 PR을 만들어 웹 사이트를 업데이트합니다.
### 블로그 게시물을 작성하는 방법
블로그 게시물은 풀 리퀘스트를 통해 만들어집니다. 다음 단계를 사용하여 추가합니다.
1. `/blog/` 디렉터리에 게시 날짜와 제목이 파일명인 새 파일을 추가합니다. 파일은 마크다운 형식이어야 합니다. 형식 예시는 기존 제목을 참조합니다.
2. 이 형식을 사용하여 파일에 헤더 메타데이터를 추가합니다.
```yaml
---
title: "Blog Title"
slug: "blog-slug"
# from /blog/authors.yml
authors: ["firstlast"]
date: "YYYY-MM-DD"
---
```
3. 이 저자의 첫 번째 블로그 게시물인 경우, `/blog/authors.yml`을 업데이트하여 새 저자 레코드를 추가합니다.
```yaml
# authors.yml
johndoe:
name: John Doe
image_url: https://github.com/johndoe.png
page: true
socials:
github: johndoe
linkedin: johndoe
website: http://johndoe.com/
```
4. `---` 아래에 마크다운으로 내용을 추가합니다. 이 섹션에는 제목을 포함할 필요가 없습니다.
5. 모든 이미지는 `/blog/images/` 디렉토리에 두어야 합니다. 이미지 크기를 줄이려면 무손실 압축되어야 합니다. [ImageOptim](https://imageoptim.com/)와 같은 도구를 사용할 수 있습니다.
6. 블로그 인덱스 페이지의 내용을 요약하려면 마크다운 파일에 `<!--truncate-->` 구분자를 넣습니다. 이렇게 하면 _더 읽기_ 링크로 내용 끝을 자릅니다.
블로그 PR은 병합되기 전에 주요 헬름 [관리자](https://github.com/helm/helm/blob/main/OWNERS)들의 승인이 필요합니다.
### 버전 관리
이 저장소의 다음 파일들이 버전 관리를 제어하는 데 사용됩니다:
- 버전 관리된 문서는 `versioned_docs`에 있습니다.
- 각 버전에 해당하는 사이드바는 `versioned_sidebars`에 있습니다.
- 버전 관리 동작은 `docusaurus.config.js` 파일에서 관리됩니다:
```js
export default {
presets: [
'@docusaurus/preset-classic',
docs: {
// lastVersion = 최신 릴리스 버전 (/versioned_docs의 특정 버전 또는 'current')
// 최신으로 나열되지 않은 버전의 경우, 사용자가 오래되었거나 사전 릴리스 문서를 보고 있다는 경고 배너가 자동으로 표시됩니다
lastVersion: '3',
versions: {
// current = 최상위 /docs 디렉토리의 문서. 이것들은 사전 릴리스이거나 최신 릴리스 버전일 수 있습니다
// label = 네비게이션 바 드롭다운에 표시되는 버전 레이블
current: { label: '4.0.0-alpha.1 🚧' },
// 번호가 매겨진 버전은 /versioned_docs의 디렉토리에 해당합니다
'3': { label: '3.19.0' },
'2': { label: '2.17.0' },
},
},
],
};
```
- 사용 가능한 버전 목록은 `versions.json`에서 유지됩니다.
아래 표는 이 저장소의 버전 관리된 문서에 매핑되는 버전 레이블과 URL 경로를 설명합니다:
| 저장소 경로 | 버전 | URL 경로 |
| -------------------------------------- | -------------------- | ------------------- |
| `versioned_docs/version-2/filename.md` | 2.17.0 | /docs/2/filename |
| `versioned_docs/version-3/filename.md` | 3.19.0 (최신) | /docs/filename |
| `docs/filename.md` | 4.0.0-alpha.1 (현재) | /docs/next/filename |
#### 사전 릴리스 문서를 GA로 이동하는 방법
Docusaurus는 _사전 릴리스_ (알파, 베타) 문서 게시를 지원합니다. 기본적으로 사전 릴리스 문서는 helm.sh/docs/next에서 게시되며 이 저장소의 최상위 `/docs` 디렉토리에서 제공됩니다. 또한 Docusaurus는 사용자가 릴리스되지 않은 문서를 보고 있다는 것을 알리기 위해 모든 사전 릴리스 문서에 자동으로 배너를 적용합니다.
Helm의 사전 릴리스 버전이 GA로 승격될 때, 사전 릴리스 문서를 helm.sh/docs/next에서 helm.sh/docs로 이동하려면 다음을 수행합니다:
1. `docusaurus.config.js`를 업데이트하여 `lastVersion`을 `'current'`로 설정합니다. 이렇게 하면 메인 `/docs` 폴더의 내용이 helm.sh`/docs`에 게시됩니다.
```js
// docusaurus.config.js
lastVersion: 'current',
```
1. `current` 버전의 네비게이션 바 `label`을 업데이트합니다. 예를 들어:
```js
// docusaurus.config.js
current: { label: '4.0.0' },
```
1. 변경사항을 테스트하기 위해 로컬 미리보기를 시작합니다. "릴리스되지 않음" 배너가 현재 버전에서 제거되고 현재 버전이 helm.sh/docs/next가 아닌 helm.sh/docs에서 사용할 수 있게 되는 것을 확인해야 합니다.
#### 새로운 사전 릴리스 버전을 만드는 방법
새 버전 만들기는 `/docs` 디렉토리 내용을 `versioned_docs`의 버전 관리된 폴더로 복사하는 것을 의미합니다. 새로운 _주요_ 사전 릴리스 버전의 문서를 게시할 준비가 되었을 때 버전을 만듭니다. 이는 일반적으로 Helm의 새로운 알파 버전이 개발되고 문서화할 준비가 되었을 때입니다.
**참고:** Helm의 사전 릴리스 버전이 개발되고 문서화할 준비가 될 때까지는 새 버전 만들기를 권장하지 않습니다. 그렇지 않으면 문서를 두 곳에서 유지해야 하므로(둘 다 `/docs`와 최신 `/versioned_docs` 폴더), 관리자가 동기화 상태를 유지하기 위해 추가 작업을 해야 합니다. 대신 아래의 *사전 릴리스 문서를 GA로 이동하는 방법*을 참조하세요.
새 버전을 만들려면:
1. `<version>`이 주요 Helm 버전에 해당하는 정수인 `yarn docusaurus docs:version <version>`을 실행합니다. 예를 들어, Helm v5에 대한 새로운 사전 릴리스 문서를 게시하려면 v4 문서 내용을 새로운 `version-4` 폴더로 복사하기 위해 `yarn docusaurus docs:version 4`를 실행할 수 있습니다.
이 명령은 다음을 수행합니다:
- 전체 `docs/` 폴더 내용을 새로운 `versioned_docs/version-<version>/` 폴더로 복사합니다.
- `versioned_sidebars/version-<version>-sidebars.json`에 버전 관리된 사이드바 파일을 생성합니다.
- `versions.json`에 새 버전 번호를 추가합니다.
1. `docusaurus.config.js` 파일을 업데이트합니다:
1. `lastVersion`을 최신 GA 버전으로 설정합니다. 이렇게 하면 helm.sh/docs의 문서가 최신 versioned_docs 폴더에서 제공됩니다. 그리고 helm.sh/docs/next의 문서가 메인 `/docs` 폴더에서 제공됩니다.
예를 들어, Helm v4 문서를 `versioned_docs/version-4/` 디렉토리로 만들고 Helm v5.0.0-alpha.1에 대한 사전 릴리스 문서를 게시하려면 `lastVersion`을 `'4'`로 설정합니다.
1. `current` 버전의 네비게이션 바 `label`을 업데이트합니다. 예를 들어, 현재(사전 릴리스) 버전을 `5.0.0-alpha.1`로 레이블링하려면 다음과 같이 레이블을 업데이트합니다:
```js
current: { label: '5.0.0-alpha.1 🚧' },
```
1. 변경사항을 테스트하기 위해 로컬 미리보기를 시작합니다. 드롭다운에서 새 버전을 보고, helm.sh/docs/next에서 사전 릴리스 문서에 액세스할 수 있으며, 모든 사전 릴리스 문서 상단에 "릴리스되지 않음" 배너가 표시되는 것을 확인해야 합니다.
새 문서 버전 만들기에 대한 자세한 정보는 Docusaurus 문서의 [버전 관리](https://docusaurus.io/docs/versioning)를 참조하세요.
### 국제화 & 번역
**우리 사이트와 문서의 컨텐츠 번역을 환영합니다** 전 세계에서 Helm에 대한 접근을 확장하는 데 도움이 되도록 합니다.
Helm.sh는 여러 언어를 지원합니다. 해외 사용자를 위한 컨텐츠 번역과 구성 가이드는 [헬름 문서 현지화](/community/localization)를 참조하세요.
---
### 행동 강령
헬름 커뮤니티 참여는 헬름 [행동 강령](https://github.com/helm/helm/blob/main/code-of-conduct.md)을 따릅니다.
### 감사합니다!
웹 사이트 및 문서 기여에 감사드립니다! :clap:
================================================
FILE: README.md
================================================

This is where you'll find all of the assets that make up [helm.sh](https://helm.sh/), the website for the [Helm](https://github.com/helm/helm) project. If you're looking to edit docs, report a website bug, or write a new blog post, you've come to the right place!
## Development
Helm.sh is a simple [Docusaurus](https://docusaurus.io/) static site. To run the website locally, you'll need to first install the dependencies:
```
yarn
```
You can then compile and run the site locally:
```
yarn start
```
## Deployment [](https://app.netlify.com/sites/helm-merge/deploys)
Changes are automatically deployed to [Netlify](https://app.netlify.com/sites/helm-merge/deploys) when merged to `main`. Build logs can be found [here](https://app.netlify.com/sites/helm-merge/deploys).
---
## Contributing
Anyone can submit a PR to edit Helm.sh. We require commits be signed - please refer to the [contributing guide](https://github.com/helm/helm/blob/main/CONTRIBUTING.md#sign-your-work).
Pull requests require [maintainer](https://github.com/helm/helm-www/blob/main/OWNERS) approval before merge.
### Style Guide
For Helm documentation style guidelines, see [Documentation Style Guide](style-guide.md).
### How to Edit The Helm Docs
Helm v4 documentation is located in this repo under `/docs/`. The sidebar for the Helm v4 docs is located at `sidebars.js`.
Helm v3 documentation is located under `versioned-docs/version-3`. The sidebar for the Helm v3 docs is located at `versioned-sidebars/sidebars-version-2.js`
For earlier versions, see the dev-v2 branch of the main Helm repo [here](https://github.com/helm/helm/tree/dev-v2/docs).
### Community Documentation
The Community section imports content from the [helm/community](https://github.com/helm/community) repository. To manage these imported docs:
#### Download/Update Community Docs
```bash
yarn download-remote-community
```
This command fetches the latest community documentation from the helm/community repository and applies transformations for proper integration.
#### Clear Community Docs
```bash
yarn clear-remote-community
```
This removes the imported community documentation files (useful before re-importing or for troubleshooting).
The imported docs configuration is defined in `docusaurus.config.js` under `customFields.communityDocs`. See `ARCHITECTURAL_DECISIONS.md` for details on the implementation.
### Updating the Helm CLI Reference Docs
The documentation for the list of Helm CLI Commands are [exported](https://github.com/helm/helm/blob/a6b2c9e2126753f6f94df231e89b2153c2862764/cmd/helm/root.go#L169) from the main helm project repo and rendered [here on the website](https://helm.sh/docs/helm) as a reference.
#### Using the automated script
The automated script regenerates and properly formats the CLI documentation:
```bash
node scripts/regenerate-cli-docs.mjs <helm-version> <target-directory>
# Examples:
node scripts/regenerate-cli-docs.mjs v3.19.0 versioned_docs/version-3 # → versioned_docs/version-3/helm/
node scripts/regenerate-cli-docs.mjs v4.0.0-rc.1 docs # → docs/helm/
node scripts/regenerate-cli-docs.mjs v4.0.0 versioned_docs/version-4 # → versioned_docs/version-4/helm/
```
The script will:
- Download the specified Helm version
- Generate documentation in `<target-directory>/helm/`
- Apply all necessary post-processing (frontmatter cleanup, link conversion, etc.)
### How to Write a Blog Post
Blog posts are created via pull requests. The following steps are used to add them:
1. Add a new file to the `/blog/` directory whose name is the published date and the title. The files must be markdown formatted. See the existing titles for examples of the format
2. Add the header meta-data to the file using this format.
```yaml
---
title: "Blog Title"
slug: "blog-slug"
# from /blog/authors.yml
authors: ["firstlast"]
date: "YYYY-MM-DD"
---
```
3. If this is the first blog post by this author, update `/blog/authors.yml` to add a new author record.
```yaml
# authors.yml
johndoe:
name: John Doe
image_url: https://github.com/johndoe.png
page: true
socials:
github: johndoe
linkedin: johndoe
website: http://johndoe.com/
```
4. Add the content below the `---` as Markdown. The title does not need to be included in this section
5. Any images should be placed in the `/blog/images/` directory. Images should be losslessly compressed to reduce their size. Tools, such as [ImageOptim](https://imageoptim.com/), can be used.
6. To summarize the content on the blog index page, insert a `<!--truncate-->` break in your markdown. This will truncate the content with a _Read More_ link.
Blog PRs require approval from the core Helm [maintainers](https://github.com/helm/helm/blob/main/OWNERS) before merge.
### Versioning
The following files in this repo are used to control versioning:
- Versioned documentation is located in `versioned_docs`.
- The corresponding sidebar for each version is located in `versioned_sidebars`.
- Versioning behavior is managed in the `docusaurus.config.js` file:
```js
export default {
presets: [
'@docusaurus/preset-classic',
docs: {
// lastVersion = the latest released version (either a specific version from /versioned_docs or 'current')
// For any versions not listed as the latest, a banner is automatically displayed to warn users that they are viewing either old or pre-release docs
lastVersion: '3',
versions: {
// current = docs from the top-level /docs directory. These can be pre-release or the latest released version
// label = the version label displayed in the navbar dropdown
current: { label: '4.0.0-alpha.1 🚧' },
// numbered versions correspond to directories in /versioned_docs
'3': { label: '3.19.0' },
'2': { label: '2.17.0' },
},
},
],
};
```
- The list of available versions is maintained in `versions.json`.
The table below explains the version labels and URL paths that map to versioned docs in this repo:
| Repo Path | Version | URL Path |
| -------------------------------------- | ----------------------- | ------------------- |
| `versioned_docs/version-2/filename.md` | 2.17.0 | /docs/2/filename |
| `versioned_docs/version-3/filename.md` | 3.19.0 (latest) | /docs/filename |
| `docs/filename.md` | 4.0.0-alpha.1 (current) | /docs/next/filename |
#### How to move pre-release docs to GA
Docusaurus has support for publishing _pre-release_ (alpha, beta) documentation. By default, pre-release documentation is published at helm.sh/docs/next and is served from the top-level `/docs` directory in this repo. Additionally, Docusaurus automatically applies a banner to all pre-release documentation to notify users that they are viewing unreleased docs.
When a pre-release version of Helm is promoted to GA, do the following to move pre-release docs from helm.sh/docs/next to helm.sh/docs:
1. Update `docusaurus.config.js` to set `lastVersion` to `'current'`. This publishes the content of the main `/docs` folder to helm.sh`/docs`.
```js
// docusaurus.config.js
lastVersion: 'current',
```
1. Update the navbar `label` for the `current` version. For example:
```js
// docusaurus.config.js
current: { label: '4.0.0' },
```
1. Start a local preview to test your changes. You should see that the "unreleased" banner is removed from the current version, and that the current version is now available at helm.sh/docs, rather than at helm.sh/docs/next.
#### How to cut a new pre-release version
Cutting a new version refers to copying the full `/docs` directory contents to a versioned folder in `versioned_docs`. You cut a version when you are ready to publish a new _major_ pre-release version of the docs. This is usually when a new alpha version of Helm is being developed and is ready to be documented.
**Note:** Cutting a new version is _not_ recommend until a pre-release version of Helm is being developed and is ready to be documented. Otherwise, the docs will need to be maintained in two places (both `/docs` and the latest `/versioned_docs` folder), creating extra work for maintainers to make sure they stay in-sync. Instead, see _How to move pre-release docs to GA_ below.
To cut a new version:
1. Run `yarn docusaurus docs:version <version>`, where `<version>` is an integer that corresponds to a major Helm version. For example, when we publish Helm 4.0.0 we will run `yarn docusaurus docs:version 4`.
This command does the following:
- Copies the full `docs/` folder contents into a new `versioned_docs/version-<version>/` folder.
- Creates a versioned sidebars file in `versioned_sidebars/version-<version>-sidebars.json`.
- Appends the new version number to `versions.json`.
1. Update the `docusaurus.config.js` file:
1. Set `lastVersion` to to the latest GA version. This ensures that the docs at helm.sh/docs are served from the latest versioned_docs folders. And, the docs at helm.sh/docs/next are served from the main `/docs` folder.
For example, if you just cut the Helm v4 docs to a `versioned_docs/version-4/` directory, and want to publish pre-release docs for version Helm v5.0.0-alpha.1, then set `lastVersion` to `'4'`.
1. Update the navbar `label` for the `current` version. For example, to label the current (pre-release) version `5.0.0-alpha.1`, update the label as follows:
```js
current: { label: '5.0.0-alpha.1 🚧' },
```
1. Start a local preview to test your changes. You should see the new version in the dropdown, be able to access the pre-release docs at helm.sh/docs/next, and see an "unreleased" banner at the top of all the pre-released docs.
For more information about cutting new docs versions, see [Versioning](https://docusaurus.io/docs/versioning) in the Docusaurus documentation.
### Internationalization & Translation
**We welcome content translations** to our site and our docs, to help expand access to Helm around the world.
Helm.sh supports multiple languages. Please refer to the [Localizing Helm Documentation](https://helm.sh/docs/community/localization/) for a guide on translating and configuring content for international users.
---
### Code of Conduct
Participation in the Helm community is governed by the Helm [Code of Conduct](https://github.com/helm/helm/blob/main/code-of-conduct.md).
### Thank You!
We appreciate your contributions to our website and our documentation! :clap:
================================================
FILE: blog/2018-06-01-cncf.md
================================================
---
title: "Helm Enters the CNCF"
slug: "helm-enters-the-cncf"
authors: ["mattbutcher"]
date: "2018-06-01"
---
Today we are happy to announce that Helm has become an official top-level [CNCF](https://www.cncf.io/) project, joining the ranks of Prometheus, Linkerd, OpenTracing, and others. Helm will enter the CNCF as an incubating project as we continue to work on the next-generation Helm 3 cloud-native package manager. <!-- truncate -->
We are grateful to the Helm community, which has diligently contributed to the core Helm project, to the official charts repository, Monocular, to Chart Museum, and to other Helm-related projects. As a CNCF project, we look forward to expanding the Helm ecosystem. Over the coming months, we will be re-organizing as we ease our way out of the Kubernetes org and into CNCF.
Helm began as an internal hackathon project at Deis, and we made our first public release at the original KubeCon. Now, only a few short years later, the Helm ecosystem has seen 3,500 contributors spanning 566 companies. We have made more than 50 releases, and see over 50,000 downloads per month. And last February, we had the [inaugural Helm Summit](https://www.youtube.com/playlist?list=PLVt9l4b66d5EjjJ_VBe_5tEiJrAGLsDb-), where 179 developers, operators, and SREs gathered in Portland, Oregon to talk about the future of the project.
Thank you for making the Helm community a welcoming place where people from all skill levels can participate in this emerging cloud-native landscape! We are excited to improve Helm as the package manager for the cloud-native landscape.
We would like to conclude with special thanks to Brian Grant for sponsoring the CNCF proposal, and Matt Farina for writing the proposal and guiding it through the process.
================================================
FILE: blog/2018-07-23-bring-helm-home.md
================================================
---
title: "Bringing Helm Home"
slug: "bringing-helm-home"
authors: ["mattbutcher"]
date: "2018-07-23"
---
Earlier this summer, we announced that [Helm joined the CNCF](https://www.cncf.io/blog/2018/06/01/cncf-to-host-helm/) as an official incubating project. Part of that transition involves moving the Helm project out of the Kubernetes GitHub org and into its org. We’re excited to announce that we’ve completed that process. As of last week, we have moved the Helm code repository to [https://github.com/helm/helm](https://github.com/helm/helm). <!-- truncate -->
Fun fact: This is the same GitHub repository where the Helm project first started. When we started Helm in 2015, we created the Helm organization in GitHub. But thanks to the enthusiastic support of the Kubernetes community, we migrated the entire codebase into the Kubernetes org in 2016. As a separate CNCF project with its own vibrant and growing ecosystem, it makes sense to once again have Helm back home in its own GitHub org.
Since the first beta release of Helm 2.0, we have pledged to keep Helm stable for users and developers alike. Before moving Helm into its new GitHub home, we tested to make sure that this would not break existing builds or existing tooling. Thanks to GitHub’s excellent support for repository moving, we believe we have maintained our stability promise.
Along with the main Helm source code repo, we have moved a few other Helm related repositories including [Charts](https://github.com/helm/charts), [Monocular](https://github.com/helm/monocular), [Community](https://github.com/helm/community), [ChartMuseum](https://github.com/helm/chartmuseum), and other Helm projects all under the official CNCF Helm GitHub org. This means the community can find all Helm related items under one GitHub org.
This isn’t our only big news since joining CNCF. Helm 3 is now underway, as developers begin adding new features. And soon we will announce a minor process change that will simplify the process of becoming a Helm contributor as we switch from requiring a CLA to a DCO.
================================================
FILE: blog/2018-07-24-helm-emeritus-rimus.md
================================================
---
title: "Helm Emeritus Maintainer Rimas Mocevicius"
slug: "helm-emeritus-maintainer-rimas-mocevicius"
authors: ["mattbutcher"]
date: "2018-07-24"
---
Rimas Mocevicius ([rimusz](https://github.com/rimusz)) has become the fourth Helm Emeritus Maintainer.<!-- truncate --> Rimas is one of the three original founders of Helm. Author of [CoreOS Essentials](https://rimusz.net/coreos-essential-book/) (Packt, 2016) and creator of [Kube Solo](https://github.com/TheNewNormal/kube-solo-osx), Rimas is a long-time member of the Kubernetes ecosystem. Rimas was an active contributor on Helm Classic, and has been a leading voice in the community ever since.
Check out Rimas' latest blog post on [Tillerless Helm](https://rimusz.net/tillerless-helm).
================================================
FILE: blog/2018-08-27-helm-switch-dco.md
================================================
---
title: "Helm Moves To DCO"
slug: "helm-dco"
date: "2018-08-27"
---
When Helm was part of the Kubernetes project it, like the rest of Kubernetes, used the [CNCF Contributor License Agreement (CLA)](https://github.com/cncf/cla). This served Helm well for years. But, most of the CNCF projects use a [Developers Certificate of Origin (DCO)](https://developercertificate.org/) instead of a CLA. The exceptions are Kubernetes and gRPC. Upon Helm becoming a CNCF project itself we were asked if we wanted to move Helm to a DCO. After some careful consideration and a little research, the Helm maintainers voted to move to a DCO. <!-- truncate -->
## What Does This Solve? Why Switch?
Making a change like this should have a good reason and we have one. It is often easier to get started contributing under a DCO than a CLA.
When one is developing software for a company they need to have the company sign the Corporate CLA prior to submitting contributions. That means there is a step after the business decides to contribute where legal documents need to be signed and exchanged. Once this is done there are steps to associate people with those legal documents. All of this takes time. In some companies this process can take weeks or longer.
We wanted to make it simpler to contribute.
## What Is A DCO?
A DCO is lightweight way for a developer to certify that they wrote or otherwise have the right to submit code or documentation to a project. The way a developer does this is by adding a `Signed-off-by` line to a commit. When they do this they are agreeing to the DCO.
The full text of the DCO can be found at https://developercertificate.org. It reads:
> Developer Certificate of Origin
> Version 1.1
>
> Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
> 1 Letterman Drive
> Suite D4700
> San Francisco, CA, 94129
>
> Everyone is permitted to copy and distribute verbatim copies of this
> license document, but changing it is not allowed.
>
>
> Developer's Certificate of Origin 1.1
>
> By making a contribution to this project, I certify that:
>
> (a) The contribution was created in whole or in part by me and I
> have the right to submit it under the open source license
> indicated in the file; or
>
> (b) The contribution is based upon previous work that, to the best
> of my knowledge, is covered under an appropriate open source
> license and I have the right under that license to submit that
> work with modifications, whether created in whole or in part
> by me, under the same open source license (unless I am
> permitted to submit under a different license), as indicated
> in the file; or
>
> (c) The contribution was provided directly to me by some other
> person who certified (a), (b) or (c) and I have not modified
> it.
>
> (d) I understand and agree that this project and the contribution
> are public and that a record of the contribution (including all
> personal information I submit with it, including my sign-off) is
> maintained indefinitely and may be redistributed consistent with
> this project or the open source license(s) involved.
An example signed commit message might look like:
> An example commit message
>
> Signed-off-by: Some Developer <somedev@example.com>
Git has a flag that can sign a commit for you. An example using it is:
```
$ git commit -s -m 'An example commit message'
```
In the past, once someone wanted to contribute they needed to go through the CLA process first. Now they just need to signoff on the commit.
## FAQs
### What About Existing Pull Requests Under The CLA
If a pull request was previously submitted under the CLA we will still honor those. All new contributions will need to be under the DCO and any pull requests that are updated will need to conform to the DCO prior to merging.
### What About The Other Elements Of A CLA
The CNCF CLA has provisions for some areas other than right to contribute the code. For example, there is an explicit patent grant and that the contribution is "on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND". The CNCF views elements like these as already being covered elsewhere. For example, through the code contributions being under the Apache 2 license which has patent grant and warranty clauses.
### What About Commits With Multiple Contributors
If more than one person works on something it's possible for more than one person to sign off on it. For example,
> An example commit message
>
> Signed-off-by: Some Developer <somedev@example.com>
> Signed-off-by: Another Developer <anotherdev@example.com>
### If I Contribute As An Employee Does My Employer Need To Sign Anything
Nope. The DCO assumes you are authorized to submit the code. This is what makes the contributor experience simpler for many people.
### What If I Forget To Sign-off On A Commit
There is a DCO check, similar to the previous CLA check, that will cause the status of the pull requests to be listed as failed. This will remind everyone that the commit was not signed off.
To update the last commit message with a sign off you can use the command:
```
$ git commit --amend -s
```
The `-s` flag is short for `--signoff`.
If you need to amend older commit message the process is a little more detailed. [GitHub has a writeup detailing on changing commit messages](https://help.github.com/articles/changing-a-commit-message/) that deals with numerous different cases.
================================================
FILE: blog/2018-09-07-new-gov-and-elections.md
================================================
---
title: "New Governance And Elections"
slug: "new-gov-and-elections"
date: "2018-09-07"
---
Being a top level incubating CNCF project requires having a governance structure to ensure that there is a publicly documented process for making decisions regarding the project and the community. While Helm was under Kubernetes, we relied on Kubernetes governance. As part of the transition to CNCF, the Helm project is required to have its own governance structure. To handle this we set up a [provisional governance](https://github.com/helm/community/blob/aa0586011786dfbc3993e7edd959a841241c96e3/governance/provisional-governance.md) with a goal of creating a long term one. After a few months we are happy to announce that the new governance structure has been written and approved. <!-- truncate -->
The gist of the new governance is that it organizes those responsible into a couple groups (org and project maintainers), spells out their responsibilities, and provides for decision making processes. You can read all the details in the [governance doc (here)](https://github.com/helm/community/blob/main/governance/governance.md).
## Two Types of Maintainers
The new governance has two types of maintainers. **Project Maintainers** are those who maintain the code, documentation, websites, and so forth. There are currently several groups of maintainers for Helm core, Charts, ChartMuseum, Monocular, and Web/Docs. These are the same people who have been maintaining this work.
The second type of maintainer is the **Helm Org Maintainer**. These individuals are responsible for elements such as the scope, vision, brand, code of conduct, owning security issues, finances, and other aspects of this nature.
## Next Step: Selecting Helm Org Maintainers
The next step in the process is to select the initial Helm Org Maintainers. To handle this selection we are using the documented process in the governance. _Anyone who has contributed to the Helm GitHub organization can nominate one of the Project Maintainers to be a Helm Org Maintainer._ This includes the Project Maintainers of Helm core, Charts, ChartMuseum, etc. The nomination period will be open for three weeks (closing on 9/28 at 12pm PT). We wanted Helm Org Maintainers to be project maintainers so that they have shown they are vested in Helm by their actions.
After that the project maintainers will vote. How that vote works will depend on the number of nominated individuals, who they work for as no one company can have a majority of members, and some other rules.
To provide for a diverse representation from the projects in the initial selection of Helm Org Maintainers the selected folks will include 3 Representatives from the Helm core project, 2 Representative from the Charts project, and 2 Representatives representing another Helm project. The initial election will create a total of 7 Helm Org Maintainers. The length of their terms is open ended and how changes happen is documented in the governance.
If you have questions about the process, or how to nominate someone, please use the [Helm mailing list](https://lists.cncf.io/g/cncf-helm).
================================================
FILE: blog/2018-09-25-chart-testing-intro.md
================================================
---
title: "Using the Community Chart Testing Tools Yourself"
slug: "chart-testing-intro"
date: "2018-09-25"
---
The Helm community charts, [available as the stable and incubator repositories](https://github.com/helm/charts), have long had testing. That testing has grown and improved a significant amount in the past year; from Helm linting and testing if an application runs in a cluster to now include YAML linting, some validation on maintainers, `Chart.yaml` schema validation, tests on chart version increments, and more. <!-- truncate -->
These testing tools are useful for more than the community charts. They could be used in development workflows, in other testing systems, and for private charts. To make the testing more accessible we (mostly [Reinhard Nägele](https://github.com/unguiculus/)) refactored the tools into a container image that can be run outside of the community charts testing infrastructure.
This new image is now available as the [Chart Testing project](https://github.com/helm/chart-testing). This project is built and maintained by the Helm Charts Maintainers, powers the community chart testing process, and is being used elsewhere.
## Example: Locally on Mac
One of the easiest ways to take a look at it is to try it out locally. To aid with that, one of the [examples provided by the project shows you how to use it with Docker for Mac](https://github.com/helm/chart-testing/tree/main/examples/docker-for-mac) with the [charts repository](https://github.com/helm/charts). An easy way to try it out is to make a change to a chart and run the following command from the root of the charts directory:
$ /path/to/chart-testing/examples/docker-for-mac/my_test.sh
To illustrate this I added a tag in the `Chart.yaml` file of the mariadb chart without incrementing the chart version. Running the test produced the following output:
Cluster "docker-for-desktop-cluster" set.
Cluster "docker-for-desktop-cluster" set.
Switched to context "docker-for-desktop".
--------------------------------------------------------------------------------
Environment:
REMOTE=k8s
TARGET_BRANCH=master
CHART_DIRS=stable incubator
EXCLUDED_CHARTS=common
CHART_REPOS=incubator=https://kubernetes-charts-incubator.storage.googleapis.com/
TIMEOUT=600
LINT_CONF=/testing/etc/lintconf.yaml
CHART_YAML_SCHEMA=/testing/etc/chart_schema.yaml
VALIDATE_MAINTAINERS=true
GITHUB_INSTANCE=https://github.com
CHECK_VERSION_INCREMENT=true
--------------------------------------------------------------------------------
Charts to be installed and tested: stable/mariadb
Initializing Helm client...
Creating /root/.helm
Creating /root/.helm/repository
Creating /root/.helm/repository/cache
Creating /root/.helm/repository/local
Creating /root/.helm/plugins
Creating /root/.helm/starters
Creating /root/.helm/cache/archive
Creating /root/.helm/repository/repositories.yaml
Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com
Adding local repo with URL: http://127.0.0.1:8879/charts
$HELM_HOME has been configured at /root/.helm.
Not installing Tiller due to 'client-only' flag having been set
Happy Helming!
"incubator" has been added to your repositories
--------------------------------------------------------------------------------
Processing chart 'stable/mariadb'...
--------------------------------------------------------------------------------
Validating chart 'stable/mariadb'...
Checking chart 'stable/mariadb' for a version bump...
Chart version on k8s/master : 5.0.3
New chart version: 5.0.3
ERROR: Chart version not ok. Needs a version bump.
Linting 'stable/mariadb/Chart.yaml'...
Linting 'stable/mariadb/values.yaml'...
Validating Chart.yaml
Validating /workdir/stable/mariadb/Chart.yaml...
Validation success! 👍
Validating maintainers
Verifying maintainer 'bitnami-bot'...
ERROR: Chart validation failed.
Building dependencies for chart 'stable/mariadb'...
No requirements found in stable/mariadb/charts.
Chart does not provide test values. Using defaults...
Linting chart 'stable/mariadb'...
==> Linting stable/mariadb
Lint OK
1 chart(s) linted, no failures
--------------------------------------------------------------------------------
✖︎ stable/mariadb
--------------------------------------------------------------------------------
You'll notice the chart failed to pass testing because the version was not incremented.
## Configurable
While the testing image contains defaults, it is configurable so it can be used without any association to the community charts setup. The [configuration is handled via environment variables which are documented in the README.md file](https://github.com/helm/chart-testing/blob/main/README.md#configuration).
For example, if you wanted to skip checking for a version increment on the chart for every change you can set `CHECK_VERSION_INCREMENT` to `false`. This will skip that check and is useful for cases where every change to a chart is not released.
## Example: Using It with CircleCI
Linting, without trying to operate the chart, is easy to incorporate into a workflow. The following is a simple example CircleCI configuration to do so:
version: 2
jobs:
lint-charts:
docker:
- image: quay.io/helmpack/chart-testing:v1.1.0
steps:
- checkout
- run:
name: lint
command: |
chart_test.sh --config .testenv --no-install
workflows:
version: 2
lint:
jobs:
- lint-charts
In this case the environment variables for the configuration are stored in a file name `.testenv`. This file holds the environment variables and is sourced into the environment. The following is an example from the community charts:
# The name of the Git remote
REMOTE=k8s
# The name of the Git target branch
TARGET_BRANCH=master
# Chart directories separated by a space
CHART_DIRS=(
stable
incubator
)
# Charts that should be skipped
EXCLUDED_CHARTS=(
common
)
# Additional chart repos to add (<name>=<url>), separated by a space
CHART_REPOS=(
incubator=https://kubernetes-charts-incubator.storage.googleapis.com/
)
TIMEOUT=600
## Try It in Your Workflow
This toolchain, wrapped in a container image, is meant to be used in a wide variety of workflows. Please take it for a spin, give it a try, use it in your workflows, and provide feedback.
================================================
FILE: blog/2018-10-04-helm-org-maintainers.md
================================================
---
title: "Introducing the Helm Org Maintainers"
slug: "intro-helm-org-maintainers"
date: "2018-10-04"
---
The first major action under the [new Helm governance](https://www.helm.sh/blog/new-gov-and-elections/index.html) was to elect a set of [Helm Org Maintainers](https://github.com/helm/community/blob/52161625acabf4187ae052f4e5fdd36daea91684/governance/governance.md#helm-org-maintainers). In the initial election we were looking to select 7 people to represent Helm core, charts, and other projects under the Helm umbrella. The election is now complete and I would like to introduce the first set of Org Maintainers. <!-- truncate -->
In alphabetical order, by first name, they are:
* Adam Reese (adamreese)
* Adnan Abdulhussein (prydonius)
* Josh Dolitsky (jdolitsky)
* Matt Butcher (technosophos)
* Matt Farina (mattfarina)
* Matt Fisher (bacongobbler)
* Reinhard Nägele (unguiculus)
* Scott Rigby (scottrigby)
* Vic Iglesias (viglesiasce)
Thanks to everyone who ran. Helm is off to a great start under the CNCF and this is another step in our journey.
## What Do Org Maintainers Do?
Org Maintainers are responsible for maintaining the vision, mission, values, and scope of the broader Helm project. This includes the Helm client, the charts repository, ChartMuseum, and Monocular. While the org maintainers are not responsible for the technical direction of each individual project, they take on the higher level task of keeping the organization unified.
================================================
FILE: blog/2018-12-11-helm-hub.md
================================================
---
title: "Introducing the Helm Hub"
slug: "intro-helm-hub"
date: "2018-12-11"
---
Helm was designed with many distributed repositories in mind. Like Homebrew Taps and Debian APT repositories, Helm has the ability to add and work with many repositories. While the Helm [stable and incubator repositories](https://github.com/helm/charts) have been front and center from the beginning it was never our intent for these to be the only public repositories.
With this in mind, we are delighted to announce the launch of the [Helm Hub](https://hub.helm.sh). This hub provides a means for you to find charts hosted in many distributed repositories hosted by numerous people and organizations. <!-- truncate -->

Helm repositories can be hosted in many ways including as GitHub or GitLab pages, in object storage, using [Chartmuseum](https://github.com/helm/chartmuseum), and via a service provider.
If you have a chart repository you would like listed please head over to the [hub repository on GitHub](https://github.com/helm/hub) and follow the directions. The process is as simple as a pull request.
The Helm Hub is powered by [Monocular](https://github.com/helm/monocular), one of the projects that has long been a part of Helm. This was originally crafted by Bitnami and Deis, now part of Microsoft. As the Helm Hub grows in complexity, Monocular will need to grow in its ability to handle many repositories and charts. This is an area where UI and UX designers looking to be part of the Helm and [CNCF](https://cncf.io) community can contribute and make a difference.
We look forward to the Helm Hub ushering in a new phase of chart development and sharing.
================================================
FILE: blog/2019-01-14-chartmuseum-security-notice.md
================================================
---
title: "ChartMuseum Vulnerability: Authorization Bypass [CVE-2019-1000009]"
slug: "chartmuseum-security-notice-2019"
date: "2019-01-14"
---
Security researcher Bernard Wagner of [Entersekt](https://www.entersekt.com/) discovered a vulnerability in ChartMuseum, impacting **all versions of ChartMuseum between ChartMuseum >=0.1.0 and < 0.8.1**. A specially crafted chart could be uploaded that caused the uploaded archive to be saved outside of the intended location.
When ChartMuseum is configured for multitenancy the specially crafted chart could be uploaded to one tenant but saved in the location of another tenant. This includes overwriting a chart at a version in the other tenant.
<!-- truncate -->
Additionally, if ChartMuseum is configured to use a file system the uploaded Chart archive may be uploaded to locations outside of the storage directory. It could be uploaded to any place the ChartMuseum application binary has write permission to.
We are unaware of any public exploits caused by this issue.
## Details
When a chart archive is uploaded the name of the chart, as listed in the `Chart.yaml` file, is used when creating the path location to save the file. The name is joined with the directory or object storage prefix path. The chart name was not sanitized or validated. This allowed directory traversal characters, such as `../..`, to be used in the name and affect the directory the archive file is saved within.
When the Helm client creates a chart archive, via the `helm package` command, it validates that the chart name and encapsulating directory match. It will not generate a chart archive with directory traversal characters.
## Fix
Update to ChartMuseum >= 0.8.1
To prevent this from happening, ChartMuseum now checks the name of the chart to make sure there are no directory traversal characters in the name before using it to save the archive. If the name contains directory traversal characters the API will return a _400 Bad Request_ response and message to signify the name issue.
================================================
FILE: blog/2019-01-14-helm-security-notice.md
================================================
---
title: "Helm Vulnerability: Client Unpacking Chart that Contains Malicious Content [CVE-2019-1000008]"
slug: "helm-security-notice-2019"
authors: ["mattbutcher"]
date: "2019-01-14"
---
Security researcher Bernard Wagner of [Entersekt](https://www.entersekt.com/) discovered a vulnerability in the Helm client, impacting **all versions of Helm between Helm >=2.0.0 and < 2.12.2**. Two Helm client commands may be coerced into unpacking unsafe content from a maliciously designed chart.
A specially crafted chart may be able to unpack content into locations on the filesystem outside of the chart’s path, potentially overwriting existing files.
<!-- truncate -->
No version of Tiller is known to be impacted. This is a client-only issue.
The following Helm commands may unsafely unpack malformed charts onto a local folder: `helm fetch --untar` and `helm lint some.tgz`.
We are unaware of any public exploits caused by this issue.
## Details
During unpacking operations, file names were not checked to see if they contained references to parent directories. Normally, this does not impact Helm’s operation because file names are only used as in-memory names. However, two operations were found to export files directly to disk without sanitizing the file names. The `helm lint` command may unpack a tar archive into a temporary directory, and `helm fetch --untar` will unpack an archive into a user-supplied directory. In both cases, not all file names were correctly sanitized.
No Tiller version is impacted. This vulnerability does not render clusters vulnerable to attack. Tiller does not store unpacked charts. All charts are loaded in-memory, and paths are resolved as string names, not as locations on a file system.
## Workarounds
Unpack charts with the appropriate `tar` command, and do not use the `--untar` flag on `helm fetch`. Do not run `helm lint` on tars. Unpack them manually and run `helm lint` on the unpacked directory.
## Fix
Update to Helm >= 2.12.2.
As of Helm 2.12.2, the unpacking operation disallows paths that could be used to store files outside of the present working directory. This is considered a bug fix, rather than a breaking change, because there is no way to produce such malformed packages from within Helm or from standard chart-building tools.
From Helm 2.12.2 onward, charts that contain files that are not relative to the current working directory will fail to load, even when loaded into memory.
================================================
FILE: blog/2019-04-18-helm-summit-eu-2019.md
================================================
---
title: "Helm Summit EU 2019"
slug: "helm-summit-eu-2019"
authors: ["karenchu"]
date: "2019-04-18"
---
We're beyond excited to share that [Helm Summit EU 2019](https://events.linuxfoundation.org/events/helm-summit-2019/) is now official (h/t to [CNCF](https://cncf.io/))! Join the Helm community on September 11 - 12 in Amsterdam, The Netherlands at Pakhuis de Zwijger for our first European Helm Summit. Over the course of two days, we'll discuss all things Helm and hold tutorials, working sessions, and small group discussions with new and existing users.<!-- truncate -->
Interested in...
* Registering? Sign up [here](https://events.linuxfoundation.org/events/helm-summit-2019/register/) before Aug 27 for Early Bird pricing of $250. Prices will go up to the Standard pricing of $300 thereafter.
* CFPs? Submit a proposal for a lighting talk, presentation, or tutorial before the Friday May 31 deadline. Click [here](https://events.linuxfoundation.org/events/helm-summit-2019/program/call-for-proposals/) for details.
* Sponsoring? Sponsorships are now open and in limited quantity. Please reach out to sponsor@cncf.io for the sponsorship prospectus.
In the mean time, make sure to follow us on [Twitter](https://twitter.com/HelmPack) for the most up-to-date news on #HelmSummit!
================================================
FILE: blog/2019-04-22-helm-3-preview-pt1.md
================================================
---
title: "Helm 3 Preview: Charting Our Future – Part 1: A History of Helm"
slug: "helm-3-preview-pt1"
authors: ["mattfisher"]
date: "2019-04-22"
---
On October 15th, 2015, the project now known as Helm was born. Only one year later, the Helm community joined the Kubernetes organization as Helm 2 was fast approaching. In June 2018, the Helm community [joined the CNCF](https://www.cncf.io/blog/2018/06/01/cncf-to-host-helm/) as an incubating project. Fast forward to today, and Helm 3 is nearing its first alpha release.
In this series of seven blog posts over the next four weeks, I'll provide some history on Helm's beginnings, illustrate how we got where we are today, showcase some of the new features available for the first alpha release of Helm 3, and explain how we move forward from here.<!-- truncate -->
In order, I'll discuss:
1. The history of the creation of Helm
2. A Gentle Farewell to Tiller
3. Chart Repositories
4. Release Management
5. Changes to Chart Dependencies
6. Library Charts
7. What’s Next?
### A History of Helm
Let's get started. Part 1 of 7 of our *Helm 3 Preview: Charting Our Future* blog series is about the history of how Helm was created and evolved.
#### Helm was Born
Helm 1 began as an open source project created by Deis. We were a small startup company [acquired by Microsoft in the spring of 2017](https://blogs.microsoft.com/blog/2017/04/10/microsoft-acquire-deis-help-companies-innovate-containers/). Our other open source project - also called Deis - had a tool called [`deisctl`](https://github.com/deis/deis/tree/master/deisctl) that was used for (among other things) installing and operating the Deis platform on a [Fleet cluster](https://github.com/coreos/fleet). Fleet was one of the first "container orchestrator" platforms to exist at the time.
In mid-2015, we decided to shift gears, and the foundation of Deis (now re-named "Deis Workflow") moved from Fleet to Kubernetes. One of the first things we had to rewrite was the installation tool, `deisctl`. We used this tool to install and manage Deis Workflow on a Fleet cluster.
Modeled after package managers like Homebrew, apt, and yum, the focus of Helm 1 was to make it easy for users to package and install their applications on Kubernetes. We officially announced Helm in 2015 at the inaugural KubeCon in San Francisco.
Our first attempt at Helm worked, but had its fair share of limitations. It took a set of Kubernetes manifests - sprinkled with generators as YAML front-matter - and loaded the generated results into Kubernetes.
For example, to substitute a field in a YAML file, one would add the following to a manifest:
```
#helm:generate sed -i -e s|ubuntu-debootstrap|fluffy-bunny| my/pod.yaml
```
Makes you really happy that template languages exist today, eh?
For many reasons, this early Kubernetes installer required a hard-coded list of manifest files and performed only a small fixed sequence of events. It was painful enough to use that the Deis Workflow R&D team was having a tough time replatforming their product around it, but the seed of an idea was there. Our first attempt was a very successful learning opportunity: we learned that we were passionate about building pragmatic solutions that solved real day-to-day problems for our users.
Learning from our past mistakes, we started designing Helm 2.
#### Designing Helm 2
As 2015 wound to a close, a team from Google reached out to the Helm team. They, too, had been working on a similar tool for Kubernetes. Deployment Manager for Kubernetes was a port of an existing tool they used for Google Cloud Platform. Would we be interested, they asked, in spending a few days talking about similarities and differences?
In January 2016, the Helm and Deployment Manager teams sat down in Seattle to share some ideas. We walked out with a bold plan: merge the projects to create Helm 2. Along with Deis and Google, [SkippBox](https://github.com/skippbox) joined the development team, and we started work on Helm 2.
Our goal was to maintain Helm's ease of use, but add the following:
- Chart templates for customization
- In-cluster management for teams
- A first-class chart repository
- A stable and signable package format
- A strong commitment to semantic versioning and retaining backward compatibility version-to-version
To accomplish these goals, we added a second component to the Helm ecosystem. This in-cluster component was called Tiller, and it handled installing and managing Helm charts.
Since the release of Helm 2 in 2016, Kubernetes added several major features. Role-Based Access Control (RBAC) was added and eventually replaced Attribute-Based Access Control (ABAC). Many new resource types were introduced (Deployments were still in beta at the time). Custom Resource Definitions (then called Third Party Resources, or TPRs) were invented. And most importantly, a set of best practices emerged.
Throughout all of these changes, Helm continued to serve the needs of Kubernetes users. After 3 years and many new feature additions, it became a good idea to introduce some major changes to the code base so that Helm would continue to meet the needs of this evolving ecosystem.
This brings us to Helm 3 -- check out our next blog post [here](https://helm.sh/blog/helm-3-preview-pt2/) where we discuss the fate of Tiller in our *Helm 3 Preview: Charting Our Future* blog series over the course of 4 weeks.
================================================
FILE: blog/2019-04-25-helm-3-preview-pt2.md
================================================
---
title: "Helm 3 Preview: Charting Our Future – Part 2: A Gentle Farewell to Tiller"
slug: "helm-3-preview-pt2"
authors: ["mattfisher"]
date: "2019-04-25"
---
This is part 2 of 7 of our *Helm 3 Preview: Charting Our Future* blog series. (Check out our previous blog post on the history of Helm [here](https://helm.sh/blog/helm-3-preview-pt1/).)
During the Helm 2 development cycle, we introduced Tiller as part of our integration with Google's Deployment Manager. Tiller played an important role for teams working on a shared cluster - it made it possible for multiple different operators to interact with the same set of releases.<!-- truncate -->
With role-based access controls (RBAC) enabled by default in Kubernetes 1.6, locking down Tiller for use in a production scenario became more difficult to manage. Due to the vast number of possible security policies, our stance was to provide a permissive default configuration. This allowed first-time users to start experimenting with Helm and Kubernetes without having to dive headfirst into the security controls. Unfortunately, this permissive configuration could grant a user a broad range of permissions they weren't intended to have. DevOps and SREs had to learn additional operational steps when installing Tiller into a multi-tenant cluster.
After hearing how community members were using Helm in certain scenarios, we found that Tiller's release management system did not need to rely upon an in-cluster operator to maintain state or act as a central hub for Helm release information. Instead, we could simply fetch information from the Kubernetes API server, render the Charts client-side, and store a record of the installation in Kubernetes.
Tiller’s primary goal could be accomplished without Tiller, so one of the first decisions we made regarding Helm 3 was to completely remove Tiller.
With Tiller gone, the security model for Helm is radically simplified. Helm 3 now supports all the modern security, identity, and authorization features of modern Kubernetes. Helm's permissions are evaluated using your [kubeconfig file](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/). Cluster administrators can restrict user permissions at whatever granularity they see fit. Releases are still recorded in-cluster, and the rest of Helm's functionality remains.
Read the next blog post [here](https://helm.sh/blog/helm-3-preview-pt3/) where we discuss chart repositories in the next part of our *Helm 3 Preview: Charting Our Future* blog series over the course of 4 weeks.
================================================
FILE: blog/2019-04-29-helm-3-preview-pt3.md
================================================
---
title: "Helm 3 Preview: Charting Our Future – Part 3: Chart Repositories"
slug: "helm-3-preview-pt3"
authors: ["mattfisher"]
date: "2019-04-29"
---
This is part 3 of 7 of our *Helm 3 Preview: Charting Our Future* blog series, discussing chart repositories. (Check out our previous blog post on the gentle goodbye to Tiller [here](https://helm.sh/blog/helm-3-preview-pt2/).)
At a high level, a Chart Repository is a location where Charts can be stored and shared. The Helm client packs and ships Helm Charts to a Chart Repository. Simply put, a Chart Repository is a basic HTTP server that houses an index.yaml file and some packaged charts.<!-- truncate -->
While there are several benefits to the Chart Repository API meeting the most basic storage requirements, a few drawbacks have started to show:
- Chart Repositories have a very hard time abstracting most of the security implementations required in a production environment. Having a standard API for authentication and authorization is very important in production scenarios.
- Helm’s Chart provenance tools used for signing and verifying the integrity and origin of a chart are an optional piece of the Chart publishing process.
- In multi-tenant scenarios, the same Chart can be uploaded by another tenant, costing twice the storage cost to store the same content. Smarter chart repositories have been designed to handle this, but it’s not a part of the formal specification.
- Using a single index file for search, metadata information, and fetching Charts has made it difficult or clunky to design around in secure multi-tenant implementations.
Docker’s [Distribution project](https://github.com/docker/distribution) (also known as Docker Registry v2) is the successor to the Docker Registry project, and is the de-facto toolset to pack, ship, store, and deliver Docker images. Many major cloud vendors have a product offering of the Distribution project, and with so many vendors offering the same product, the Distribution project has benefited from many years of hardening, security best practices, and battle-testing, making it one of the most successful unsung heroes of the open source world.
But did you know that the Distribution project was designed to distribute any form of content, not just container images?
Thanks to the efforts of the [Open Container Initiative (or OCI for short)](https://www.opencontainers.org/), Helm Charts can be hosted on any instance of Distribution. The work is experimental, with login support and other features considered "table stakes" for Helm 3 yet to be finished, but we're very excited to learn from previous discoveries that the OCI and Distribution teams have made over the years, learning through their mentorship and guidance on what it means to run a highly available service at scale.
I wrote a more detailed deep-dive on some of the [upcoming changes to Helm Chart Repositories](https://blog.bacongobbler.com/post/2019-01-25-distributing-with-distribution/) if you'd like to read more on the subject.
You can check out the next blog [here](https://helm.sh/blog/helm-3-preview-pt4/) where we discuss release management in the next part of our *Helm 3 Preview: Charting Our Future* blog series over the course of 4 weeks.
================================================
FILE: blog/2019-05-02-helm-3-preview-pt4.md
================================================
---
title: "Helm 3 Preview: Charting Our Future – Part 4: Release Management"
slug: "helm-3-preview-pt4"
authors: ["mattfisher"]
date: "2019-05-02"
---
This is part 4 of 7 of our *Helm 3 Preview: Charting Our Future* blog series on release management. (Check out our previous blog post on the Helm chart repositories [here](https://helm.sh/blog/helm-3-preview-pt3/.).
In Helm 3, an application's state is tracked in-cluster by a pair of objects:<!-- truncate -->
- The release object: represents an instance of an application
- The release version secret: represents an application's desired state at a particular instance of time (the release of a new version, for example)
A `helm install` creates a release object and a release version secret. A `helm upgrade` requires an existing release object (which it may modify) and creates a new release version secret that contains the new values and rendered manifest.
The release object contains information about a release, where a release is a particular installation of a named chart and values. This object describes the top-level metadata about a release. The release object persists for the duration of an application lifecycle, and is the owner of all release version secrets, as well as of all objects that are directly created by the Helm chart.
The release version secret ties a release to a series of revisions (install, upgrades, rollbacks, delete).
In Helm 2, revisions were merely incremental. `helm install` created v1, a subsequent upgrade created v2, and so on. The release and release version secret were collapsed into a single object known as a revision. Revisions were stored in the same namespace as Tiller, meaning that each release name was "globally" namespaced; as a result, only one instance of a name could be used.
For Helm 3, a release has one or more release version secrets associated with it. The release object always describes the current release deployed to Kubernetes. Each release version secret describes just one version of that release. An upgrade operation, for example, will create a new release version secret, and then modify the release object to point to this new version. Rollback operations can use older release version secrets to roll back a release to a previous state.
With Tiller gone, Helm 3 stores release data in the same namespace as the release's destination. This change allows one to install a chart with the same release name in another namespace, and data is persisted between cluster upgrades/reboots in etcd. You can install Wordpress into namespace "foo" as well as namespace "bar", and both releases can be referred to as "wordpress".
Speaking of Charts...read the next blog [here](https://helm.sh/blog/helm-3-preview-pt5/) where we discuss changes to chart dependencies in our *Helm 3 Preview: Charting Our Future* blog series over the course of 4 weeks.
================================================
FILE: blog/2019-05-06-helm-3-preview-pt5.md
================================================
---
title: "Helm 3 Preview: Charting Our Future – Part 5: Changes to Chart Dependencies"
slug: "helm-3-preview-pt5"
authors: ["mattfisher"]
date: "2019-05-06"
---
This is part 5 of 7 of our *Helm 3 Preview: Charting Our Future* blog series about chart dependencies and some subtle differences between Helm 2 and Helm 3. (Check out our previous blog post on release management [here](https://helm.sh/blog/helm-3-preview-pt4/).)
Charts that were packaged (with `helm package`) for use with Helm 2 can be installed with Helm 3, but the chart development workflow received an overhaul, so some changes are necessary to continue developing charts with Helm 3. One of the components that changed was the chart dependency management system.<!-- truncate -->
The Chart dependency management system moved from requirements.yaml and requirements.lock to Chart.yaml and Chart.lock, meaning that charts that relied on the `helm dependency` command will need some tweaking to work in Helm 3.
Let's take a look at an example. Let's add a dependency to a chart in Helm 2 and then look at how that changed in Helm 3.
In Helm 2, this is how a requirements.yaml looked:
```
dependencies:
- name: mariadb
version: 5.x.x
repository: https://kubernetes-charts.storage.googleapis.com/
condition: mariadb.enabled
tags:
- database
```
In Helm 3, the same dependency is expressed in your Chart.yaml:
```
dependencies:
- name: mariadb
version: 5.x.x
repository: https://kubernetes-charts.storage.googleapis.com/
condition: mariadb.enabled
tags:
- database
```
Charts are still downloaded and placed in the charts/ directory, so subcharts vendored into the charts/ directory will continue to work without modification.
Click [here](https://helm.sh/blog/helm-3-preview-pt6/) to read the next blog where we introduce library charts in the next part of our *Helm 3 Preview: Charting Our Future* blog series over the course of 4 weeks.
================================================
FILE: blog/2019-05-09-helm-3-preview-pt6.md
================================================
---
title: "Helm 3 Preview: Charting Our Future – Part 6: Introducing Library Charts"
slug: "helm-3-preview-pt6"
authors: ["mattfisher"]
date: "2019-05-09"
---
This is part 6 of 7 of our *Helm 3 Preview: Charting Our Future* blog series on library charts. You can find our previous blog post on the Helm chart dependencies [here](https://helm.sh/blog/helm-3-preview-pt5/).
Helm 3 supports a class of chart called a "library chart". This is a chart that is shared by other charts, but does not create any release artifacts of its own. A library chart's templates can only declare `define` elements. Globally scoped non-define content is simply ignored. This allows users to re-use and share snippets of code that can be re-used across many charts, avoiding redundancy and keeping charts [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself).<!-- truncate -->
Library charts are declared in the `dependencies` directive in Chart.yaml, and are installed and managed like any other chart.
```
dependencies:
- name: mylib
version: 1.x.x
repository: quay.io
```
We're very excited to see the use cases this feature opens up for chart developers, as well as any best practices that arise from consuming library charts.
Click [here](https://helm.sh/blog/helm-3-preview-pt7/) to read the final part of our *Helm 3 Preview: Charting Our Future* blog series over the course of 4 weeks.
================================================
FILE: blog/2019-05-13-helm-3-preview-pt7.md
================================================
---
title: "Helm 3 Preview: Charting Our Future – Part 7: What's Next?"
slug: "helm-3-preview-pt7"
authors: ["mattfisher"]
date: "2019-05-13"
---
This is the seventh and final part of our *Helm 3 Preview: Charting Our Future* blog series. Read our previous blog post on library charts [here](https://helm.sh/blog/helm-3-preview-pt6/).
Helm 3.0.0-alpha.1 is the foundation upon which we'll begin to build the next version of Helm. The features shared over the last few weeks were some of the big promises we made for Helm 3. Many of those features are still in their early stages and that is OK; the idea of an alpha release is to test out an idea, gather feedback from early adopters, and validate those assumptions.<!-- truncate -->
Once the alpha has been released, we can start accepting patches from the community for Helm 3. We should have a stable foundation on which to build and accept new features, and users should feel empowered to open tickets and contribute fixes.
In this blog series, I have tried to highlight some of the big improvements coming to Helm 3, but this list is by no means exhaustive. The full plan for Helm 3 includes features such as improved upgrade strategies, deeper integrations with OCI registries, and applying JSON schemas against chart values for validation purposes. We’re also taking a moment to clean up the codebase and updating parts that have languished over the last three years.
If you feel like a topic was missed, we'd love to hear your thoughts!
Feel free to join the discussion in [our Slack channels](https://kubernetes.slack.com):
- `#helm-users` for questions and just to hang out with the community
- `#helm-dev` for discussing PRs, code, and bugs
You can also join and hang out in our weekly Public Developer Calls on Thursdays at 09:30PDT. The meeting is focused on discussing what the core maintainers and the community are working on, as well as any discussion topics for the week. Anyone is welcome to join this call and participate. The link is in the `#helm-dev` Slack channel.
TTFN, ta ta for now!
================================================
FILE: blog/2019-06-10-get-helm-sh.md
================================================
---
title: "Announcing get.helm.sh"
slug: "get-helm-sh"
authors: ["mattfisher"]
date: "2019-06-10"
---
The Helm Client has long been available to download from Google Cloud Storage at the bucket <https://kubernetes-helm.storage.googleapis.com>. This bucket in Google Cloud has been used by Helm since before Kubernetes was part of the CNCF. The first release hosted on this bucket was Helm v2.0.0-alpha.5!
Google has long been gracious in providing funding for this location. Since Helm started using it, Helm (as part of Kubernetes) moved into the CNCF, and then moved out from under the Kubernetes umbrella, becoming a sister project to Kubernetes within the CNCF.<!-- truncate -->
The CNCF is in the process of taking over the infrastructure for Kubernetes. It was time for Helm to move from a location funded by Google to one funded by the CNCF. Google Cloud buckets cannot be transferred between projects, which meant we could not transfer the bucket over to a CNCF account. We needed to move to a new location as part of the move.
## Where are we now?
The Helm project now publishes client downloads to <https://get.helm.sh>. All Helm releases from Helm v2.0.0-alpha.5 onwards are available for download, as well as the latest Helm 3 alpha.1 release.
For backwards compatibility concerns, new releases of Helm 2 will continue to be published at the old URL, however we strongly encourage users to migrate.
Going forward, this is the only location where you will find Helm 3; they are not being uploaded to the old storage bucket. Helm 3.0.0-alpha.1 builds are available there now.
## What do I need to do?
If you're using the old URL in your CI pipeline, you can replace <https://kubernetes-helm.storage.googleapis.com/kubernetes-helm> with <https://get.helm.sh>.
If you're using [the get script](https://helm.sh/docs/using_helm/#from-script), it is now [pulling from the new URL](https://github.com/helm/helm/blob/2ca025d48222d6fa188653e2ca5eda6ed799145c/scripts/get#L114), so no changes on your end are required.
All the download URLs in our [GitHub releases](https://github.com/helm/helm/releases) have also been changed to use the new URL.
## What's under the hood?
`get.helm.sh` has three main components:
1. [Azure Blob Storage](https://azure.microsoft.com/en-ca/services/storage/blobs/)
1. [Azure CDN](https://azure.microsoft.com/en-ca/services/cdn/)
1. The domain name `get.helm.sh`
In our release pipeline, Helm 2 and Helm 3 downloads are [uploaded to Azure Blob Storage](https://github.com/helm/helm/commit/022c8869bee37d02cf01507c11c6cfc6d58a1eca) (Helm 2 downloads are also [uploaded to Google Cloud Storage](https://github.com/helm/helm/commit/95775d0c60804b3d3674510e1f57a30ca8074ddd) for backwards compatibility). Azure CDN serves that content, which is fronted with a custom domain name.
## Why the new location?
As part of the move, we started considering some new features the community has been asking for:
### An official helm.sh URL
During this transition, we wanted to ensure that we won't disrupt users a second time, asking them to change their deployment pipelines to point to a new location. We decided to place a URL we control in front of the storage provider. This way, we do not need to ask users to switch URLs again in the future. If the underlying storage provider needs to change at some point in the future, we can have the URL point at the new location without this level of disruption going forward.
### Content delivery at the edge
<https://get.helm.sh> is fronted by [Azure CDN](https://azure.microsoft.com/en-ca/services/cdn/), a Content Delivery Network that is globally available. This should provide faster downloads to those distributed around the world, not just to those located in the Eastern United States.
It also provides availability in regions that were previously unavailable, such as...
### Availability in China
China is a large market for the CNCF, and therefore a large market for Helm. Google Cloud Storage is not accessible in China, so users in that region interested in using Helm have set up mirrors to work around this problem.
This is an area of concern in particular around adoption: As a user, I am now relying on an unofficial mirror to fetch my downloads, which comes with a certain level of risk I would not be subject to if I were fetching from the official release page like every other user.
Azure CDN [can serve content to users in China](https://docs.microsoft.com/en-us/azure/cdn/cdn-china-delivery) using point-of-presence (POP) locations near China. With Helm downloads now available in China, we are seeing just how popular Helm is in that area thanks to...
### Download metrics
One of the questions that keep popping up in our minds was how users are consuming Helm on a daily basis. The core maintainers were interested in answering the following questions:
- what versions of Helm are being used?
- what regions of the world are using Helm today?
- How long does it take for the community to migrate over to a new version of Helm?
- How many users are downloading Helm 3 vs Helm 2?
Our new CDN provides a rich set of metrics can provide answers to these questions.
While these metrics are only available to core maintainers at this time, we are discussing how we can share these metrics with the community similar to <https://devstats.cncf.io/>.
## Caveat: Tiller and Chart downloads
Please note that this change is only for the Helm client downloads. Tiller has not moved from Google Container Registry, and the stable and incubator Helm chart repositories are still hosted on Google Cloud.
If you have any questions about this change, please let us know. More information on this change can be found under [issue #5663](https://github.com/helm/helm/issues/5663).
================================================
FILE: blog/2019-08-27-helm-v3-beta.md
================================================
---
title: "Helm v3 Beta 1 Released"
slug: "helm-v3-beta"
authors: ["mattfarina"]
date: "2019-08-27"
---
Helm v3 development has hit a new milestone with the release of the [first beta](https://github.com/helm/helm/releases/tag/v3.0.0-beta.1). This is an especially important milestone because it is the end of the effort to refactor Helm v3. The last of the _intended_ breaking changes has landed. From this point on, Helm v3 is focused on bug fixes, stability, and preparing it for a stable release.
If you are interested in Helm v3 now is a great time to test it out. If you find issues please file an issue if one has not already been filed.<!-- truncate -->
## Notable changes since Helm v2
* Tiller has been removed. This simplifies the experience of using Helm. There is no more need to have cluster admin privileges or to install a Tiller in every namespace. With Tiller removed, Helm now uses the settings and access defined in the local kubeconfig file.
* A name is now required on install or you can use the `--generate-name` flag to have one automatically generated. This is a reverse of the Helm v2 behavior.
* The `helm init` command has been removed. It performed two primary functions. First, it installed Tiller. This is no longer needed. Second, it setup directories and repositories where Helm configuration lived. This is now automated. If the directory is not present it will be created.
* The Helm home directory used to be located off a users home directory. There is a standard known as the [XDG Base Directory Specification](https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html) that describes a standard method to handle these directories. Helm now follows the XDG specification.
* The `stable` repository is no longer added by default. This repository will be deprecated during the life of Helm v3 and we are now moving to a distributed model of repositories that can be searched by the [Helm Hub](https://hub.helm.sh).
* The `helm search` command has been refactored to have sub-commands that can search the local repositories and the Helm Hub.
* Release names are now scoped to namespaces. In Helm v2 the names were scoped to the namespace Tiller was running in. When Tiller was running for an entire cluster the names were scoped to the cluster. Names are now scoped to the same namespace as the release.
* JSON schemas can now be imposed on chart values and bundled with the chart. The schemas can be used for validating chart values.
* A new API version of charts are available. This new `apiVersion` is `v2` and contains several changes including:
* Requirements are now listed in the `Chart.yaml` file instead of the `requirements.yaml` file.
* A `crd` directory has been added to charts for the placement of CRDs. These will be installed before the rendering of the templates is performed. Once the Kubernetes community has worked out more workflow details with CRDs more features can be added to Helm to support them.
* The `crd-install` hook has been removed and will not work for Helm v2 charts. A "legacy" plugin will be released by the Helm project to support v1 charts with the `crd-install` hook.
* Experimental feature gates are now supported. As new potential features are added to Helm they can be worked on as experiments and enabled using an environment variable.
* Pushing and pulling charts from OCI registries is now an experimental feature. The final details of this feature are being worked out with the OCI on the proper use of the API. To access this feature set the environment variable `HELM_EXPERIMENTAL_OCI=1` needs to be set.
* `helm serve` has been removed.
* Helm now supports library charts. These charts are not meant to be installed but can be depended on and referenced by other charts. These were inspired by the [common chart](https://github.com/helm/charts/tree/master/incubator/common) in the incubator repository.
* `helm test` received some major refactoring. This included the `test-success` hook's behavior coming in line with other hooks and the removal of the `test-failure` hook due to lack of use.
* Several CLI changes have happened for usability including:
* `helm inspect` is now `helm show`
* `helm fetch` is now `helm pull`
* `helm delete` is now `helm uninstall`
* Instead of using the `--purge` flag on `helm uninstall` the behavior is to use the `--keep-history` if you want to keep the history.
## Helm v3 Next Steps
The next steps in the road to a Helm v3 stable release will be to focus on fixing bugs and stability. More beta releases or release candidates will follow before making a final `3.0.0` release.
================================================
FILE: blog/2019-09-11-migrate-from-helm-v2-to-helm-v3.md
================================================
---
title: "How to migrate from Helm v2 to Helm v3"
slug: "migrate-from-helm-v2-to-helm-v3"
authors: ["rimasmocevicius"]
date: "2019-09-11"
---

One of the most important parts of upgrading to a new major release of Helm is the migration of data. This is especially true of Helm v2 to v3 considering the architectural changes between the releases. This is where the [helm-2to3](https://github.com/helm/helm-2to3) plugin comes in.
<!-- truncate -->
It helps with this migration by supporting:
- Migration of Helm v2 configuration.
- Migration of Helm v2 releases.
- Clean up Helm v2 configuration, release data and Tiller deployment.
## Setting up Helm v3
As we do not want to override Helm v2 CLI binary, we need to perform an additional step to ensure that both CLI versions can co-exist until we are ready to remove Helm v2 CLI and all it's related data:
Download latest Helm v3 release from [here](https://github.com/helm/helm/releases), rename the binary to `helm3` and store it in your path.
We are ready to use `helm3`:
```
$ helm3 repo list
Error: no repositories to show
```
As you see there are no repositories set as Helm v3 comes without `stable` repository setup by default, let's fix it up.
## helm-2to3 plugin
`helm-2to3` plugin will allow us to migrate and cleanup Helm v2 configuration and releases to Helm v3 in-place.
Installed Kubernetes objects will not be modified or removed.
### Installing
Let's install it:
```
$ helm3 plugin install https://github.com/helm/helm-2to3
Downloading and installing helm-2to3 v0.2.0 ...
https://github.com/helm/helm-2to3/releases/download/v0.2.0/helm-2to3_0.2.0_darwin_amd64.tar.gz
Installed plugin: 2to3
```
```
$ helm3 plugin list
NAME VERSION DESCRIPTION
2to3 0.2.0 migrate and cleanup Helm v2 configuration and releases in-place to Helm v3
```
```
$ helm3 2to3
Migrate and Cleanup Helm v2 configuration and releases in-place to Helm v3
Usage:
2to3 [command]
Available Commands:
cleanup cleanup Helm v2 configuration, release data and Tiller deployment
convert migrate Helm v2 release in-place to Helm v3
help Help about any command
move migrate Helm v2 configuration in-place to Helm v3
Flags:
-h, --help help for 2to3
Use "2to3 [command] --help" for more information about a command.
```
Awesome.
### Plugin features
Currently plugin supports:
- Migration of Helm v2 configuration
- Migration of Helm v2 releases
- Clean up Helm v2 configuration, release data and Tiller deployment
## Migrate Helm v2 configuration
First we need to migrate Helm v2 config and data folders:
```
$ helm3 2to3 move config -h
migrate Helm v2 configuration in-place to Helm v3
Usage:
2to3 move config [flags]
Flags:
--dry-run simulate a command
-h, --help help for move
```
It will migrate:
- Chart starters
- Repositories
- Plugins
The safest way is to start with --dry-run flag:
```
$ helm3 2to3 move config --dry-run
2019/11/14 14:54:04 NOTE: This is in dry-run mode, the following actions will not be executed.
2019/11/14 14:54:04 Run without --dry-run to take the actions described below:
2019/11/14 14:54:04
2019/11/14 14:54:04 WARNING: Helm v3 configuration maybe overwritten during this operation.
2019/11/14 14:54:04
[Move Config/confirm] Are you sure you want to move the v2 configuration? [y/N]: y
2019/11/14 14:54:12
Helm v2 configuration will be moved to Helm v3 configuration.
2019/11/14 14:54:12 [Helm 2] Home directory: /Users/rimas/.helm
2019/11/14 14:54:12 [Helm 3] Config directory: /Users/rimas/Library/Preferences/helm
2019/11/14 14:54:12 [Helm 3] Data directory: /Users/rimas/Library/helm
2019/11/14 14:54:12 [Helm 3] Create config folder "/Users/rimas/Library/Preferences/helm" .
2019/11/14 14:54:12 [Helm 2] repositories file "/Users/rimas/.helm/repository/repositories.yaml" will copy to [Helm 3] config folder "/Users/rimas/Library/Preferences/helm/repositories.yaml" .
2019/11/14 14:54:12 [Helm 3] Create data folder "/Users/rimas/Library/helm" .
2019/11/14 14:54:12 [Helm 2] plugins "/Users/rimas/.helm/plugins" will copy to [Helm 3] data folder "/Users/rimas/Library/helm/plugins" .
2019/11/14 14:54:12 [Helm 2] starters "/Users/rimas/.helm/starters" will copy to [Helm 3] data folder "/Users/rimas/Library/helm/starters" .
```
Cool, now let's do the actual migration:
```
$ helm3 2to3 move config
WARNING: Helm v3 configuration maybe overwritten during this operation.
[Move Config/confirm] Are you sure you want to move the v2 configuration? [y/N]: y
2019/11/14 14:55:00 Helm v2 configuration will be moved to Helm v3 configuration.
2019/11/14 14:55:00 [Helm 2] Home directory: /Users/rimas/.helm
2019/11/14 14:55:00 [Helm 3] Config directory: /Users/rimas/Library/Preferences/helm
2019/11/14 14:55:00 [Helm 3] Data directory: /Users/rimas/Library/helm
2019/11/14 14:55:00 [Helm 3] Create config folder "/Users/rimas/Library/Preferences/helm" .
2019/11/14 14:55:00 [Helm 3] Config folder "/Users/rimas/Library/Preferences/helm" created.
2019/11/14 14:55:00 [Helm 2] repositories file "/Users/rimas/.helm/repository/repositories.yaml" will copy to [Helm 3] config folder "/Users/rimas/Library/Preferences/helm/repositories.yaml" .
2019/11/14 14:55:00 [Helm 2] repositories file "/Users/rimas/.helm/repository/repositories.yaml" copied successfully to [Helm 3] config folder "/Users/rimas/Library/Preferences/helm/repositories.yaml" .
2019/11/14 14:55:00 [Helm 3] Create data folder "/Users/rimas/Library/helm" .
2019/11/14 14:55:00 [Helm 3] data folder "/Users/rimas/Library/helm" created.
2019/11/14 14:55:00 [Helm 2] plugins "/Users/rimas/.helm/plugins" will copy to [Helm 3] data folder "/Users/rimas/Library/helm/plugins" .
2019/11/14 14:55:00 [Helm 2] plugins "/Users/rimas/.helm/plugins" copied successfully to [Helm 3] data folder "/Users/rimas/Library/helm/plugins" .
2019/11/14 14:55:00 [Helm 2] starters "/Users/rimas/.helm/starters" will copy to [Helm 3] data folder "/Users/rimas/Library/helm/starters" .
2019/11/14 14:55:00 [Helm 2] starters "/Users/rimas/.helm/starters" copied successfully to [Helm 3] data folder "/Users/rimas/Library/helm/starters" .
2019/11/14 14:55:00 Helm v2 configuration was moved successfully to Helm v3 configuration.
```
Now let's run `helm3 repo list` again:
```
$ helm3 repo list
NAME URL
stable https://kubernetes-charts.storage.googleapis.com
jfrog https://charts.jfrog.io
rimusz https://charts.rimusz.net
buildkite https://buildkite.github.io/charts
jetstack https://charts.jetstack.io
odavid https://odavid.github.io/k8s-helm-charts
elastic https://helm.elastic.co
appscode https://charts.appscode.com/stable
$ helm3 plugin list
NAME VERSION DESCRIPTION
2to3 0.1.0 migrate Helm v2 configuration and releases in-place to Helm v3
edit 0.3.0 Edit a release.
gcs 0.2.0 Provides Google Cloud Storage protocol support.
https://github.com/vigles...
linter 0.1.1 Helm plugin to find hardcoded passwords in values.yaml files
monitor 0.3.0 Query at a given interval a Prometheus, ElasticSearch or Sentry instance...
```
Nice, now I can use the same Helm repositories and plugins which I have in Helm v2.
**Note:** Please check that all Helm v2 plugins work fine with the Helm v3, and remove plugins that do not work.
The move config will create the Helm v3 `config` and `data` folders if they don't exist, and will override the `repositories.yaml` file if it does exist.
The plugin also supports non default Helm v2 `home` and Helm v3 `config` and `data` folders, an example of it's use:
```
$ export HELM_V2_HOME=$HOME/.helm2
$ export HELM_V3_CONFIG=$HOME/.helm3
$ export HELM_V3_DATA=$PWD/.helm3
$ helm3 2to3 move config
```
## Migrate Helm v2 releases
Now we are ready to start migrating releases.
Let's check available options:
```
$ helm3 2to3 convert -h
migrate Helm v2 release in-place to Helm v3
Usage:
2to3 convert [flags] RELEASE
Flags:
--delete-v2-releases v2 release versions are deleted after migration. By default, the v2 release versions are retained
--dry-run simulate a command
-h, --help help for convert
-l, --label string label to select Tiller resources by (default "OWNER=TILLER")
-s, --release-storage string v2 release storage type/object. It can be 'secrets' or 'configmaps'. This is only used with the 'tiller-out-cluster' flag (default "secrets")
--release-versions-max int limit the maximum number of versions converted per release. Use 0 for no limit (default 10)
-t, --tiller-ns string namespace of Tiller (default "kube-system")
--tiller-out-cluster when Tiller is not running in the cluster e.g. Tillerless
```
Nice, the plugin even supports the [Tillerless Helm v2](https://github.com/rimusz/helm-tiller).
Let's check out for Helm v2 releases and pick one to test out the migration:
```
$ helm list
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
postgres 1 Thu Nov 14 15:01:00 2019 DEPLOYED postgresql-7.1.0 11.5.0 postgres
redis 1 Thu Nov 14 15:02:12 2019 DEPLOYED redis-9.5.4 5.0.6 redis
```
The safest way of course to start with `--dry-run` flag:
```
$ helm3 2to3 convert --dry-run postgres
2019/11/14 15:03:17 NOTE: This is in dry-run mode, the following actions will not be executed.
2019/11/14 15:03:17 Run without --dry-run to take the actions described below:
2019/11/14 15:03:17
2019/11/14 15:03:17 Release "postgres" will be converted from Helm v2 to Helm v3.
2019/11/14 15:03:17 [Helm 3] Release "postgres" will be created.
2019/11/14 15:03:17 [Helm 3] ReleaseVersion "postgres.v1" will be created.
```
Now, let's run the actual migration:
```
$ helm3 2to3 convert postgres
2019/11/14 15:03:57 Release "postgres" will be converted from Helm v2 to Helm v3.
2019/11/14 15:03:57 [Helm 3] Release "postgres" will be created.
2019/11/14 15:03:57 [Helm 3] ReleaseVersion "postgres.v1" will be created.
2019/11/14 15:03:57 [Helm 3] ReleaseVersion "postgres.v1" created.
2019/11/14 15:03:57 [Helm 3] Release "postgres" created.
2019/11/14 15:03:57 Release "postgres" was converted successfully from Helm v2 to Helm v3.
2019/11/14 15:03:57 Note: The v2 release information still remains and should be removed to avoid conflicts with the migrated v3 release.
2019/11/14 15:03:57 v2 release information should only be removed using `helm 2to3` cleanup and when all releases have been migrated over.
```
Check out whether it was successful:
```
$ helm list
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
postgres 1 Thu Nov 14 15:01:00 2019 DEPLOYED postgresql-7.1.0 11.5.0 postgres
redis 1 Thu Nov 14 15:02:12 2019 DEPLOYED redis-9.5.4 5.0.6 redis
$ helm3 list -n postgres
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
postgres postgres 1 2019-11-14 13:01:00.188487 +0000 UTC deployed postgresql-7.1.0 11.5.0
```
**Note:** As we did not specify `--delete-v2-releases` flag Helm v2 `postgres` release information was left in-tact, it can be deleted with `helm3 2to3 cleanup` later on.
When are you ready to move all your releases, you can automate it with running `helm list` in a loop and applying `helm3 2to3 convert RELEASE` for each Helm v2 release.
If you are using Tillerless Helm v2, just add `--tiller-out-cluster` to migrate the release:
```
$ helm3 2to3 convert postgres --tiller-out-cluster
```
Very cool and simple, right :-)
## Clean up of Helm v2 data
The last step is cleaning up the old data. While this is not required, we strongly recommend it.
Let's check available options:
```
$ helm3 2to3 cleanup -h
cleanup Helm v2 configuration, release data and Tiller deployment
Usage:
2to3 cleanup [flags]
Flags:
--config-cleanup if set, configuration cleanup performed
--dry-run simulate a command
-h, --help help for cleanup
-l, --label string label to select Tiller resources by (default "OWNER=TILLER")
--release-cleanup if set, release data cleanup performed
-s, --release-storage string v2 release storage type/object. It can be 'secrets' or 'configmaps'. This is only used with the 'tiller-out-cluster' flag (default "secrets")
--tiller-cleanup if set, Tiller cleanup performed
-t, --tiller-ns string namespace of Tiller (default "kube-system")
--tiller-out-cluster when Tiller is not running in the cluster e.g. Tillerless
```
It will clean:
- Configuration (Helm home directory)
- v2 release data
- Tiller deployment
And of course the safest way is to start with `--dry-run` flag:
```
$ helm3 2to3 cleanup --dry-run
2019/11/14 15:06:59 NOTE: This is in dry-run mode, the following actions will not be executed.
2019/11/14 15:06:59 Run without --dry-run to take the actions described below:
2019/11/14 15:06:59
WARNING: "Helm v2 Configuration" "Release Data" "Release Data" will be removed.
This will clean up all releases managed by Helm v2. It will not be possible to restore them if you haven't made a backup of the releases.
Helm v2 may not be usable afterwards.
[Cleanup/confirm] Are you sure you want to cleanup Helm v2 data? [y/N]: y
2019/11/14 15:07:01
Helm v2 data will be cleaned up.
2019/11/14 15:07:01 [Helm 2] Releases will be deleted.
2019/11/14 15:07:01 [Helm 2] ReleaseVersion "postgres.v1" will be deleted.
2019/11/14 15:07:01 [Helm 2] ReleaseVersion "redis.v1" will be deleted.
2019/11/14 15:07:01 [Helm 2] Home folder "/Users/rimasm/.helm" will be deleted.
```
It will show what releases going to be deleted, Tiller service to be removed from `kube-system` namespace and Helm v2 home folder will be deleted.
When you are ready to clean up Hem v2 data, just run that command without `--dry-run` flag.
**NOTE:** The `cleanup` command will remove the Helm v2 Configuration, Release Data and Tiller Deployment. It cleans up all releases managed by Helm v2. It will not be possible to restore them if you haven't made a backup of the releases. Helm v2 will not be usable afterwards.
If you are using Tillerless Helm v2, just add `--tiller-out-cluster` to clean up Helm v2 data.
The plugin also supports non default Helm v2 `home` data folder and Tiller releases `namespace`:
```
$ export HELM_V2_HOME=$PWD/.helm2
$ helm 2to3 cleanup --tiller-ns some_namespace
```
**Happy Helm v3 sailing**
================================================
FILE: blog/2019-10-22-helm-2150-released.md
================================================
---
title: "Helm 2.15.0 Released"
authors: ["mattfisher"]
date: "2019-10-22"
---
[Helm 2.15.0](https://github.com/helm/helm/releases/tag/v2.15.0) was released last week. The 2.15.0 release of Helm introduces several improvements to `helm test`. Several commands - `helm search`, `helm repo list`, and `helm install` - received the `--output` flag for machine-readable output.
In addition to these new features (and many more!), many bugs and edge cases in Helm continue to fixed by members of the community. Several parts of the codebase have been refactored for easier maintainability, usability, and better testing.
As Helm moves towards Helm 3's first release, Helm 2 is now transitioning into "maintenance mode". Helm 2.15.0 will be the final feature release for Helm 2.<!-- truncate -->
## Helm 2 support plan
During the transition, we want to take into account any migration issues for users. We also want to clarify what actions may occur after the support contract ends for Helm 2, so that users will not be surprised or caught off guard.
For Helm 2, we will continue to accept bug fixes and fix any security issues that arise, but no new features will be accepted. All feature development will be moved over to Helm 3.
6 months after Helm 3's public release, Helm 2 will stop accepting bug fixes. Only security issues will be accepted.
12 months after Helm 3's public release, support for Helm 2 will formally end. Download links for the Helm 2 client through Google Cloud Storage, the Docker image for Tiller stored in Google Container Registry, and the Google Cloud buckets for the stable and incubator chart repositories may no longer work at any point. Client downloads through get.helm.sh will continue to work, and we will distribute a Tiller image that will be made available at an alternative location which can be updated with `helm init --tiller-image`.
## The big branch switch
Ever since Helm 3's initial development, the core maintainers and the community have been pushing commits for Helm 3 to the `dev-v3` branch, and pushing commits for Helm 2 to the `master` branch. As Helm 3 now becomes the main development branch for all future work, we decided to switch the main trunk of the Helm repository over to Helm 3's development branch.
With Helm 2 transitioning into maintenance mode, now was a good opportunity to switch branches over.
Earlier this week, the transition was completed with no downtime. Moving forward, bug fixes for Helm 2 should target the `dev-v2` branch. Features and bug fixes for Helm 3 should target the `master` branch.
## Parting thoughts
The Helm team would like to thank the community for [nearly 3 years of contributions](https://github.com/helm/helm/releases/tag/v2.0.0) and [over 5,000 commits](https://github.com/helm/helm/tree/dev-v2) towards Helm 2 since its initial release.
Onwards and upwards!
================================================
FILE: blog/2019-10-30-helm-symlink-security-notice.md
================================================
---
title: "Helm Vulnerability: Client Loading and Packaging Chart Directory Containing Malicious Symlinked Content [CVE-2019-18658]"
authors: ["mattfarina"]
date: "2019-10-30"
---
Part of the process for Helm to become a graduated CNCF project is to complete an independent and third party security audit with the results being published. As part of the audit of Helm 3 a security issue was found that also impacts Helm v2. [Cure53](https://cure53.de/) performed the audit and found the issue. More about the audit will be covered in a future post.
The vulnerability found impacts **all versions of Helm between Helm >=2.0.0 and < 2.15.2**. Helm commands that deal with loading a chart as a directory or packaging a chart provide an opportunity for a maliciously designed chart to include content not intended in the chart or to execute a denial of service (DOS) on the computer performing the packaging via the use of symlinks.<!-- truncate -->
No version of Tiller is known to be impacted. This is a client-only issue.
The following Helm commands may unsafely handle malformed charts: `helm package`, `helm install`, `helm upgrade`, and `helm dependency build`.
We are unaware of any public exploits caused by this issue.
## Details
Helm charts can include symlinks. This feature provides a means of symlinking chart dependencies together when stored in a filesystem. Two types of symlinks can cause vulnerabilities.
1. A symlink to a specially crafted file on the targets system. For example, a file containing sensitive information. When someone runs `helm package` this symlinked file will be copied into the archive without any notification. When the packaged file is moved elsewhere, such as to a Helm repository, the sensitive file will be sent along.
2. A symlink to a special file, such as a device driver. For example, a symlink to `/dev/urandom`. This would cause a command like `helm install` or `helm package` to continuously read from `/dev/urandom` as it tries to create the payload.
No Tiller version is impacted. This vulnerability does not render clusters vulnerable to attack. Tiller does not load chart directories.
## Workarounds
A process work around can be used to mitigate the vulnerability. Do not load chart directories or package charts whose contents you do not trust or in an environment with sensitive information.
## Fix
Update to Helm >= 2.15.2.
As of Helm 2.15.2, Helm will log to output all of the symlinked files referenced when packaging a chart and it will return an error while failing to load chart directories containing symlinks to irregular files (e.g., device or unix socket).
================================================
FILE: blog/2019-11-04-helm-security-audit-results.md
================================================
---
title: "Helm Security Audit Results"
authors: ["mattfarina"]
date: "2019-11-04"
---
Today, the Helm Maintainers are proud to announce that we have successfully completed a 3rd party security audit for Helm 3. Helm has been recommended for public deployment.
A security audit is part of the graduation criteria for CNCF projects. Specifically, the [graduation criteria](https://github.com/cncf/toc/blob/main/process/graduation_criteria.adoc#graduation-stage) says:
> Have completed an independent and third party security audit with results published of similar scope and quality as the following example (including critical vulnerabilities addressed): https://github.com/envoyproxy/envoy#security-audit and all critical vulnerabilities need to be addressed before graduation.<!-- truncate -->
During October, the CNCF funded [Cure53](https://cure53.de/) to perform a security audit of Helm version 3. Cure53 has performed audits of other CNCF projects including Prometheus, Envoy, Jaeger, Notary, and others.
A [report from the security audit is available in the Helm community repo](https://github.com/helm/community/blob/main/security-audit/HLM-01-report.pdf). We recommend that you take a look at it for the details. The report covers their process, what they reviewed, and what they found. Their review included, but was not limited to:
* The programming language used along with patterns and the use of external libraries
* Access control which is different in Helm v3 than in Helm v2 due to the removal of Tiller
* How logging and monitoring are handled
* Unit and regression testing
* Documentation, including the security contacts and process
* The process for fixing security issues
* The software used for signing and verification of Helm charts
* Manipulation of chart files
* TLS handling for communications
From the Cure53 analysis there was only one noteworthy finding and it did not lead not an exploit. While the audit and issue were found to be in Helm v3 we also found the issue was present in Helm v2. Since Helm v2 has stable releases we announced a [security vulnerability](https://helm.sh/blog/2019-10-30-helm-symlink-security-notice/) and created a CVE.
The [entire report](https://github.com/helm/community/blob/main/security-audit/HLM-01-report.pdf) is worth reading as no summary can do it justice. Cure53 provided a conclusion as part of their summary which reads:
> To conclude, in light of the findings stemming from this CNCF-funded project, Cure53 can only state that the Helm project projects the impression of being highly mature. This verdict is driven by a number of different factors described above and essentially means that Helm can be recommended for public deployment, particularly when properly configured and secured in accordance to recommendations specified by the development team.
Security audits are one of the benefits of CNCF projects and we are grateful for them and the analysis performed by Cure53. This analysis has provided some concrete areas we can work to improve and given us confidence in what we have.
================================================
FILE: blog/2019-11-11-community-management.md
================================================
---
title: "Helm Community Management"
authors: ["mattfarina"]
date: "2019-11-11"
---
[Devstats](https://helm.devstats.cncf.io/) and stats on GitHub are able to capture many different types of contributions to an open source project. But there is one type of contribution for which we have yet to figure out a good metric, and it has been essential for Helm's success. That is community management.
Karen Chu has handled community management for Helm since the project was first announced at the inaugural KubeCon in San Francisco. Her work ranges from big things, like planning and executing two Helm Summits, down to smaller (but still essential) things like managing the [Helm twitter account](https://twitter.com/HelmPack).<!-- truncate -->
Until this point, Karen's role has been pseudo-official. There has been no Helm related title or sub-project of Helm for this work. We are happy to announce that we have now rectified the situation by formalizing community management as a sub-project of Helm with Karen as the person running the show.
Community managers do so much to make open source successful. Dave Neary, a community architect at Red Hat, highlighted some of the areas of value they bring in [a post about the roles filled by a community manager](https://community.redhat.com/blog/2018/01/the-many-faces-of-the-community-manager/). He talked about activities ranging from partnerships to developer enablement. We look forward to Karen's continued contributions in this space!
If you want to learn more about community management, Karen is part of a panel at KubeCon + CloudNativeCon North America 2019 entitled ["What’s Essential in an OSS Project Launch Playbook?"](https://sched.co/Uabt).
================================================
FILE: blog/2019-11-13-helm-3-released.md
================================================
---
title: "Helm 3.0.0 has been released!"
slug: "helm-3-released"
authors: ["mattfisher"]
date: "2019-11-13"
---
The Helm Team is proud to announce the first stable release of Helm 3.
Helm 3 is the latest major release of the CLI tool. Helm 3 builds upon the success of Helm 2, continuing to meet the needs of the evolving ecosystem.<!-- truncate -->
The internal implementation of Helm 3 has changed considerably from Helm 2. The most apparent change is the removal of Tiller, but it's worth checking out the other changes by diving into the new release. A rich set of new features have been added as a result of the community's input and requirements. Some features have been deprecated or refactored in ways that make them incompatible with Helm 2. Some new experimental features have also been introduced, including OCI support.
Additionally, the Helm Go SDK has been refactored for general use. The goal is to share and re-use code we've open sourced with the broader Go community. We are actively looking for feedback from other engineers integrating Helm in their own projects, and would love to hear from you in the [#helm-dev Kubernetes Slack channel](https://slack.k8s.io/).
Here are some Helm 3 resources:
- [Documentation](https://helm.sh/docs/)
- [FAQ: Changes since Helm 2](https://helm.sh/docs/faq/#changes-since-helm-2)
- [Installing Helm](https://helm.sh/docs/intro/install/)
- [Documentation on Helm 2 to Helm 3 migration](https://helm.sh/docs/topics/v2_v3_migration/)
- [Plugin to help migrate from Helm 2 to Helm 3](https://github.com/helm/helm-2to3)
- Chat with developers and contributors in the [#helm-users Kubernetes Slack channel](https://slack.k8s.io/)
- Please report bugs at <https://github.com/helm/helm/issues>
## What is Helm?
Helm gives teams the tools they need to collaborate when creating, installing, and managing applications inside of Kubernetes.
With Helm, you can...
- Find prepackaged software (charts) to install and use
- Easily create and host your own packages
- Install packages into any Kubernetes cluster
- Query the cluster to see what packages are installed and running
- Update, delete, rollback, or view the history of installed packages
Helm makes it easy to run applications inside Kubernetes.
## Let's see it!
Assuming you have a Kubernetes cluster running and a correctly configured `kubectl`, working with Helm is a piece of cake.
Helm makes it easy to search for new charts by adding repositories hosted by the community.
```bash
$ helm repo add nginx https://helm.nginx.com/stable
```
Once you've added a few repositories, you can search for charts:
```bash
$ helm search repo nginx-ingress
NAME CHART VERSION APP VERSION DESCRIPTION
nginx/nginx-ingress 0.3.7 1.5.7 NGINX Ingress Controller
```
Helm gives you a quick way to install that chart with `helm install`:
```bash
$ helm install my-ingress-controller nginx/nginx-ingress
```
If we inspect the cluster with `kubectl`:
```bash
$ kubectl get deployments
```
We have an ingress controller running! We can just as easily remove it with `helm uninstall my-ingress-controller`.
Okay. You've tried some charts. You've customized a few. And now you're ready to build your own. Helm makes that part easy, too.
```bash
$ helm create diy
Creating diy
```
Now you have a new chart named `diy`. You could go to that directory and edit it, run `helm template` to view the rendered output, or install it with `helm install`.
Want to submit it upstream to the [Helm Hub](https://hub.helm.sh/)? Please do! Make sure to follow the documentation on [adding your own repositories](https://github.com/helm/hub/blob/master/Repositories.md) to the Helm Hub.
## What changed in Helm 3?
You may be asking yourself at this point:
> How did the workflow change from Helm 2? If I run those commands with Helm 2, will I see the same output?
Helm 2 described a workflow for creating, installing, and managing charts. Helm 3 builds upon that workflow, changing the underlying infrastructure to meet the needs of the evolving ecosystem.
If you're comfortable with Helm 2, you'll feel right at home with Helm 3.
To learn more about what changed under the hood, [check out the FAQ](https://helm.sh/docs/faq/) in the documentation. A list of changes and explanations for the changes involved are provided there.
## The Future of Helm
The core maintainers are really excited to release Helm 3.0. Helm's next phase of development will see new features targeted toward stability and enhancements to existing features. Features on the road map include:
- Enhanced functionality for `helm test`
- Improvements to Helm's OCI integration
- Enhanced functionality for the Go client libraries
### Helm 2 Support Plan
In the Helm 2.15.0 release announcement, we shared details about the future plans for Helm 2. You can read more about those plans in [the announcement post](https://helm.sh/blog/2019-10-22-helm-2150-released/).
## Relation of Helm 3 to Helm 1 and 2
In November 2015, the first version of Helm was released at the first KubeCon. Modeled on the macOS software installer [Homebrew](https://brew.sh/), Helm 1 (known by the team as "Helm Classic") was designed to help individual developers create packages of Kubernetes resources and deploy them into a cluster.
A few months later (January 2016), Deis’ core Helm team joined forces with Google, Skippbox, and (shortly thereafter) Bitnami to produce a new version of Helm that shifted emphasis from individuals to teams. Along the way, we applied many of the lessons we’d learned. The result was a tool designed to not only make teamwork a central value, but also meet the needs of a burgeoning community of Kubernetes users who are installing sophisticated applications.
In June 2018, Helm [joined the Cloud Native Computing Foundation](https://helm.sh/blog/helm-enters-the-cncf/). Helm 3 became a joint community effort, with core maintainers including members from Microsoft, Samsung SDS, IBM, and Blood Orange. Since the first alpha release, Helm 3 has seen contributions from 37 different members of the community, spanning across many time zones. The end result is a tool that reflects the needs of its community as those change and evolve over time.
## Conclusion
We set out to build a tool that is an on-ramp to Kubernetes. We wanted to make it easier for the Kubernetes user to create, share, and run production-grade workloads.
Over 500 community members have contributed code to the Helm CLI since its inception. Thousands of community members actively maintain charts on the Helm Hub. There are a countless number of active community members. This is a credit to the colossal efforts of the Kubernetes community which has transformed this project from a simple Deis installer into a power tool for all Kubernetes users.
Thank you all, and see you on GitHub!
- The Helm Team :heart:
================================================
FILE: blog/2019-11-15-helm-at-cloudnativecon.md
================================================
---
title: "Helm at KubeCon + CloudNativeCon NA 2019"
authors: ["mattfarina"]
date: "2019-11-15"
---
Next week is the annual [KubeCon and CloudNativeCon in North America](https://events19.linuxfoundation.org/events/kubecon-cloudnativecon-north-america-2019/). The Helm project and maintainers have several things going on and we wanted to invite you to them.<!-- truncate -->
Helm will have two maintainer track sessions that focus on an [_Introduction to Helm_](https://sched.co/UajI) and a [_Helm 3 Deep Dive_](https://sched.co/Uagg). Anyone who is new to Helm or would be interested in learning how and why they should use Helm, please consider attending the _Introduction to Helm_. If you are curious about the [recently released Helm 3](https://helm.sh/blog/helm-3-released/), the _Helm 3 Deep Dive_ is for you. Please let others know about these talks if you think they will interest them!
This year also marks the first time the Helm project will have their own project specific booth! If you want to talk with the maintainers or have other questions about the project, the booth will be an excellent space to meet the people who regularly work on the project.
There are several exciting Helm-centric sessions from the community this year. For example, Ricarto Rocha from CERN will be presenting [_Managing Helm Deployments with Gitops at CERN_](https://sched.co/UabD). You can check the schedule to learn about other sessions in the [official schedule](https://events19.linuxfoundation.org/events/kubecon-cloudnativecon-north-america-2019/schedule/).
Going to be at the conference the weekend before it starts? [Cloud_Native Rejekts](https://cloud-native.rejekts.io/) will be going on and Taylor Thomas, one of the Helm project maintainers, will be presenting [_Advanced Interactions with Kubernetes (As Taught by Helm)_](https://cfp.cloud-native.rejekts.io/cloud-native-rejekts-na-2019/talk/SQ9DWX/).
================================================
FILE: blog/2020-04-02-covid-19-extending-helm-v2-bug-fixes.md
================================================
---
title: "COVID-19: Extending Helm v2 Bug Fixes"
slug: "covid-19-extending-helm-v2-bug-fixes"
date: "2020-04-03"
---
As our world comes together to fight the global pandemic, the Helm maintainers want to ensure that we're doing our part to help you maintain your critical systems while they are operating at peak demand in a time where normal development and operation schedules have had to be adjusted.<!-- truncate -->
When Helm v3 was released in November 2019, our original commitment was that we would offer six months of Helm v2 bug fixes, which would end May 13, 2020, followed by six more months of security fixes for Helm v2. Given the expectation that current priorities require a singular focus on fighting the pandemic, we now plan to release Helm v2 bug fixes for an extra three months, until August 13th, 2020, giving Helm users more time for serving their communities' most immediate needs.
We will monitor the situation to see if any additional adjustments are needed due to these circumstances. All Helm v2 support is currently still planned to end November 13th (with the window for security-only fixes now planned for three months). Join us in our [community calls, chats, mailing lists, and GitHub repositories](https://github.com/helm/community/blob/main/communication.md) if there is anything we can do to help unblock you in critical work, and stay safe!
================================================
FILE: blog/2020-04-30-celebrating-helms-cncf-graduation.md
================================================
---
title: "Celebrating Helm's CNCF Graduation"
slug: "celebrating-helms-cncf-graduation"
authors: ["mattbutcher"]
date: "2020-04-30"
---

Today we are happy to see Helm [reach the final stage of the CNCF ladder](https://www.cncf.io/announcement/2020/04/30/cloud-native-computing-foundation-announces-helm-graduation/). Helm has moved from the incubating level to the graduated level as a [CNCF project](https://www.cncf.io/projects/), alongside Kubernetes and other select projects.<!-- truncate -->
Given Helm's humble beginnings as a hackathon project at Deis, a small startup, we are ecstatic to see our little baby all grown up. And we have certainly learned a lot about coding, community, and organizational politics over the last five years. But those are not the big reasons why we are celebrating Helm's graduation.
Several months after Helm got started, we became a sub-project of Kubernetes itself. It was early 2016, and in short order we had gone from a side project to a viable package manager in the Kubernetes ecosystem. While Kubernetes had focused on the SRE and DevOps story, not masking complexity, Helm took a different approach. During a meeting in February of 2016, [Michelle Noorali](https://twitter.com/michellenoorali) wrote the following phrase on our whiteboard: "Zero to dopamine in five minutes." That was our Helm mantra: We saw an opportunity to make Kubernetes more approachable to newcomers. If we did things right, users could install Helm and then within minutes be installing production-grade off-the-shelf components.
These days, Helm is [used by over 70% of Kubernetes users](https://www.cncf.io/wp-content/uploads/2020/03/CNCF_Survey_Report.pdf), from college students to major cloud providers. But we are most proud when we hear stories of Kubernetes newcomers getting up and running quickly because of Helm.
Be that as it may, Helm's graduation marks a second distinction. Since the first commits to Helm, we called it "the package manager for Kubernetes," meaning that our overall design focus would be enabling redistribution, installation, upgrade, and deletion of bundles of Kubernetes resource definitions. Our goal was to be for Kubernetes what homebrew is to macOS, apt-get is to Debian/Ubuntu, and Chocolatey is to Windows.
At the time, it seemed like a modest goal. After all, Kubernetes (at version 1.2) had very few users. But Kubernetes exploded in popularity. A few notable companies began running it in production. Then major cloud providers built hosted Kubernetes offerings. And then large enterprises known for focusing on stability rather than shininess also began using Kubernetes in earnest. This was an acid test for Helm. Could we meet the needs of hundreds of thousands of users, all with different goals and desires? It appears so.
The term "graduation" confers the idea that a notable set of requirements has been completed. While we are thrilled to have a tremendous user base, CNCF publishes a list of criteria designed to test for enterprise-readiness. Stability, security, healthy governance, strong community -- these things are an absolute necessity if a large open source project is to succeed.
CNCF states that [projects](https://www.cncf.io/projects/) can only graduate when they demonstrate that they are ready for the mainstream majority of users. The list of criteria for moving from incubation to graduation defines what it means to be a stable open source project. Helm took the graduation criteria to heart. Helm didn't just pass our security review, we did so with flying colors. We didn't just qualify for the [CII badge](https://bestpractices.coreinfrastructure.org/en), we scored a [198% on the certification test](https://bestpractices.coreinfrastructure.org/en/projects?q=helm%20package%20manager). While we only needed two committers from two different companies, we have many, many contributors from all over the globe. And over the years we have repeatedly demonstrated our commitment to open and fair governance.
And so we stand at this milestone. We completed the last requirement for graduation: the CNCF Technical Oversight Committee (TOC) has voted by supermajority in agreement that Helm is now a top-level project.
So what changes are in store for Helm in the future? Process-wise, things will remain as they already are. We will continue our unwavering commitment to stability and compatibility from major version to major version. We have begun the very earliest investigations into what Helm 4 may have in store. And we are (as always) eager to welcome new participants into our community, from helpful users who want to share their experiences through seasoned experts who wish to contribute substantial time to the upkeep of the project. Moreover, we are excited for the [CNCF's Artifact Hub](https://devclass.com/2020/03/12/cncf-starts-new-artifact-hub/) project, which we believe will truly bring together several major movements within CNCF. We are excited to continue working with CNCF's community.
We would like to continue our tradition of ending our Helm articles with a huge thank-you to the tens of thousands of community members who have, in ways small and large, contributed to the success of Helm. Here's to many more years of providing that "zero to dopamine in five minutes" experience to all Kubernetes users!
================================================
FILE: blog/2020-08-13-helm-v2-deprecation-timeline.md
================================================
---
title: "Helm v2 Deprecation Timeline"
slug: "helm-v2-deprecation-timeline"
authors: ["bridgetkromhout"]
date: "2020-08-12"
---
_[with a nod to Lewis Carroll...](https://www.jabberwocky.com/carroll/walrus.html)_
“The time has come,” the maintainers said,
“To talk of software fates:
Of upgrades -- and shipping Helm v3 --
Of bugfixes -- and k8s --”
[Helm v3 was released in November 2019](/blog/helm-3-released/), the result of ongoing community effort to evolve Helm to meet the community’s needs. With a streamlined client-only experience, a renewed focus on security, and tighter integration with Kubernetes APIs, Helm v3 continues to provide production-tested package management for Kubernetes. And as a [graduated CNCF project](/blog/celebrating-helms-cncf-graduation/), Helm is a key part of the cloud native ecosystem.
<!-- truncate -->
We recognize that rolling out a major version change in production requires time. The Helm maintainers committed to providing bugfixes for Helm v2 until May 2020 (which they [extended to August 2020](/blog/covid-19-extending-helm-v2-bug-fixes/)) and security patches for Helm v2 until November 2020. And now the bugfix window is closing; [Helm v2.16.10](https://github.com/helm/helm/releases/tag/v2.16.10) will be the final bugfix release and 2.17.0 will follow with the [download location updated](https://github.com/helm/helm/issues/8346).
## What does this mean for Helm users?
_After August 13, 2020, you will see these changes:_
- If you’re still using Helm v2, you will want to [migrate to Helm v3](/blog/migrate-from-helm-v2-to-helm-v3/) now. Helm 3.2.4 is widely used and production-ready. While largely backwards-compatible, there are specific changes you’ll want to be aware of when carrying out your migration.
- Starting now, ongoing support of Helm v2 is limited to the next three months of security patches. That means we will no longer be accepting pull requests for anything but verified security issues.
- The `stable` and `incubator` repos will be de-listed from the Helm Hub, [introduced in December 2018](/blog/intro-helm-hub/). Find your preferred repositories on [Helm Hub](https://hub.helm.sh) to add them to your configs, and [track the migration of charts to their new decentralized locations](https://github.com/helm/charts/issues/21103).
_After November 13, 2020, you will see these changes:_
- No further Helm v2 releases (even for security patches)
- No further updates to [Helm v2 documentation](https://v2.helm.sh/docs), which will remain available for the present time but may be discontinued
- Existing and new issues/PRs that are v2-specific will be closed
- [Transitioning Helm release and chart hosting ownership to CNCF](https://github.com/helm/community/issues/114)
| | |
| - | - |
| To Be Removed | Replacement |
| Download links for the Helm v2 client through Google Cloud Storage | Client downloads through [get.helm.sh](/blog/get-helm-sh/)|
| Docker image for Tiller stored in Google Container Registry | We will distribute a Tiller image that will be [made available at an alternative location](https://github.com/helm/helm/issues/8346) which can be updated with helm init --tiller-image. |
| Google Cloud buckets for the stable and incubator chart repositories | “Stable” and “incubator” repositories discontinued; https://github.com/helm/charts marked as obsolete |
The community has found Helm v3 to be a vastly improved experience, and community resources like the [helm-2to3 plugin](https://github.com/helm/helm-2to3) are available to assist you in your essential migration. Please ensure that you migrate to Helm v3 before the November 13th deadline, as operating software which no longer receives security patches is a risk best avoided.
We want to take this moment to thank everyone in the community who has used Helm or contributed an issue or pull request to help improve it. Many great ideas that don’t fit into Helm itself have much success as [related ecosystem projects](/community/related). Every time you submit updates to the docs, you’re helping others get started and be more effective with Helm. Thank you all!
================================================
FILE: blog/2020-10-07-helm-hub-moving-artifact-hub.md
================================================
---
title: "Helm Hub Moving To Artifact Hub"
slug: "helm-hub-moving-to-artifact-hub"
authors: ["mattfarina"]
date: "2020-10-07"
---
Today, we are happy to announce that
gitextract_c40cox6w/ ├── .containerignore ├── .editorconfig ├── .github/ │ └── workflows/ │ ├── build.yml │ ├── stale.yml │ ├── typos.yml │ └── update-community-docs.yml ├── .gitignore ├── .markdownlint.json ├── .netlify/ │ └── state.json ├── .nvmrc ├── .typos.toml ├── .vscode/ │ └── launch.json ├── AGENTS.md ├── ARCHITECTURAL_DECISIONS.md ├── CONTRIBUTING-ko.md ├── CONTRIBUTING.md ├── Containerfile ├── HELM2-TO-DOCUSAURUS.md ├── HELM3-TO-DOCUSAURUS.md ├── LICENSE ├── Makefile ├── OWNERS ├── README-ko.md ├── README.md ├── blog/ │ ├── 2018-06-01-cncf.md │ ├── 2018-07-23-bring-helm-home.md │ ├── 2018-07-24-helm-emeritus-rimus.md │ ├── 2018-08-27-helm-switch-dco.md │ ├── 2018-09-07-new-gov-and-elections.md │ ├── 2018-09-25-chart-testing-intro.md │ ├── 2018-10-04-helm-org-maintainers.md │ ├── 2018-12-11-helm-hub.md │ ├── 2019-01-14-chartmuseum-security-notice.md │ ├── 2019-01-14-helm-security-notice.md │ ├── 2019-04-18-helm-summit-eu-2019.md │ ├── 2019-04-22-helm-3-preview-pt1.md │ ├── 2019-04-25-helm-3-preview-pt2.md │ ├── 2019-04-29-helm-3-preview-pt3.md │ ├── 2019-05-02-helm-3-preview-pt4.md │ ├── 2019-05-06-helm-3-preview-pt5.md │ ├── 2019-05-09-helm-3-preview-pt6.md │ ├── 2019-05-13-helm-3-preview-pt7.md │ ├── 2019-06-10-get-helm-sh.md │ ├── 2019-08-27-helm-v3-beta.md │ ├── 2019-09-11-migrate-from-helm-v2-to-helm-v3.md │ ├── 2019-10-22-helm-2150-released.md │ ├── 2019-10-30-helm-symlink-security-notice.md │ ├── 2019-11-04-helm-security-audit-results.md │ ├── 2019-11-11-community-management.md │ ├── 2019-11-13-helm-3-released.md │ ├── 2019-11-15-helm-at-cloudnativecon.md │ ├── 2020-04-02-covid-19-extending-helm-v2-bug-fixes.md │ ├── 2020-04-30-celebrating-helms-cncf-graduation.md │ ├── 2020-08-13-helm-v2-deprecation-timeline.md │ ├── 2020-10-07-helm-hub-moving-artifact-hub.md │ ├── 2020-10-19-helm-turns-five.md │ ├── 2020-10-26-new-location-stable-incubator-charts.md │ ├── 2020-10-30-charts-repo-deprecation.md │ ├── 2020-11-11-helm-release-process.md │ ├── 2020-11-13-helm-2-becomes-unsupported.md │ ├── 2021-03-05-second-security-audit/ │ │ └── index.md │ ├── 2021-06-24-welcome-martin-hickey.md │ ├── 2022-01-11-welcome-karen-chu.md │ ├── 2022-02-28-storing-charts-in-oci.md │ ├── 2022-04-19-tools-to-manage-helm-declaratively.md │ ├── 2022-10-14-helm-at-kubecon-na-22.md │ ├── 2022-11-14-welcome-yxxhero.md │ ├── 2023-03-31-helm-completes-fuzzing-security-audit.md │ ├── 2023-05-15-helm-oci-mediatypes.md │ ├── 2023-09-29-helm-3.13.md │ ├── 2024-03-14-cve-2019-25210.md │ ├── 2024-06-26-the-road-to-helm-4.md │ ├── 2024-07-16-helm2to3-becomes-unsupported.md │ ├── 2024-10-07-kubecon-na-24/ │ │ └── index.md │ ├── 2024-11-08-experience-helm-release-kubecon-na-24.md │ ├── 2025-08-19-debian-helm-repository-move.md │ ├── 2025-09-09-path-to-helm-v4.md │ ├── 2025-10-19-helm-turns-10/ │ │ └── index.md │ ├── 2025-11-04-helm-at-kubecon-na-25.md │ ├── 2025-11-17-helm-4-released/ │ │ └── index.md │ ├── authors.yml │ └── helm-at-kubecon-eu-25.md ├── code-of-conduct.md ├── community/ │ ├── MAINTAINERS.md │ ├── README.md │ ├── SECURITY.md │ ├── art/ │ │ └── readme.md │ ├── blog-topics.md │ ├── code-of-conduct.md │ ├── communication.md │ ├── developers.md │ ├── governance/ │ │ ├── README.md │ │ ├── _category_.json │ │ └── governance.md │ ├── hips/ │ │ ├── README.md │ │ ├── archives/ │ │ │ ├── README.md │ │ │ ├── helm/ │ │ │ │ ├── distributed-search.md │ │ │ │ └── helm-v3/ │ │ │ │ ├── 000-helm-v3.md │ │ │ │ ├── 001-charts.md │ │ │ │ ├── 002-events.md │ │ │ │ ├── 003-state.md │ │ │ │ ├── 004-hooks.md │ │ │ │ ├── 005-plugins.md │ │ │ │ ├── 006-repositories.md │ │ │ │ ├── 007-security.md │ │ │ │ ├── 008-controller.md │ │ │ │ ├── 009-package_manager.md │ │ │ │ ├── 010-removed.md │ │ │ │ ├── 011-user_stories.md │ │ │ │ ├── 012-chart-dev-stories.md │ │ │ │ └── research/ │ │ │ │ └── package-manager-ux.md │ │ │ └── monocular/ │ │ │ └── 1.0-improvements.md │ │ ├── hip-0001.md │ │ ├── hip-0002.md │ │ ├── hip-0003.md │ │ ├── hip-0004.md │ │ ├── hip-0005.md │ │ ├── hip-0006.md │ │ ├── hip-0007.md │ │ ├── hip-0008.md │ │ ├── hip-0009.md │ │ ├── hip-0010.md │ │ ├── hip-0011.md │ │ ├── hip-0012.md │ │ ├── hip-0014.md │ │ ├── hip-0015.md │ │ ├── hip-0016.md │ │ ├── hip-0017.md │ │ ├── hip-0018.md │ │ ├── hip-0019.md │ │ ├── hip-0020.md │ │ ├── hip-0021.md │ │ ├── hip-0022.md │ │ ├── hip-0023.md │ │ ├── hip-0024.md │ │ ├── hip-0025.md │ │ └── hip-0026.md │ ├── history.mdx │ ├── incubator.md │ ├── localization.md │ ├── meeting-notes/ │ │ ├── 2017.md │ │ ├── 2018.md │ │ ├── 2019.md │ │ ├── 2020.md │ │ ├── 2021.md │ │ └── index.mdx │ ├── related.md │ ├── release_checklist.md │ ├── release_policy.md │ ├── stable-repo-charts-new-locations.md │ └── user-profiles.md ├── docs/ │ ├── _v4-in-progress.mdx │ ├── changelog.md │ ├── chart_best_practices/ │ │ ├── conventions.md │ │ ├── custom_resource_definitions.md │ │ ├── dependencies.mdx │ │ ├── index.mdx │ │ ├── labels.md │ │ ├── pods.md │ │ ├── rbac.md │ │ ├── templates.md │ │ └── values.md │ ├── chart_template_guide/ │ │ ├── accessing_files.md │ │ ├── builtin_objects.md │ │ ├── control_structures.md │ │ ├── data_types.md │ │ ├── debugging.md │ │ ├── function_list.mdx │ │ ├── functions_and_pipelines.mdx │ │ ├── getting_started.md │ │ ├── helm_ignore_file.md │ │ ├── index.mdx │ │ ├── named_templates.md │ │ ├── notes_files.md │ │ ├── subcharts_and_globals.md │ │ ├── values_files.mdx │ │ ├── variables.md │ │ ├── wrapping_up.md │ │ └── yaml_techniques.md │ ├── glossary/ │ │ └── index.mdx │ ├── helm/ │ │ ├── _category_.json │ │ ├── helm.md │ │ ├── helm_completion.md │ │ ├── helm_completion_bash.md │ │ ├── helm_completion_fish.md │ │ ├── helm_completion_powershell.md │ │ ├── helm_completion_zsh.md │ │ ├── helm_create.md │ │ ├── helm_dependency.md │ │ ├── helm_dependency_build.md │ │ ├── helm_dependency_list.md │ │ ├── helm_dependency_update.md │ │ ├── helm_env.md │ │ ├── helm_get.md │ │ ├── helm_get_all.md │ │ ├── helm_get_hooks.md │ │ ├── helm_get_manifest.md │ │ ├── helm_get_metadata.md │ │ ├── helm_get_notes.md │ │ ├── helm_get_values.md │ │ ├── helm_history.md │ │ ├── helm_install.md │ │ ├── helm_lint.md │ │ ├── helm_list.md │ │ ├── helm_package.md │ │ ├── helm_plugin.md │ │ ├── helm_plugin_install.md │ │ ├── helm_plugin_list.md │ │ ├── helm_plugin_package.md │ │ ├── helm_plugin_uninstall.md │ │ ├── helm_plugin_update.md │ │ ├── helm_plugin_verify.md │ │ ├── helm_pull.md │ │ ├── helm_push.md │ │ ├── helm_registry.md │ │ ├── helm_registry_login.md │ │ ├── helm_registry_logout.md │ │ ├── helm_repo.md │ │ ├── helm_repo_add.md │ │ ├── helm_repo_index.md │ │ ├── helm_repo_list.md │ │ ├── helm_repo_remove.md │ │ ├── helm_repo_update.md │ │ ├── helm_rollback.md │ │ ├── helm_search.md │ │ ├── helm_search_hub.md │ │ ├── helm_search_repo.md │ │ ├── helm_show.md │ │ ├── helm_show_all.md │ │ ├── helm_show_chart.md │ │ ├── helm_show_crds.md │ │ ├── helm_show_readme.md │ │ ├── helm_show_values.md │ │ ├── helm_status.md │ │ ├── helm_template.md │ │ ├── helm_test.md │ │ ├── helm_uninstall.md │ │ ├── helm_upgrade.md │ │ ├── helm_verify.md │ │ ├── helm_version.md │ │ └── index.mdx │ ├── howto/ │ │ ├── chart_releaser_action.md │ │ ├── chart_repository_sync_example.md │ │ ├── charts_tips_and_tricks.md │ │ └── index.mdx │ ├── index.mdx │ ├── intro/ │ │ ├── CheatSheet.mdx │ │ ├── index.mdx │ │ ├── install.mdx │ │ ├── quickstart.md │ │ └── using_helm.mdx │ ├── overview.md │ ├── plugins/ │ │ ├── developer/ │ │ │ ├── index.mdx │ │ │ ├── tutorial-cli-plugin.mdx │ │ │ ├── tutorial-getter-plugin.mdx │ │ │ └── tutorial-postrenderer-plugin.mdx │ │ ├── index.mdx │ │ ├── overview.md │ │ └── user/ │ │ └── index.md │ ├── sdk/ │ │ ├── examples.mdx │ │ ├── gosdk.mdx │ │ └── index.mdx │ └── topics/ │ ├── advanced.mdx │ ├── architecture.md │ ├── chart_repository.md │ ├── chart_tests.md │ ├── charts.mdx │ ├── charts_hooks.md │ ├── index.mdx │ ├── kubernetes_apis.md │ ├── kubernetes_distros.md │ ├── library_charts.md │ ├── permissions_sql_storage_backend.md │ ├── plugins.mdx │ ├── provenance.mdx │ ├── rbac.md │ ├── registries.mdx │ └── version_skew.mdx ├── docusaurus.config.js ├── i18n/ │ ├── de/ │ │ ├── code.json │ │ ├── docusaurus-plugin-content-blog/ │ │ │ └── options.json │ │ ├── docusaurus-plugin-content-docs/ │ │ │ ├── current.json │ │ │ ├── version-2.json │ │ │ ├── version-3/ │ │ │ │ ├── chart_best_practices/ │ │ │ │ │ ├── conventions.md │ │ │ │ │ ├── custom_resource_definitions.md │ │ │ │ │ ├── dependencies.md │ │ │ │ │ ├── labels.md │ │ │ │ │ ├── pods.md │ │ │ │ │ ├── rbac.md │ │ │ │ │ ├── templates.md │ │ │ │ │ └── values.md │ │ │ │ ├── chart_template_guide/ │ │ │ │ │ ├── accessing_files.md │ │ │ │ │ ├── builtin_objects.md │ │ │ │ │ ├── control_structures.md │ │ │ │ │ ├── data_types.md │ │ │ │ │ ├── debugging.md │ │ │ │ │ ├── function_list.md │ │ │ │ │ ├── functions_and_pipelines.md │ │ │ │ │ ├── getting_started.md │ │ │ │ │ ├── helm_ignore_file.md │ │ │ │ │ ├── named_templates.md │ │ │ │ │ ├── notes_files.md │ │ │ │ │ ├── subcharts_and_globals.md │ │ │ │ │ ├── values_files.md │ │ │ │ │ ├── variables.md │ │ │ │ │ ├── wrapping_up.md │ │ │ │ │ └── yaml_techniques.md │ │ │ │ ├── faq/ │ │ │ │ │ ├── changes_since_helm2.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── installing.md │ │ │ │ │ ├── troubleshooting.md │ │ │ │ │ └── uninstalling.md │ │ │ │ ├── glossary/ │ │ │ │ │ └── index.mdx │ │ │ │ ├── helm/ │ │ │ │ │ ├── helm.md │ │ │ │ │ ├── helm_completion.md │ │ │ │ │ ├── helm_completion_bash.md │ │ │ │ │ ├── helm_completion_fish.md │ │ │ │ │ ├── helm_completion_powershell.md │ │ │ │ │ ├── helm_completion_zsh.md │ │ │ │ │ ├── helm_create.md │ │ │ │ │ ├── helm_dependency.md │ │ │ │ │ ├── helm_dependency_build.md │ │ │ │ │ ├── helm_dependency_list.md │ │ │ │ │ ├── helm_dependency_update.md │ │ │ │ │ ├── helm_env.md │ │ │ │ │ ├── helm_get.md │ │ │ │ │ ├── helm_get_all.md │ │ │ │ │ ├── helm_get_hooks.md │ │ │ │ │ ├── helm_get_manifest.md │ │ │ │ │ ├── helm_get_metadata.md │ │ │ │ │ ├── helm_get_notes.md │ │ │ │ │ ├── helm_get_values.md │ │ │ │ │ ├── helm_history.md │ │ │ │ │ ├── helm_install.md │ │ │ │ │ ├── helm_lint.md │ │ │ │ │ ├── helm_list.md │ │ │ │ │ ├── helm_package.md │ │ │ │ │ ├── helm_plugin.md │ │ │ │ │ ├── helm_plugin_install.md │ │ │ │ │ ├── helm_plugin_list.md │ │ │ │ │ ├── helm_plugin_uninstall.md │ │ │ │ │ ├── helm_plugin_update.md │ │ │ │ │ ├── helm_pull.md │ │ │ │ │ ├── helm_push.md │ │ │ │ │ ├── helm_registry.md │ │ │ │ │ ├── helm_registry_login.md │ │ │ │ │ ├── helm_registry_logout.md │ │ │ │ │ ├── helm_repo.md │ │ │ │ │ ├── helm_repo_add.md │ │ │ │ │ ├── helm_repo_index.md │ │ │ │ │ ├── helm_repo_list.md │ │ │ │ │ ├── helm_repo_remove.md │ │ │ │ │ ├── helm_repo_update.md │ │ │ │ │ ├── helm_rollback.md │ │ │ │ │ ├── helm_search.md │ │ │ │ │ ├── helm_search_hub.md │ │ │ │ │ ├── helm_search_repo.md │ │ │ │ │ ├── helm_show.md │ │ │ │ │ ├── helm_show_all.md │ │ │ │ │ ├── helm_show_chart.md │ │ │ │ │ ├── helm_show_crds.md │ │ │ │ │ ├── helm_show_readme.md │ │ │ │ │ ├── helm_show_values.md │ │ │ │ │ ├── helm_status.md │ │ │ │ │ ├── helm_template.md │ │ │ │ │ ├── helm_test.md │ │ │ │ │ ├── helm_uninstall.md │ │ │ │ │ ├── helm_upgrade.md │ │ │ │ │ ├── helm_verify.md │ │ │ │ │ └── helm_version.md │ │ │ │ ├── howto/ │ │ │ │ │ ├── chart_releaser_action.md │ │ │ │ │ ├── chart_repository_sync_example.md │ │ │ │ │ ├── charts_tips_and_tricks.md │ │ │ │ │ └── index.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── intro/ │ │ │ │ │ ├── CheatSheet.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── install.md │ │ │ │ │ ├── quickstart.md │ │ │ │ │ └── using_helm.md │ │ │ │ ├── sdk/ │ │ │ │ │ └── gosdk.md │ │ │ │ └── topics/ │ │ │ │ ├── advanced.md │ │ │ │ ├── architecture.md │ │ │ │ ├── chart_repository.md │ │ │ │ ├── chart_tests.md │ │ │ │ ├── charts.md │ │ │ │ ├── charts_hooks.md │ │ │ │ ├── kubernetes_apis.md │ │ │ │ ├── kubernetes_distros.md │ │ │ │ ├── library_charts.md │ │ │ │ ├── permissions_sql_storage_backend.md │ │ │ │ ├── plugins.md │ │ │ │ ├── provenance.md │ │ │ │ ├── rbac.md │ │ │ │ ├── registries.md │ │ │ │ ├── v2_v3_migration.md │ │ │ │ └── version_skew.md │ │ │ └── version-3.json │ │ ├── docusaurus-plugin-content-docs-community/ │ │ │ └── current/ │ │ │ └── release_policy.md │ │ └── docusaurus-theme-classic/ │ │ ├── footer.json │ │ └── navbar.json │ ├── el/ │ │ ├── code.json │ │ ├── docusaurus-plugin-content-blog/ │ │ │ └── options.json │ │ ├── docusaurus-plugin-content-docs/ │ │ │ ├── current.json │ │ │ ├── version-2.json │ │ │ ├── version-3/ │ │ │ │ ├── chart_best_practices/ │ │ │ │ │ ├── conventions.md │ │ │ │ │ ├── custom_resource_definitions.md │ │ │ │ │ ├── dependencies.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── labels.md │ │ │ │ │ ├── pods.md │ │ │ │ │ ├── rbac.md │ │ │ │ │ ├── templates.md │ │ │ │ │ └── values.md │ │ │ │ ├── chart_template_guide/ │ │ │ │ │ ├── accessing_files.md │ │ │ │ │ ├── builtin_objects.md │ │ │ │ │ ├── control_structures.md │ │ │ │ │ ├── data_types.md │ │ │ │ │ ├── debugging.md │ │ │ │ │ ├── functions_and_pipelines.md │ │ │ │ │ ├── getting_started.md │ │ │ │ │ ├── helm_ignore_file.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── named_templates.md │ │ │ │ │ ├── notes_files.md │ │ │ │ │ ├── subcharts_and_globals.md │ │ │ │ │ ├── values_files.md │ │ │ │ │ ├── variables.md │ │ │ │ │ ├── wrapping_up.md │ │ │ │ │ └── yaml_techniques.md │ │ │ │ ├── faq/ │ │ │ │ │ ├── changes_since_helm2.md │ │ │ │ │ ├── installing.md │ │ │ │ │ ├── troubleshooting.md │ │ │ │ │ └── uninstalling.md │ │ │ │ ├── helm/ │ │ │ │ │ ├── helm.md │ │ │ │ │ ├── helm_completion.md │ │ │ │ │ ├── helm_completion_bash.md │ │ │ │ │ ├── helm_completion_fish.md │ │ │ │ │ ├── helm_completion_powershell.md │ │ │ │ │ ├── helm_completion_zsh.md │ │ │ │ │ ├── helm_create.md │ │ │ │ │ ├── helm_dependency.md │ │ │ │ │ ├── helm_dependency_build.md │ │ │ │ │ ├── helm_dependency_list.md │ │ │ │ │ ├── helm_dependency_update.md │ │ │ │ │ ├── helm_env.md │ │ │ │ │ ├── helm_get.md │ │ │ │ │ ├── helm_get_all.md │ │ │ │ │ ├── helm_get_hooks.md │ │ │ │ │ ├── helm_get_manifest.md │ │ │ │ │ ├── helm_get_metadata.md │ │ │ │ │ ├── helm_get_notes.md │ │ │ │ │ ├── helm_get_values.md │ │ │ │ │ ├── helm_history.md │ │ │ │ │ ├── helm_install.md │ │ │ │ │ ├── helm_lint.md │ │ │ │ │ ├── helm_list.md │ │ │ │ │ ├── helm_package.md │ │ │ │ │ ├── helm_plugin.md │ │ │ │ │ ├── helm_plugin_install.md │ │ │ │ │ ├── helm_plugin_list.md │ │ │ │ │ ├── helm_plugin_uninstall.md │ │ │ │ │ ├── helm_plugin_update.md │ │ │ │ │ ├── helm_pull.md │ │ │ │ │ ├── helm_push.md │ │ │ │ │ ├── helm_registry.md │ │ │ │ │ ├── helm_registry_login.md │ │ │ │ │ ├── helm_registry_logout.md │ │ │ │ │ ├── helm_repo.md │ │ │ │ │ ├── helm_repo_add.md │ │ │ │ │ ├── helm_repo_index.md │ │ │ │ │ ├── helm_repo_list.md │ │ │ │ │ ├── helm_repo_remove.md │ │ │ │ │ ├── helm_repo_update.md │ │ │ │ │ ├── helm_rollback.md │ │ │ │ │ ├── helm_search.md │ │ │ │ │ ├── helm_search_hub.md │ │ │ │ │ ├── helm_search_repo.md │ │ │ │ │ ├── helm_show.md │ │ │ │ │ ├── helm_show_all.md │ │ │ │ │ ├── helm_show_chart.md │ │ │ │ │ ├── helm_show_crds.md │ │ │ │ │ ├── helm_show_readme.md │ │ │ │ │ ├── helm_show_values.md │ │ │ │ │ ├── helm_status.md │ │ │ │ │ ├── helm_template.md │ │ │ │ │ ├── helm_test.md │ │ │ │ │ ├── helm_uninstall.md │ │ │ │ │ ├── helm_upgrade.md │ │ │ │ │ ├── helm_verify.md │ │ │ │ │ └── helm_version.md │ │ │ │ ├── howto/ │ │ │ │ │ ├── chart_releaser_action.md │ │ │ │ │ ├── chart_repository_sync_example.md │ │ │ │ │ └── charts_tips_and_tricks.md │ │ │ │ ├── index.mdx │ │ │ │ ├── intro/ │ │ │ │ │ ├── CheatSheet.md │ │ │ │ │ ├── install.md │ │ │ │ │ ├── quickstart.md │ │ │ │ │ └── using_helm.md │ │ │ │ ├── sdk/ │ │ │ │ │ ├── examples.mdx │ │ │ │ │ └── gosdk.md │ │ │ │ └── topics/ │ │ │ │ ├── advanced.md │ │ │ │ ├── architecture.md │ │ │ │ ├── chart_repository.md │ │ │ │ ├── chart_tests.md │ │ │ │ ├── charts.md │ │ │ │ ├── charts_hooks.md │ │ │ │ ├── kubernetes_apis.md │ │ │ │ ├── kubernetes_distros.md │ │ │ │ ├── library_charts.md │ │ │ │ ├── permissions_sql_storage_backend.md │ │ │ │ ├── plugins.md │ │ │ │ ├── provenance.md │ │ │ │ ├── rbac.md │ │ │ │ ├── registries.md │ │ │ │ ├── v2_v3_migration.md │ │ │ │ └── version_skew.md │ │ │ └── version-3.json │ │ ├── docusaurus-plugin-content-docs-community/ │ │ │ └── current/ │ │ │ └── release_policy.md │ │ └── docusaurus-theme-classic/ │ │ ├── footer.json │ │ └── navbar.json │ ├── es/ │ │ ├── code.json │ │ ├── docusaurus-plugin-content-blog/ │ │ │ └── options.json │ │ ├── docusaurus-plugin-content-docs/ │ │ │ ├── current.json │ │ │ ├── version-2.json │ │ │ ├── version-3/ │ │ │ │ ├── chart_best_practices/ │ │ │ │ │ ├── conventions.md │ │ │ │ │ ├── custom_resource_definitions.md │ │ │ │ │ ├── dependencies.md │ │ │ │ │ ├── labels.md │ │ │ │ │ ├── pods.md │ │ │ │ │ ├── rbac.md │ │ │ │ │ ├── templates.md │ │ │ │ │ └── values.md │ │ │ │ ├── chart_template_guide/ │ │ │ │ │ ├── accessing_files.md │ │ │ │ │ ├── builtin_objects.md │ │ │ │ │ ├── control_structures.md │ │ │ │ │ ├── data_types.md │ │ │ │ │ ├── debugging.md │ │ │ │ │ ├── function_list.md │ │ │ │ │ ├── functions_and_pipelines.md │ │ │ │ │ ├── getting_started.md │ │ │ │ │ ├── helm_ignore_file.md │ │ │ │ │ ├── named_templates.md │ │ │ │ │ ├── notes_files.md │ │ │ │ │ ├── subcharts_and_globals.md │ │ │ │ │ ├── values_files.md │ │ │ │ │ ├── variables.md │ │ │ │ │ ├── wrapping_up.md │ │ │ │ │ └── yaml_techniques.md │ │ │ │ ├── faq/ │ │ │ │ │ ├── changes_since_helm2.md │ │ │ │ │ ├── installing.md │ │ │ │ │ ├── troubleshooting.md │ │ │ │ │ └── uninstalling.md │ │ │ │ ├── helm/ │ │ │ │ │ ├── helm.md │ │ │ │ │ ├── helm_completion.md │ │ │ │ │ ├── helm_completion_bash.md │ │ │ │ │ ├── helm_completion_fish.md │ │ │ │ │ ├── helm_completion_powershell.md │ │ │ │ │ ├── helm_completion_zsh.md │ │ │ │ │ ├── helm_create.md │ │ │ │ │ ├── helm_dependency.md │ │ │ │ │ ├── helm_dependency_build.md │ │ │ │ │ ├── helm_dependency_list.md │ │ │ │ │ ├── helm_dependency_update.md │ │ │ │ │ ├── helm_env.md │ │ │ │ │ ├── helm_get.md │ │ │ │ │ ├── helm_get_all.md │ │ │ │ │ ├── helm_get_hooks.md │ │ │ │ │ ├── helm_get_manifest.md │ │ │ │ │ ├── helm_get_metadata.md │ │ │ │ │ ├── helm_get_notes.md │ │ │ │ │ ├── helm_get_values.md │ │ │ │ │ ├── helm_history.md │ │ │ │ │ ├── helm_install.md │ │ │ │ │ ├── helm_lint.md │ │ │ │ │ ├── helm_list.md │ │ │ │ │ ├── helm_package.md │ │ │ │ │ ├── helm_plugin.md │ │ │ │ │ ├── helm_plugin_install.md │ │ │ │ │ ├── helm_plugin_list.md │ │ │ │ │ ├── helm_plugin_uninstall.md │ │ │ │ │ ├── helm_plugin_update.md │ │ │ │ │ ├── helm_pull.md │ │ │ │ │ ├── helm_push.md │ │ │ │ │ ├── helm_registry.md │ │ │ │ │ ├── helm_registry_login.md │ │ │ │ │ ├── helm_registry_logout.md │ │ │ │ │ ├── helm_repo.md │ │ │ │ │ ├── helm_repo_add.md │ │ │ │ │ ├── helm_repo_index.md │ │ │ │ │ ├── helm_repo_list.md │ │ │ │ │ ├── helm_repo_remove.md │ │ │ │ │ ├── helm_repo_update.md │ │ │ │ │ ├── helm_rollback.md │ │ │ │ │ ├── helm_search.md │ │ │ │ │ ├── helm_search_hub.md │ │ │ │ │ ├── helm_search_repo.md │ │ │ │ │ ├── helm_show.md │ │ │ │ │ ├── helm_show_all.md │ │ │ │ │ ├── helm_show_chart.md │ │ │ │ │ ├── helm_show_crds.md │ │ │ │ │ ├── helm_show_readme.md │ │ │ │ │ ├── helm_show_values.md │ │ │ │ │ ├── helm_status.md │ │ │ │ │ ├── helm_template.md │ │ │ │ │ ├── helm_test.md │ │ │ │ │ ├── helm_uninstall.md │ │ │ │ │ ├── helm_upgrade.md │ │ │ │ │ ├── helm_verify.md │ │ │ │ │ └── helm_version.md │ │ │ │ ├── howto/ │ │ │ │ │ ├── chart_releaser_action.md │ │ │ │ │ ├── chart_repository_sync_example.md │ │ │ │ │ ├── charts_tips_and_tricks.md │ │ │ │ │ └── index.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── intro/ │ │ │ │ │ ├── CheatSheet.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── install.md │ │ │ │ │ ├── quickstart.md │ │ │ │ │ └── using_helm.md │ │ │ │ ├── sdk/ │ │ │ │ │ └── gosdk.md │ │ │ │ └── topics/ │ │ │ │ ├── advanced.md │ │ │ │ ├── architecture.md │ │ │ │ ├── chart_repository.md │ │ │ │ ├── chart_tests.md │ │ │ │ ├── charts.md │ │ │ │ ├── charts_hooks.md │ │ │ │ ├── index.mdx │ │ │ │ ├── kubernetes_apis.md │ │ │ │ ├── kubernetes_distros.md │ │ │ │ ├── library_charts.md │ │ │ │ ├── permissions_sql_storage_backend.md │ │ │ │ ├── plugins.md │ │ │ │ ├── provenance.md │ │ │ │ ├── rbac.md │ │ │ │ ├── registries.md │ │ │ │ ├── v2_v3_migration.md │ │ │ │ └── version_skew.md │ │ │ └── version-3.json │ │ ├── docusaurus-plugin-content-docs-community/ │ │ │ └── current/ │ │ │ └── release_policy.md │ │ └── docusaurus-theme-classic/ │ │ ├── footer.json │ │ └── navbar.json │ ├── fr/ │ │ ├── code.json │ │ ├── docusaurus-plugin-content-blog/ │ │ │ └── options.json │ │ ├── docusaurus-plugin-content-docs/ │ │ │ ├── current.json │ │ │ ├── version-2.json │ │ │ ├── version-3/ │ │ │ │ ├── chart_best_practices/ │ │ │ │ │ ├── conventions.md │ │ │ │ │ ├── custom_resource_definitions.md │ │ │ │ │ ├── dependencies.md │ │ │ │ │ ├── labels.md │ │ │ │ │ ├── pods.md │ │ │ │ │ ├── rbac.md │ │ │ │ │ ├── templates.md │ │ │ │ │ └── values.md │ │ │ │ ├── chart_template_guide/ │ │ │ │ │ ├── accessing_files.md │ │ │ │ │ ├── builtin_objects.md │ │ │ │ │ ├── control_structures.md │ │ │ │ │ ├── data_types.md │ │ │ │ │ ├── debugging.md │ │ │ │ │ ├── function_list.md │ │ │ │ │ ├── functions_and_pipelines.md │ │ │ │ │ ├── getting_started.md │ │ │ │ │ ├── helm_ignore_file.md │ │ │ │ │ ├── named_templates.md │ │ │ │ │ ├── notes_files.md │ │ │ │ │ ├── subcharts_and_globals.md │ │ │ │ │ ├── values_files.md │ │ │ │ │ ├── variables.md │ │ │ │ │ ├── wrapping_up.md │ │ │ │ │ └── yaml_techniques.md │ │ │ │ ├── faq/ │ │ │ │ │ ├── changes_since_helm2.md │ │ │ │ │ ├── installing.md │ │ │ │ │ ├── troubleshooting.md │ │ │ │ │ └── uninstalling.md │ │ │ │ ├── helm/ │ │ │ │ │ ├── _category_.json │ │ │ │ │ ├── helm.md │ │ │ │ │ ├── helm_completion.md │ │ │ │ │ ├── helm_completion_bash.md │ │ │ │ │ ├── helm_completion_fish.md │ │ │ │ │ ├── helm_completion_powershell.md │ │ │ │ │ ├── helm_completion_zsh.md │ │ │ │ │ ├── helm_create.md │ │ │ │ │ ├── helm_dependency.md │ │ │ │ │ ├── helm_dependency_build.md │ │ │ │ │ ├── helm_dependency_list.md │ │ │ │ │ ├── helm_dependency_update.md │ │ │ │ │ ├── helm_env.md │ │ │ │ │ ├── helm_get.md │ │ │ │ │ ├── helm_get_all.md │ │ │ │ │ ├── helm_get_hooks.md │ │ │ │ │ ├── helm_get_manifest.md │ │ │ │ │ ├── helm_get_metadata.md │ │ │ │ │ ├── helm_get_notes.md │ │ │ │ │ ├── helm_get_values.md │ │ │ │ │ ├── helm_history.md │ │ │ │ │ ├── helm_install.md │ │ │ │ │ ├── helm_lint.md │ │ │ │ │ ├── helm_list.md │ │ │ │ │ ├── helm_package.md │ │ │ │ │ ├── helm_plugin.md │ │ │ │ │ ├── helm_plugin_install.md │ │ │ │ │ ├── helm_plugin_list.md │ │ │ │ │ ├── helm_plugin_uninstall.md │ │ │ │ │ ├── helm_plugin_update.md │ │ │ │ │ ├── helm_pull.md │ │ │ │ │ ├── helm_push.md │ │ │ │ │ ├── helm_registry.md │ │ │ │ │ ├── helm_registry_login.md │ │ │ │ │ ├── helm_registry_logout.md │ │ │ │ │ ├── helm_repo.md │ │ │ │ │ ├── helm_repo_add.md │ │ │ │ │ ├── helm_repo_index.md │ │ │ │ │ ├── helm_repo_list.md │ │ │ │ │ ├── helm_repo_remove.md │ │ │ │ │ ├── helm_repo_update.md │ │ │ │ │ ├── helm_rollback.md │ │ │ │ │ ├── helm_search.md │ │ │ │ │ ├── helm_search_hub.md │ │ │ │ │ ├── helm_search_repo.md │ │ │ │ │ ├── helm_show.md │ │ │ │ │ ├── helm_show_all.md │ │ │ │ │ ├── helm_show_chart.md │ │ │ │ │ ├── helm_show_crds.md │ │ │ │ │ ├── helm_show_readme.md │ │ │ │ │ ├── helm_show_values.md │ │ │ │ │ ├── helm_status.md │ │ │ │ │ ├── helm_template.md │ │ │ │ │ ├── helm_test.md │ │ │ │ │ ├── helm_uninstall.md │ │ │ │ │ ├── helm_upgrade.md │ │ │ │ │ ├── helm_verify.md │ │ │ │ │ ├── helm_version.md │ │ │ │ │ └── index.mdx │ │ │ │ ├── howto/ │ │ │ │ │ ├── chart_releaser_action.md │ │ │ │ │ ├── chart_repository_sync_example.md │ │ │ │ │ ├── charts_tips_and_tricks.md │ │ │ │ │ └── index.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── intro/ │ │ │ │ │ ├── CheatSheet.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── install.md │ │ │ │ │ ├── quickstart.md │ │ │ │ │ └── using_helm.md │ │ │ │ ├── sdk/ │ │ │ │ │ └── gosdk.md │ │ │ │ └── topics/ │ │ │ │ ├── advanced.md │ │ │ │ ├── architecture.md │ │ │ │ ├── chart_repository.md │ │ │ │ ├── chart_tests.md │ │ │ │ ├── charts.md │ │ │ │ ├── charts_hooks.md │ │ │ │ ├── index.mdx │ │ │ │ ├── kubernetes_apis.md │ │ │ │ ├── kubernetes_distros.md │ │ │ │ ├── library_charts.md │ │ │ │ ├── permissions_sql_storage_backend.md │ │ │ │ ├── plugins.md │ │ │ │ ├── provenance.md │ │ │ │ ├── rbac.md │ │ │ │ ├── registries.md │ │ │ │ ├── v2_v3_migration.md │ │ │ │ └── version_skew.md │ │ │ └── version-3.json │ │ ├── docusaurus-plugin-content-docs-community/ │ │ │ └── current/ │ │ │ └── release_policy.md │ │ └── docusaurus-theme-classic/ │ │ ├── footer.json │ │ └── navbar.json │ ├── it/ │ │ ├── code.json │ │ ├── docusaurus-plugin-content-blog/ │ │ │ └── options.json │ │ ├── docusaurus-plugin-content-docs/ │ │ │ ├── current.json │ │ │ ├── version-2.json │ │ │ ├── version-3/ │ │ │ │ ├── index.mdx │ │ │ │ └── topics/ │ │ │ │ ├── advanced.md │ │ │ │ ├── architecture.md │ │ │ │ ├── chart_repository.md │ │ │ │ ├── chart_tests.md │ │ │ │ ├── charts.md │ │ │ │ ├── charts_hooks.md │ │ │ │ ├── index.mdx │ │ │ │ ├── kubernetes_apis.md │ │ │ │ ├── kubernetes_distros.md │ │ │ │ ├── library_charts.md │ │ │ │ ├── permissions_sql_storage_backend.md │ │ │ │ ├── plugins.md │ │ │ │ ├── provenance.md │ │ │ │ ├── rbac.md │ │ │ │ ├── registries.md │ │ │ │ ├── release_policy.md │ │ │ │ ├── v2_v3_migration.md │ │ │ │ └── version_skew.md │ │ │ └── version-3.json │ │ └── docusaurus-theme-classic/ │ │ ├── footer.json │ │ └── navbar.json │ ├── ja/ │ │ ├── code.json │ │ ├── docusaurus-plugin-content-blog/ │ │ │ └── options.json │ │ ├── docusaurus-plugin-content-docs/ │ │ │ ├── current.json │ │ │ ├── version-2.json │ │ │ ├── version-3/ │ │ │ │ ├── chart_best_practices/ │ │ │ │ │ ├── conventions.md │ │ │ │ │ ├── custom_resource_definitions.md │ │ │ │ │ ├── dependencies.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── labels.md │ │ │ │ │ ├── pods.md │ │ │ │ │ ├── rbac.md │ │ │ │ │ ├── templates.md │ │ │ │ │ └── values.md │ │ │ │ ├── chart_template_guide/ │ │ │ │ │ ├── accessing_files.md │ │ │ │ │ ├── builtin_objects.md │ │ │ │ │ ├── control_structures.md │ │ │ │ │ ├── data_types.md │ │ │ │ │ ├── debugging.md │ │ │ │ │ ├── function_list.md │ │ │ │ │ ├── functions_and_pipelines.md │ │ │ │ │ ├── getting_started.md │ │ │ │ │ ├── helm_ignore_file.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── named_templates.md │ │ │ │ │ ├── notes_files.md │ │ │ │ │ ├── subcharts_and_globals.md │ │ │ │ │ ├── values_files.md │ │ │ │ │ ├── variables.md │ │ │ │ │ ├── wrapping_up.md │ │ │ │ │ └── yaml_techniques.md │ │ │ │ ├── faq/ │ │ │ │ │ ├── changes_since_helm2.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── installing.md │ │ │ │ │ ├── troubleshooting.md │ │ │ │ │ └── uninstalling.md │ │ │ │ ├── glossary/ │ │ │ │ │ └── index.mdx │ │ │ │ ├── helm/ │ │ │ │ │ ├── _category_.json │ │ │ │ │ ├── helm.md │ │ │ │ │ ├── helm_completion.md │ │ │ │ │ ├── helm_completion_bash.md │ │ │ │ │ ├── helm_completion_fish.md │ │ │ │ │ ├── helm_completion_powershell.md │ │ │ │ │ ├── helm_completion_zsh.md │ │ │ │ │ ├── helm_create.md │ │ │ │ │ ├── helm_dependency.md │ │ │ │ │ ├── helm_dependency_build.md │ │ │ │ │ ├── helm_dependency_list.md │ │ │ │ │ ├── helm_dependency_update.md │ │ │ │ │ ├── helm_env.md │ │ │ │ │ ├── helm_get.md │ │ │ │ │ ├── helm_get_all.md │ │ │ │ │ ├── helm_get_hooks.md │ │ │ │ │ ├── helm_get_manifest.md │ │ │ │ │ ├── helm_get_metadata.md │ │ │ │ │ ├── helm_get_notes.md │ │ │ │ │ ├── helm_get_values.md │ │ │ │ │ ├── helm_history.md │ │ │ │ │ ├── helm_install.md │ │ │ │ │ ├── helm_lint.md │ │ │ │ │ ├── helm_list.md │ │ │ │ │ ├── helm_package.md │ │ │ │ │ ├── helm_plugin.md │ │ │ │ │ ├── helm_plugin_install.md │ │ │ │ │ ├── helm_plugin_list.md │ │ │ │ │ ├── helm_plugin_uninstall.md │ │ │ │ │ ├── helm_plugin_update.md │ │ │ │ │ ├── helm_pull.md │ │ │ │ │ ├── helm_push.md │ │ │ │ │ ├── helm_registry.md │ │ │ │ │ ├── helm_registry_login.md │ │ │ │ │ ├── helm_registry_logout.md │ │ │ │ │ ├── helm_repo.md │ │ │ │ │ ├── helm_repo_add.md │ │ │ │ │ ├── helm_repo_index.md │ │ │ │ │ ├── helm_repo_list.md │ │ │ │ │ ├── helm_repo_remove.md │ │ │ │ │ ├── helm_repo_update.md │ │ │ │ │ ├── helm_rollback.md │ │ │ │ │ ├── helm_search.md │ │ │ │ │ ├── helm_search_hub.md │ │ │ │ │ ├── helm_search_repo.md │ │ │ │ │ ├── helm_show.md │ │ │ │ │ ├── helm_show_all.md │ │ │ │ │ ├── helm_show_chart.md │ │ │ │ │ ├── helm_show_crds.md │ │ │ │ │ ├── helm_show_readme.md │ │ │ │ │ ├── helm_show_values.md │ │ │ │ │ ├── helm_status.md │ │ │ │ │ ├── helm_template.md │ │ │ │ │ ├── helm_test.md │ │ │ │ │ ├── helm_uninstall.md │ │ │ │ │ ├── helm_upgrade.md │ │ │ │ │ ├── helm_verify.md │ │ │ │ │ ├── helm_version.md │ │ │ │ │ └── index.mdx │ │ │ │ ├── howto/ │ │ │ │ │ ├── chart_releaser_action.md │ │ │ │ │ ├── chart_repository_sync_example.md │ │ │ │ │ ├── charts_tips_and_tricks.md │ │ │ │ │ └── index.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── intro/ │ │ │ │ │ ├── CheatSheet.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── install.md │ │ │ │ │ ├── quickstart.md │ │ │ │ │ └── using_helm.md │ │ │ │ ├── sdk/ │ │ │ │ │ └── gosdk.md │ │ │ │ └── topics/ │ │ │ │ ├── advanced.md │ │ │ │ ├── architecture.md │ │ │ │ ├── chart_repository.md │ │ │ │ ├── chart_tests.md │ │ │ │ ├── charts.md │ │ │ │ ├── charts_hooks.md │ │ │ │ ├── index.mdx │ │ │ │ ├── kubernetes_apis.md │ │ │ │ ├── kubernetes_distros.md │ │ │ │ ├── library_charts.md │ │ │ │ ├── permissions_sql_storage_backend.md │ │ │ │ ├── plugins.md │ │ │ │ ├── provenance.md │ │ │ │ ├── rbac.md │ │ │ │ ├── registries.md │ │ │ │ ├── v2_v3_migration.md │ │ │ │ └── version_skew.md │ │ │ └── version-3.json │ │ ├── docusaurus-plugin-content-docs-community/ │ │ │ └── current/ │ │ │ ├── developers.md │ │ │ ├── history.mdx │ │ │ ├── localization.md │ │ │ └── release_policy.md │ │ └── docusaurus-theme-classic/ │ │ ├── footer.json │ │ └── navbar.json │ ├── ko/ │ │ ├── code.json │ │ ├── docusaurus-plugin-content-blog/ │ │ │ ├── 2019-11-13-helm-3-released.md │ │ │ ├── 2019-11-15-helm-at-cloudnativecon.md │ │ │ ├── 2020-04-02-covid-19-extending-helm-v2-bug-fixes.md │ │ │ ├── 2020-04-30-celebrating-helms-cncf-graduation.md │ │ │ ├── 2020-08-13-helm-v2-deprecation-timeline.md │ │ │ ├── 2020-10-07-helm-hub-moving-artifact-hub.md │ │ │ ├── 2020-10-19-helm-turns-five.md │ │ │ ├── 2020-10-26-new-location-stable-incubator-charts.md │ │ │ ├── 2020-10-30-charts-repo-deprecation.md │ │ │ └── options.json │ │ ├── docusaurus-plugin-content-docs/ │ │ │ ├── current/ │ │ │ │ ├── _v4-in-progress.mdx │ │ │ │ ├── changelog.md │ │ │ │ ├── index.mdx │ │ │ │ ├── overview.md │ │ │ │ └── plugins/ │ │ │ │ ├── developer/ │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── tutorial-cli-plugin.mdx │ │ │ │ │ ├── tutorial-getter-plugin.mdx │ │ │ │ │ └── tutorial-postrenderer-plugin.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── overview.md │ │ │ │ └── user/ │ │ │ │ └── index.md │ │ │ ├── current.json │ │ │ ├── version-2.json │ │ │ ├── version-3/ │ │ │ │ ├── chart_best_practices/ │ │ │ │ │ ├── conventions.md │ │ │ │ │ ├── custom_resource_definitions.md │ │ │ │ │ ├── dependencies.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── labels.md │ │ │ │ │ ├── pods.md │ │ │ │ │ ├── rbac.md │ │ │ │ │ ├── templates.md │ │ │ │ │ └── values.md │ │ │ │ ├── chart_template_guide/ │ │ │ │ │ ├── accessing_files.md │ │ │ │ │ ├── builtin_objects.md │ │ │ │ │ ├── control_structures.md │ │ │ │ │ ├── data_types.md │ │ │ │ │ ├── debugging.md │ │ │ │ │ ├── function_list.md │ │ │ │ │ ├── functions_and_pipelines.md │ │ │ │ │ ├── getting_started.md │ │ │ │ │ ├── helm_ignore_file.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── named_templates.md │ │ │ │ │ ├── notes_files.md │ │ │ │ │ ├── subcharts_and_globals.md │ │ │ │ │ ├── values_files.md │ │ │ │ │ ├── variables.md │ │ │ │ │ ├── wrapping_up.md │ │ │ │ │ └── yaml_techniques.md │ │ │ │ ├── faq/ │ │ │ │ │ ├── changes_since_helm2.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── installing.md │ │ │ │ │ ├── troubleshooting.md │ │ │ │ │ └── uninstalling.md │ │ │ │ ├── glossary/ │ │ │ │ │ └── index.mdx │ │ │ │ ├── helm/ │ │ │ │ │ ├── _category_.json │ │ │ │ │ ├── helm.md │ │ │ │ │ ├── helm_completion.md │ │ │ │ │ ├── helm_completion_bash.md │ │ │ │ │ ├── helm_completion_fish.md │ │ │ │ │ ├── helm_completion_powershell.md │ │ │ │ │ ├── helm_completion_zsh.md │ │ │ │ │ ├── helm_create.md │ │ │ │ │ ├── helm_dependency.md │ │ │ │ │ ├── helm_dependency_build.md │ │ │ │ │ ├── helm_dependency_list.md │ │ │ │ │ ├── helm_dependency_update.md │ │ │ │ │ ├── helm_env.md │ │ │ │ │ ├── helm_get.md │ │ │ │ │ ├── helm_get_all.md │ │ │ │ │ ├── helm_get_hooks.md │ │ │ │ │ ├── helm_get_manifest.md │ │ │ │ │ ├── helm_get_metadata.md │ │ │ │ │ ├── helm_get_notes.md │ │ │ │ │ ├── helm_get_values.md │ │ │ │ │ ├── helm_history.md │ │ │ │ │ ├── helm_install.md │ │ │ │ │ ├── helm_lint.md │ │ │ │ │ ├── helm_list.md │ │ │ │ │ ├── helm_package.md │ │ │ │ │ ├── helm_plugin.md │ │ │ │ │ ├── helm_plugin_install.md │ │ │ │ │ ├── helm_plugin_list.md │ │ │ │ │ ├── helm_plugin_uninstall.md │ │ │ │ │ ├── helm_plugin_update.md │ │ │ │ │ ├── helm_pull.md │ │ │ │ │ ├── helm_push.md │ │ │ │ │ ├── helm_registry.md │ │ │ │ │ ├── helm_registry_login.md │ │ │ │ │ ├── helm_registry_logout.md │ │ │ │ │ ├── helm_repo.md │ │ │ │ │ ├── helm_repo_add.md │ │ │ │ │ ├── helm_repo_index.md │ │ │ │ │ ├── helm_repo_list.md │ │ │ │ │ ├── helm_repo_remove.md │ │ │ │ │ ├── helm_repo_update.md │ │ │ │ │ ├── helm_rollback.md │ │ │ │ │ ├── helm_search.md │ │ │ │ │ ├── helm_search_hub.md │ │ │ │ │ ├── helm_search_repo.md │ │ │ │ │ ├── helm_show.md │ │ │ │ │ ├── helm_show_all.md │ │ │ │ │ ├── helm_show_chart.md │ │ │ │ │ ├── helm_show_crds.md │ │ │ │ │ ├── helm_show_readme.md │ │ │ │ │ ├── helm_show_values.md │ │ │ │ │ ├── helm_status.md │ │ │ │ │ ├── helm_template.md │ │ │ │ │ ├── helm_test.md │ │ │ │ │ ├── helm_uninstall.md │ │ │ │ │ ├── helm_upgrade.md │ │ │ │ │ ├── helm_verify.md │ │ │ │ │ ├── helm_version.md │ │ │ │ │ └── index.mdx │ │ │ │ ├── howto/ │ │ │ │ │ ├── chart_releaser_action.md │ │ │ │ │ ├── chart_repository_sync_example.md │ │ │ │ │ ├── charts_tips_and_tricks.md │ │ │ │ │ └── index.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── intro/ │ │ │ │ │ ├── CheatSheet.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── install.md │ │ │ │ │ ├── quickstart.md │ │ │ │ │ └── using_helm.md │ │ │ │ ├── sdk/ │ │ │ │ │ ├── _install.mdx │ │ │ │ │ ├── _list.mdx │ │ │ │ │ ├── _main.mdx │ │ │ │ │ ├── _pull.mdx │ │ │ │ │ ├── _uninstall.mdx │ │ │ │ │ ├── _upgrade.mdx │ │ │ │ │ ├── examples.mdx │ │ │ │ │ ├── gosdk.md │ │ │ │ │ └── index.mdx │ │ │ │ └── topics/ │ │ │ │ ├── advanced.md │ │ │ │ ├── architecture.md │ │ │ │ ├── chart_repository.md │ │ │ │ ├── chart_tests.md │ │ │ │ ├── charts.md │ │ │ │ ├── charts_hooks.md │ │ │ │ ├── index.mdx │ │ │ │ ├── kubernetes_apis.md │ │ │ │ ├── kubernetes_distros.md │ │ │ │ ├── library_charts.md │ │ │ │ ├── permissions_sql_storage_backend.md │ │ │ │ ├── plugins.md │ │ │ │ ├── provenance.md │ │ │ │ ├── rbac.md │ │ │ │ ├── registries.md │ │ │ │ ├── v2_v3_migration.md │ │ │ │ └── version_skew.md │ │ │ └── version-3.json │ │ ├── docusaurus-plugin-content-docs-community/ │ │ │ └── current/ │ │ │ ├── developers.md │ │ │ ├── history.mdx │ │ │ ├── localization.md │ │ │ ├── related.md │ │ │ ├── release_checklist.md │ │ │ └── release_policy.md │ │ └── docusaurus-theme-classic/ │ │ ├── footer.json │ │ └── navbar.json │ ├── pt/ │ │ ├── code.json │ │ ├── docusaurus-plugin-content-blog/ │ │ │ └── options.json │ │ ├── docusaurus-plugin-content-docs/ │ │ │ ├── current.json │ │ │ ├── version-2.json │ │ │ ├── version-3/ │ │ │ │ ├── chart_best_practices/ │ │ │ │ │ ├── conventions.md │ │ │ │ │ ├── custom_resource_definitions.md │ │ │ │ │ ├── dependencies.md │ │ │ │ │ ├── labels.md │ │ │ │ │ ├── pods.md │ │ │ │ │ ├── rbac.md │ │ │ │ │ ├── templates.md │ │ │ │ │ └── values.md │ │ │ │ ├── chart_template_guide/ │ │ │ │ │ ├── accessing_files.md │ │ │ │ │ ├── builtin_objects.md │ │ │ │ │ ├── control_structures.md │ │ │ │ │ ├── data_types.md │ │ │ │ │ ├── debugging.md │ │ │ │ │ ├── function_list.md │ │ │ │ │ ├── functions_and_pipelines.md │ │ │ │ │ ├── getting_started.md │ │ │ │ │ ├── helm_ignore_file.md │ │ │ │ │ ├── named_templates.md │ │ │ │ │ ├── notes_files.md │ │ │ │ │ ├── subcharts_and_globals.md │ │ │ │ │ ├── values_files.md │ │ │ │ │ ├── variables.md │ │ │ │ │ ├── wrapping_up.md │ │ │ │ │ └── yaml_techniques.md │ │ │ │ ├── faq/ │ │ │ │ │ ├── changes_since_helm2.md │ │ │ │ │ ├── installing.md │ │ │ │ │ ├── troubleshooting.md │ │ │ │ │ └── uninstalling.md │ │ │ │ ├── glossary/ │ │ │ │ │ └── index.mdx │ │ │ │ ├── helm/ │ │ │ │ │ ├── _category_.json │ │ │ │ │ ├── helm.md │ │ │ │ │ ├── helm_completion.md │ │ │ │ │ ├── helm_completion_bash.md │ │ │ │ │ ├── helm_completion_fish.md │ │ │ │ │ ├── helm_completion_powershell.md │ │ │ │ │ ├── helm_completion_zsh.md │ │ │ │ │ ├── helm_create.md │ │ │ │ │ ├── helm_dependency.md │ │ │ │ │ ├── helm_dependency_build.md │ │ │ │ │ ├── helm_dependency_list.md │ │ │ │ │ ├── helm_dependency_update.md │ │ │ │ │ ├── helm_env.md │ │ │ │ │ ├── helm_get.md │ │ │ │ │ ├── helm_get_all.md │ │ │ │ │ ├── helm_get_hooks.md │ │ │ │ │ ├── helm_get_manifest.md │ │ │ │ │ ├── helm_get_metadata.md │ │ │ │ │ ├── helm_get_notes.md │ │ │ │ │ ├── helm_get_values.md │ │ │ │ │ ├── helm_history.md │ │ │ │ │ ├── helm_install.md │ │ │ │ │ ├── helm_lint.md │ │ │ │ │ ├── helm_list.md │ │ │ │ │ ├── helm_package.md │ │ │ │ │ ├── helm_plugin.md │ │ │ │ │ ├── helm_plugin_install.md │ │ │ │ │ ├── helm_plugin_list.md │ │ │ │ │ ├── helm_plugin_uninstall.md │ │ │ │ │ ├── helm_plugin_update.md │ │ │ │ │ ├── helm_pull.md │ │ │ │ │ ├── helm_push.md │ │ │ │ │ ├── helm_registry.md │ │ │ │ │ ├── helm_registry_login.md │ │ │ │ │ ├── helm_registry_logout.md │ │ │ │ │ ├── helm_repo.md │ │ │ │ │ ├── helm_repo_add.md │ │ │ │ │ ├── helm_repo_index.md │ │ │ │ │ ├── helm_repo_list.md │ │ │ │ │ ├── helm_repo_remove.md │ │ │ │ │ ├── helm_repo_update.md │ │ │ │ │ ├── helm_rollback.md │ │ │ │ │ ├── helm_search.md │ │ │ │ │ ├── helm_search_hub.md │ │ │ │ │ ├── helm_search_repo.md │ │ │ │ │ ├── helm_show.md │ │ │ │ │ ├── helm_show_all.md │ │ │ │ │ ├── helm_show_chart.md │ │ │ │ │ ├── helm_show_crds.md │ │ │ │ │ ├── helm_show_readme.md │ │ │ │ │ ├── helm_show_values.md │ │ │ │ │ ├── helm_status.md │ │ │ │ │ ├── helm_template.md │ │ │ │ │ ├── helm_test.md │ │ │ │ │ ├── helm_uninstall.md │ │ │ │ │ ├── helm_upgrade.md │ │ │ │ │ ├── helm_verify.md │ │ │ │ │ ├── helm_version.md │ │ │ │ │ └── index.mdx │ │ │ │ ├── howto/ │ │ │ │ │ ├── chart_releaser_action.md │ │ │ │ │ ├── chart_repository_sync_example.md │ │ │ │ │ ├── charts_tips_and_tricks.md │ │ │ │ │ └── index.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── intro/ │ │ │ │ │ ├── CheatSheet.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── install.md │ │ │ │ │ ├── quickstart.md │ │ │ │ │ └── using_helm.md │ │ │ │ ├── sdk/ │ │ │ │ │ └── gosdk.md │ │ │ │ └── topics/ │ │ │ │ ├── advanced.md │ │ │ │ ├── architecture.md │ │ │ │ ├── chart_repository.md │ │ │ │ ├── chart_tests.md │ │ │ │ ├── charts.md │ │ │ │ ├── charts_hooks.md │ │ │ │ ├── index.mdx │ │ │ │ ├── kubernetes_apis.md │ │ │ │ ├── kubernetes_distros.md │ │ │ │ ├── library_charts.md │ │ │ │ ├── permissions_sql_storage_backend.md │ │ │ │ ├── plugins.md │ │ │ │ ├── provenance.md │ │ │ │ ├── rbac.md │ │ │ │ ├── registries.md │ │ │ │ ├── v2_v3_migration.md │ │ │ │ └── version_skew.md │ │ │ └── version-3.json │ │ ├── docusaurus-plugin-content-docs-community/ │ │ │ └── current/ │ │ │ └── release_policy.md │ │ └── docusaurus-theme-classic/ │ │ ├── footer.json │ │ └── navbar.json │ ├── ru/ │ │ ├── code.json │ │ ├── docusaurus-plugin-content-blog/ │ │ │ └── options.json │ │ ├── docusaurus-plugin-content-docs/ │ │ │ ├── current.json │ │ │ ├── version-2.json │ │ │ ├── version-3/ │ │ │ │ ├── chart_best_practices/ │ │ │ │ │ ├── conventions.md │ │ │ │ │ ├── custom_resource_definitions.md │ │ │ │ │ ├── dependencies.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── labels.md │ │ │ │ │ ├── pods.md │ │ │ │ │ ├── rbac.md │ │ │ │ │ ├── templates.md │ │ │ │ │ └── values.md │ │ │ │ ├── chart_template_guide/ │ │ │ │ │ ├── accessing_files.md │ │ │ │ │ ├── builtin_objects.md │ │ │ │ │ ├── control_structures.md │ │ │ │ │ ├── data_types.md │ │ │ │ │ ├── debugging.md │ │ │ │ │ ├── function_list.md │ │ │ │ │ ├── functions_and_pipelines.md │ │ │ │ │ ├── getting_started.md │ │ │ │ │ ├── helm_ignore_file.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── named_templates.md │ │ │ │ │ ├── notes_files.md │ │ │ │ │ ├── subcharts_and_globals.md │ │ │ │ │ ├── values_files.md │ │ │ │ │ ├── variables.md │ │ │ │ │ ├── wrapping_up.md │ │ │ │ │ └── yaml_techniques.md │ │ │ │ ├── faq/ │ │ │ │ │ ├── changes_since_helm2.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── installing.md │ │ │ │ │ ├── troubleshooting.md │ │ │ │ │ └── uninstalling.md │ │ │ │ ├── glossary/ │ │ │ │ │ └── index.mdx │ │ │ │ ├── helm/ │ │ │ │ │ ├── helm.md │ │ │ │ │ ├── helm_completion.md │ │ │ │ │ ├── helm_completion_bash.md │ │ │ │ │ ├── helm_completion_fish.md │ │ │ │ │ ├── helm_completion_powershell.md │ │ │ │ │ ├── helm_completion_zsh.md │ │ │ │ │ ├── helm_create.md │ │ │ │ │ ├── helm_dependency.md │ │ │ │ │ ├── helm_dependency_build.md │ │ │ │ │ ├── helm_dependency_list.md │ │ │ │ │ ├── helm_dependency_update.md │ │ │ │ │ ├── helm_env.md │ │ │ │ │ ├── helm_get.md │ │ │ │ │ ├── helm_get_all.md │ │ │ │ │ ├── helm_get_hooks.md │ │ │ │ │ ├── helm_get_manifest.md │ │ │ │ │ ├── helm_get_metadata.md │ │ │ │ │ ├── helm_get_notes.md │ │ │ │ │ ├── helm_get_values.md │ │ │ │ │ ├── helm_history.md │ │ │ │ │ ├── helm_install.md │ │ │ │ │ ├── helm_lint.md │ │ │ │ │ ├── helm_list.md │ │ │ │ │ ├── helm_package.md │ │ │ │ │ ├── helm_plugin.md │ │ │ │ │ ├── helm_plugin_install.md │ │ │ │ │ ├── helm_plugin_list.md │ │ │ │ │ ├── helm_plugin_uninstall.md │ │ │ │ │ ├── helm_plugin_update.md │ │ │ │ │ ├── helm_pull.md │ │ │ │ │ ├── helm_push.md │ │ │ │ │ ├── helm_registry.md │ │ │ │ │ ├── helm_registry_login.md │ │ │ │ │ ├── helm_registry_logout.md │ │ │ │ │ ├── helm_repo.md │ │ │ │ │ ├── helm_repo_add.md │ │ │ │ │ ├── helm_repo_index.md │ │ │ │ │ ├── helm_repo_list.md │ │ │ │ │ ├── helm_repo_remove.md │ │ │ │ │ ├── helm_repo_update.md │ │ │ │ │ ├── helm_rollback.md │ │ │ │ │ ├── helm_search.md │ │ │ │ │ ├── helm_search_hub.md │ │ │ │ │ ├── helm_search_repo.md │ │ │ │ │ ├── helm_show.md │ │ │ │ │ ├── helm_show_all.md │ │ │ │ │ ├── helm_show_chart.md │ │ │ │ │ ├── helm_show_crds.md │ │ │ │ │ ├── helm_show_readme.md │ │ │ │ │ ├── helm_show_values.md │ │ │ │ │ ├── helm_status.md │ │ │ │ │ ├── helm_template.md │ │ │ │ │ ├── helm_test.md │ │ │ │ │ ├── helm_uninstall.md │ │ │ │ │ ├── helm_upgrade.md │ │ │ │ │ ├── helm_verify.md │ │ │ │ │ ├── helm_version.md │ │ │ │ │ └── index.mdx │ │ │ │ ├── howto/ │ │ │ │ │ ├── chart_releaser_action.md │ │ │ │ │ ├── chart_repository_sync_example.md │ │ │ │ │ ├── charts_tips_and_tricks.md │ │ │ │ │ └── index.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── intro/ │ │ │ │ │ ├── CheatSheet.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── install.md │ │ │ │ │ ├── quickstart.md │ │ │ │ │ └── using_helm.md │ │ │ │ ├── sdk/ │ │ │ │ │ ├── _install.mdx │ │ │ │ │ ├── _list.mdx │ │ │ │ │ ├── _main.mdx │ │ │ │ │ ├── _pull.mdx │ │ │ │ │ ├── _uninstall.mdx │ │ │ │ │ ├── _upgrade.mdx │ │ │ │ │ ├── examples.mdx │ │ │ │ │ ├── gosdk.md │ │ │ │ │ └── index.mdx │ │ │ │ └── topics/ │ │ │ │ ├── advanced.md │ │ │ │ ├── architecture.md │ │ │ │ ├── chart_repository.md │ │ │ │ ├── chart_tests.md │ │ │ │ ├── charts.md │ │ │ │ ├── charts_hooks.md │ │ │ │ ├── index.mdx │ │ │ │ ├── kubernetes_apis.md │ │ │ │ ├── kubernetes_distros.md │ │ │ │ ├── library_charts.md │ │ │ │ ├── permissions_sql_storage_backend.md │ │ │ │ ├── plugins.md │ │ │ │ ├── provenance.md │ │ │ │ ├── rbac.md │ │ │ │ ├── registries.md │ │ │ │ ├── v2_v3_migration.md │ │ │ │ └── version_skew.md │ │ │ └── version-3.json │ │ ├── docusaurus-plugin-content-docs-community/ │ │ │ └── current/ │ │ │ └── release_policy.md │ │ └── docusaurus-theme-classic/ │ │ ├── footer.json │ │ └── navbar.json │ ├── uk/ │ │ ├── code.json │ │ ├── docusaurus-plugin-content-blog/ │ │ │ ├── 2024-10-07-kubecon-na-24/ │ │ │ │ └── index.md │ │ │ ├── 2025-09-09-path-to-helm-v4.md │ │ │ └── options.json │ │ ├── docusaurus-plugin-content-docs/ │ │ │ ├── current/ │ │ │ │ ├── _v4-in-progress.mdx │ │ │ │ ├── changelog.md │ │ │ │ ├── chart_best_practices/ │ │ │ │ │ ├── conventions.md │ │ │ │ │ ├── custom_resource_definitions.md │ │ │ │ │ ├── dependencies.mdx │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── labels.md │ │ │ │ │ ├── pods.md │ │ │ │ │ ├── rbac.md │ │ │ │ │ ├── templates.md │ │ │ │ │ └── values.md │ │ │ │ ├── chart_template_guide/ │ │ │ │ │ ├── accessing_files.md │ │ │ │ │ ├── builtin_objects.md │ │ │ │ │ ├── control_structures.md │ │ │ │ │ ├── data_types.md │ │ │ │ │ ├── debugging.md │ │ │ │ │ ├── function_list.mdx │ │ │ │ │ ├── functions_and_pipelines.mdx │ │ │ │ │ ├── getting_started.md │ │ │ │ │ ├── helm_ignore_file.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── named_templates.md │ │ │ │ │ ├── notes_files.md │ │ │ │ │ ├── subcharts_and_globals.md │ │ │ │ │ ├── values_files.mdx │ │ │ │ │ ├── variables.md │ │ │ │ │ ├── wrapping_up.md │ │ │ │ │ └── yaml_techniques.md │ │ │ │ ├── faq/ │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── installing.mdx │ │ │ │ │ └── uninstalling.mdx │ │ │ │ ├── glossary/ │ │ │ │ │ └── index.mdx │ │ │ │ ├── helm/ │ │ │ │ │ ├── _category_.json │ │ │ │ │ ├── helm.md │ │ │ │ │ ├── helm_completion.md │ │ │ │ │ ├── helm_completion_bash.md │ │ │ │ │ ├── helm_completion_fish.md │ │ │ │ │ ├── helm_completion_powershell.md │ │ │ │ │ ├── helm_completion_zsh.md │ │ │ │ │ ├── helm_create.md │ │ │ │ │ ├── helm_dependency.md │ │ │ │ │ ├── helm_dependency_build.md │ │ │ │ │ ├── helm_dependency_list.md │ │ │ │ │ ├── helm_dependency_update.md │ │ │ │ │ ├── helm_env.md │ │ │ │ │ ├── helm_get.md │ │ │ │ │ ├── helm_get_all.md │ │ │ │ │ ├── helm_get_hooks.md │ │ │ │ │ ├── helm_get_manifest.md │ │ │ │ │ ├── helm_get_metadata.md │ │ │ │ │ ├── helm_get_notes.md │ │ │ │ │ ├── helm_get_values.md │ │ │ │ │ ├── helm_history.md │ │ │ │ │ ├── helm_install.md │ │ │ │ │ ├── helm_lint.md │ │ │ │ │ ├── helm_list.md │ │ │ │ │ ├── helm_package.md │ │ │ │ │ ├── helm_plugin.md │ │ │ │ │ ├── helm_plugin_install.md │ │ │ │ │ ├── helm_plugin_list.md │ │ │ │ │ ├── helm_plugin_package.md │ │ │ │ │ ├── helm_plugin_uninstall.md │ │ │ │ │ ├── helm_plugin_update.md │ │ │ │ │ ├── helm_plugin_verify.md │ │ │ │ │ ├── helm_pull.md │ │ │ │ │ ├── helm_push.md │ │ │ │ │ ├── helm_registry.md │ │ │ │ │ ├── helm_registry_login.md │ │ │ │ │ ├── helm_registry_logout.md │ │ │ │ │ ├── helm_repo.md │ │ │ │ │ ├── helm_repo_add.md │ │ │ │ │ ├── helm_repo_index.md │ │ │ │ │ ├── helm_repo_list.md │ │ │ │ │ ├── helm_repo_remove.md │ │ │ │ │ ├── helm_repo_update.md │ │ │ │ │ ├── helm_rollback.md │ │ │ │ │ ├── helm_search.md │ │ │ │ │ ├── helm_search_hub.md │ │ │ │ │ ├── helm_search_repo.md │ │ │ │ │ ├── helm_show.md │ │ │ │ │ ├── helm_show_all.md │ │ │ │ │ ├── helm_show_chart.md │ │ │ │ │ ├── helm_show_crds.md │ │ │ │ │ ├── helm_show_readme.md │ │ │ │ │ ├── helm_show_values.md │ │ │ │ │ ├── helm_status.md │ │ │ │ │ ├── helm_template.md │ │ │ │ │ ├── helm_test.md │ │ │ │ │ ├── helm_uninstall.md │ │ │ │ │ ├── helm_upgrade.md │ │ │ │ │ ├── helm_verify.md │ │ │ │ │ ├── helm_version.md │ │ │ │ │ └── index.mdx │ │ │ │ ├── howto/ │ │ │ │ │ ├── chart_releaser_action.md │ │ │ │ │ ├── chart_repository_sync_example.md │ │ │ │ │ ├── charts_tips_and_tricks.md │ │ │ │ │ └── index.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── intro/ │ │ │ │ │ ├── CheatSheet.mdx │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── install.mdx │ │ │ │ │ ├── quickstart.md │ │ │ │ │ └── using_helm.mdx │ │ │ │ ├── overview.md │ │ │ │ ├── plugins/ │ │ │ │ │ ├── developer/ │ │ │ │ │ │ ├── index.mdx │ │ │ │ │ │ ├── tutorial-cli-plugin.mdx │ │ │ │ │ │ ├── tutorial-getter-plugin.mdx │ │ │ │ │ │ └── tutorial-postrenderer-plugin.mdx │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── overview.md │ │ │ │ │ └── user/ │ │ │ │ │ └── index.md │ │ │ │ ├── sdk/ │ │ │ │ │ ├── examples.mdx │ │ │ │ │ ├── gosdk.mdx │ │ │ │ │ └── index.mdx │ │ │ │ └── topics/ │ │ │ │ ├── advanced.mdx │ │ │ │ ├── architecture.md │ │ │ │ ├── chart_repository.md │ │ │ │ ├── chart_tests.md │ │ │ │ ├── charts.mdx │ │ │ │ ├── charts_hooks.md │ │ │ │ ├── index.mdx │ │ │ │ ├── kubernetes_apis.md │ │ │ │ ├── kubernetes_distros.md │ │ │ │ ├── library_charts.md │ │ │ │ ├── permissions_sql_storage_backend.md │ │ │ │ ├── plugins.mdx │ │ │ │ ├── provenance.mdx │ │ │ │ ├── rbac.md │ │ │ │ ├── registries.mdx │ │ │ │ └── version_skew.mdx │ │ │ ├── current.json │ │ │ ├── version-2.json │ │ │ ├── version-3/ │ │ │ │ ├── chart_best_practices/ │ │ │ │ │ ├── conventions.md │ │ │ │ │ ├── custom_resource_definitions.md │ │ │ │ │ ├── dependencies.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── labels.md │ │ │ │ │ ├── pods.md │ │ │ │ │ ├── rbac.md │ │ │ │ │ ├── templates.md │ │ │ │ │ └── values.md │ │ │ │ ├── chart_template_guide/ │ │ │ │ │ ├── accessing_files.md │ │ │ │ │ ├── builtin_objects.md │ │ │ │ │ ├── control_structures.md │ │ │ │ │ ├── data_types.md │ │ │ │ │ ├── debugging.md │ │ │ │ │ ├── function_list.md │ │ │ │ │ ├── functions_and_pipelines.md │ │ │ │ │ ├── getting_started.md │ │ │ │ │ ├── helm_ignore_file.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── named_templates.md │ │ │ │ │ ├── notes_files.md │ │ │ │ │ ├── subcharts_and_globals.md │ │ │ │ │ ├── values_files.md │ │ │ │ │ ├── variables.md │ │ │ │ │ ├── wrapping_up.md │ │ │ │ │ └── yaml_techniques.md │ │ │ │ ├── faq/ │ │ │ │ │ ├── changes_since_helm2.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── installing.md │ │ │ │ │ ├── troubleshooting.md │ │ │ │ │ └── uninstalling.md │ │ │ │ ├── glossary/ │ │ │ │ │ └── index.mdx │ │ │ │ ├── helm/ │ │ │ │ │ ├── _category_.json │ │ │ │ │ ├── helm.md │ │ │ │ │ ├── helm_completion.md │ │ │ │ │ ├── helm_completion_bash.md │ │ │ │ │ ├── helm_completion_fish.md │ │ │ │ │ ├── helm_completion_powershell.md │ │ │ │ │ ├── helm_completion_zsh.md │ │ │ │ │ ├── helm_create.md │ │ │ │ │ ├── helm_dependency.md │ │ │ │ │ ├── helm_dependency_build.md │ │ │ │ │ ├── helm_dependency_list.md │ │ │ │ │ ├── helm_dependency_update.md │ │ │ │ │ ├── helm_env.md │ │ │ │ │ ├── helm_get.md │ │ │ │ │ ├── helm_get_all.md │ │ │ │ │ ├── helm_get_hooks.md │ │ │ │ │ ├── helm_get_manifest.md │ │ │ │ │ ├── helm_get_metadata.md │ │ │ │ │ ├── helm_get_notes.md │ │ │ │ │ ├── helm_get_values.md │ │ │ │ │ ├── helm_history.md │ │ │ │ │ ├── helm_install.md │ │ │ │ │ ├── helm_lint.md │ │ │ │ │ ├── helm_list.md │ │ │ │ │ ├── helm_package.md │ │ │ │ │ ├── helm_plugin.md │ │ │ │ │ ├── helm_plugin_install.md │ │ │ │ │ ├── helm_plugin_list.md │ │ │ │ │ ├── helm_plugin_uninstall.md │ │ │ │ │ ├── helm_plugin_update.md │ │ │ │ │ ├── helm_pull.md │ │ │ │ │ ├── helm_push.md │ │ │ │ │ ├── helm_registry.md │ │ │ │ │ ├── helm_registry_login.md │ │ │ │ │ ├── helm_registry_logout.md │ │ │ │ │ ├── helm_repo.md │ │ │ │ │ ├── helm_repo_add.md │ │ │ │ │ ├── helm_repo_index.md │ │ │ │ │ ├── helm_repo_list.md │ │ │ │ │ ├── helm_repo_remove.md │ │ │ │ │ ├── helm_repo_update.md │ │ │ │ │ ├── helm_rollback.md │ │ │ │ │ ├── helm_search.md │ │ │ │ │ ├── helm_search_hub.md │ │ │ │ │ ├── helm_search_repo.md │ │ │ │ │ ├── helm_show.md │ │ │ │ │ ├── helm_show_all.md │ │ │ │ │ ├── helm_show_chart.md │ │ │ │ │ ├── helm_show_crds.md │ │ │ │ │ ├── helm_show_readme.md │ │ │ │ │ ├── helm_show_values.md │ │ │ │ │ ├── helm_status.md │ │ │ │ │ ├── helm_template.md │ │ │ │ │ ├── helm_test.md │ │ │ │ │ ├── helm_uninstall.md │ │ │ │ │ ├── helm_upgrade.md │ │ │ │ │ ├── helm_verify.md │ │ │ │ │ ├── helm_version.md │ │ │ │ │ └── index.mdx │ │ │ │ ├── howto/ │ │ │ │ │ ├── chart_releaser_action.md │ │ │ │ │ ├── chart_repository_sync_example.md │ │ │ │ │ ├── charts_tips_and_tricks.md │ │ │ │ │ └── index.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── intro/ │ │ │ │ │ ├── CheatSheet.md │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── install.md │ │ │ │ │ ├── quickstart.md │ │ │ │ │ └── using_helm.md │ │ │ │ ├── sdk/ │ │ │ │ │ ├── _install.mdx │ │ │ │ │ ├── _list.mdx │ │ │ │ │ ├── _main.mdx │ │ │ │ │ ├── _pull.mdx │ │ │ │ │ ├── _uninstall.mdx │ │ │ │ │ ├── _upgrade.mdx │ │ │ │ │ ├── examples.mdx │ │ │ │ │ ├── gosdk.md │ │ │ │ │ └── index.mdx │ │ │ │ └── topics/ │ │ │ │ ├── advanced.md │ │ │ │ ├── architecture.md │ │ │ │ ├── chart_repository.md │ │ │ │ ├── chart_tests.md │ │ │ │ ├── charts.md │ │ │ │ ├── charts_hooks.md │ │ │ │ ├── index.mdx │ │ │ │ ├── kubernetes_apis.md │ │ │ │ ├── kubernetes_distros.md │ │ │ │ ├── library_charts.md │ │ │ │ ├── permissions_sql_storage_backend.md │ │ │ │ ├── plugins.md │ │ │ │ ├── provenance.md │ │ │ │ ├── rbac.md │ │ │ │ ├── registries.md │ │ │ │ ├── v2_v3_migration.md │ │ │ │ └── version_skew.md │ │ │ └── version-3.json │ │ ├── docusaurus-plugin-content-docs-community/ │ │ │ └── current/ │ │ │ ├── MAINTAINERS.md │ │ │ ├── README.md │ │ │ ├── code-of-conduct.md │ │ │ ├── communication.md │ │ │ ├── developers.md │ │ │ ├── history.mdx │ │ │ ├── localization.md │ │ │ ├── related.md │ │ │ ├── release_checklist.md │ │ │ └── release_policy.md │ │ └── docusaurus-theme-classic/ │ │ ├── footer.json │ │ └── navbar.json │ └── zh/ │ ├── code.json │ ├── docusaurus-plugin-content-blog/ │ │ └── options.json │ ├── docusaurus-plugin-content-docs/ │ │ ├── current.json │ │ ├── version-2.json │ │ ├── version-3/ │ │ │ ├── chart_best_practices/ │ │ │ │ ├── conventions.md │ │ │ │ ├── custom_resource_definitions.md │ │ │ │ ├── dependencies.md │ │ │ │ ├── index.mdx │ │ │ │ ├── labels.md │ │ │ │ ├── pods.md │ │ │ │ ├── rbac.md │ │ │ │ ├── templates.md │ │ │ │ └── values.md │ │ │ ├── chart_template_guide/ │ │ │ │ ├── accessing_files.md │ │ │ │ ├── builtin_objects.md │ │ │ │ ├── control_structures.md │ │ │ │ ├── data_types.md │ │ │ │ ├── debugging.md │ │ │ │ ├── function_list.md │ │ │ │ ├── functions_and_pipelines.md │ │ │ │ ├── getting_started.md │ │ │ │ ├── helm_ignore_file.md │ │ │ │ ├── index.mdx │ │ │ │ ├── named_templates.md │ │ │ │ ├── notes_files.md │ │ │ │ ├── subcharts_and_globals.md │ │ │ │ ├── values_files.md │ │ │ │ ├── variables.md │ │ │ │ ├── wrapping_up.md │ │ │ │ └── yaml_techniques.md │ │ │ ├── example/ │ │ │ │ ├── golang.md │ │ │ │ └── index.mdx │ │ │ ├── faq/ │ │ │ │ ├── changes_since_helm2.md │ │ │ │ ├── index.mdx │ │ │ │ ├── installing.md │ │ │ │ ├── troubleshooting.md │ │ │ │ └── uninstalling.md │ │ │ ├── glossary/ │ │ │ │ └── index.mdx │ │ │ ├── helm/ │ │ │ │ ├── _category_.json │ │ │ │ ├── helm.md │ │ │ │ ├── helm_completion.md │ │ │ │ ├── helm_completion_bash.md │ │ │ │ ├── helm_completion_fish.md │ │ │ │ ├── helm_completion_powershell.md │ │ │ │ ├── helm_completion_zsh.md │ │ │ │ ├── helm_create.md │ │ │ │ ├── helm_delete.md │ │ │ │ ├── helm_dependency.md │ │ │ │ ├── helm_dependency_build.md │ │ │ │ ├── helm_dependency_list.md │ │ │ │ ├── helm_dependency_update.md │ │ │ │ ├── helm_env.md │ │ │ │ ├── helm_get.md │ │ │ │ ├── helm_get_all.md │ │ │ │ ├── helm_get_hooks.md │ │ │ │ ├── helm_get_manifest.md │ │ │ │ ├── helm_get_metadata.md │ │ │ │ ├── helm_get_notes.md │ │ │ │ ├── helm_get_values.md │ │ │ │ ├── helm_history.md │ │ │ │ ├── helm_init.md │ │ │ │ ├── helm_inspect.md │ │ │ │ ├── helm_install.md │ │ │ │ ├── helm_lint.md │ │ │ │ ├── helm_list.md │ │ │ │ ├── helm_package.md │ │ │ │ ├── helm_plugin.md │ │ │ │ ├── helm_plugin_install.md │ │ │ │ ├── helm_plugin_list.md │ │ │ │ ├── helm_plugin_uninstall.md │ │ │ │ ├── helm_plugin_update.md │ │ │ │ ├── helm_pull.md │ │ │ │ ├── helm_push.md │ │ │ │ ├── helm_registry.md │ │ │ │ ├── helm_registry_login.md │ │ │ │ ├── helm_registry_logout.md │ │ │ │ ├── helm_repo.md │ │ │ │ ├── helm_repo_add.md │ │ │ │ ├── helm_repo_index.md │ │ │ │ ├── helm_repo_list.md │ │ │ │ ├── helm_repo_remove.md │ │ │ │ ├── helm_repo_update.md │ │ │ │ ├── helm_rollback.md │ │ │ │ ├── helm_search.md │ │ │ │ ├── helm_search_hub.md │ │ │ │ ├── helm_search_repo.md │ │ │ │ ├── helm_show.md │ │ │ │ ├── helm_show_all.md │ │ │ │ ├── helm_show_chart.md │ │ │ │ ├── helm_show_crds.md │ │ │ │ ├── helm_show_readme.md │ │ │ │ ├── helm_show_values.md │ │ │ │ ├── helm_status.md │ │ │ │ ├── helm_template.md │ │ │ │ ├── helm_test.md │ │ │ │ ├── helm_uninstall.md │ │ │ │ ├── helm_upgrade.md │ │ │ │ ├── helm_verify.md │ │ │ │ ├── helm_version.md │ │ │ │ └── index.mdx │ │ │ ├── howto/ │ │ │ │ ├── chart_releaser_action.md │ │ │ │ ├── chart_repository_sync_example.md │ │ │ │ ├── charts_tips_and_tricks.md │ │ │ │ └── index.mdx │ │ │ ├── index.mdx │ │ │ ├── intro/ │ │ │ │ ├── CheatSheet.md │ │ │ │ ├── index.mdx │ │ │ │ ├── install.md │ │ │ │ ├── quickstart.md │ │ │ │ └── using_helm.md │ │ │ ├── sdk/ │ │ │ │ ├── _install.mdx │ │ │ │ ├── _list.mdx │ │ │ │ ├── _main.mdx │ │ │ │ ├── _pull.mdx │ │ │ │ ├── _uninstall.mdx │ │ │ │ ├── _upgrade.mdx │ │ │ │ ├── examples.mdx │ │ │ │ ├── gosdk.md │ │ │ │ └── index.mdx │ │ │ └── topics/ │ │ │ ├── advanced.md │ │ │ ├── architecture.md │ │ │ ├── chart_repository.md │ │ │ ├── chart_tests.md │ │ │ ├── charts.md │ │ │ ├── charts_hooks.md │ │ │ ├── index.mdx │ │ │ ├── kubernetes_apis.md │ │ │ ├── kubernetes_distros.md │ │ │ ├── library_charts.md │ │ │ ├── permissions_sql_storage_backend.md │ │ │ ├── plugins.md │ │ │ ├── provenance.md │ │ │ ├── rbac.md │ │ │ ├── registries.md │ │ │ ├── v2_v3_migration.md │ │ │ └── version_skew.md │ │ └── version-3.json │ ├── docusaurus-plugin-content-docs-community/ │ │ └── current/ │ │ ├── developers.md │ │ ├── history.mdx │ │ ├── localization.md │ │ ├── related.md │ │ ├── release_checklist.md │ │ └── release_policy.md │ └── docusaurus-theme-classic/ │ ├── footer.json │ └── navbar.json ├── netlify-plugins/ │ ├── README.md │ ├── cache-docusaurus-dirs-api/ │ │ ├── index.js │ │ └── manifest.yml │ └── cache-docusaurus-dirs-file/ │ ├── index.js │ └── manifest.yml ├── netlify.toml ├── package.json ├── postcss.config.js ├── remote-content_community.js ├── scripts/ │ ├── migrate-v2-docs.js │ ├── migrate-v3-docs.js │ ├── regenerate-cli-docs.mjs │ ├── util/ │ │ ├── href-diffs-process.js │ │ ├── util-docusaurus-links.js │ │ ├── util-file-operations.js │ │ ├── util-frontmatter.js │ │ ├── util-migration.js │ │ └── util-text-replacements.js │ ├── v2/ │ │ ├── copy-files.js │ │ ├── href-diffs.json │ │ ├── menu-generate.js │ │ └── menu.json │ ├── v3/ │ │ ├── add-netlify-redirects.js │ │ ├── href-diffs.json │ │ ├── migrate-sdk-section.js │ │ ├── migrate-sdk-section.json │ │ ├── process-helm-files.js │ │ ├── remove-aliases.js │ │ ├── removed-aliases.json │ │ └── sdk-href-diffs.json │ └── v4/ │ └── changelog.mjs ├── sdkexamples/ │ ├── .gitignore │ ├── Makefile │ ├── README.md │ ├── go.mod │ ├── go.sum │ ├── install.go │ ├── list.go │ ├── main.go │ ├── pull.go │ ├── tlsutil.go │ ├── uninstall.go │ └── upgrade.go ├── sidebars.js ├── sidebars_community.js ├── src/ │ ├── client-modules/ │ │ └── heroHeightCalculator.js │ ├── components/ │ │ ├── Boat/ │ │ │ ├── boat.css │ │ │ └── index.js │ │ ├── GetVersion.js │ │ ├── HomeAbout/ │ │ │ ├── index.js │ │ │ └── styles.module.css │ │ ├── HomeCommunity/ │ │ │ ├── index.js │ │ │ └── styles.module.css │ │ ├── HomeFeatures/ │ │ │ ├── index.js │ │ │ └── styles.module.css │ │ ├── HomeGettingStarted/ │ │ │ ├── index.js │ │ │ └── styles.module.css │ │ ├── HomeHeader/ │ │ │ ├── index.js │ │ │ └── styles.module.css │ │ └── HomeSupport/ │ │ ├── index.js │ │ └── styles.module.css │ ├── css/ │ │ ├── announcement-bar.css │ │ ├── content.css │ │ ├── custom.css │ │ ├── fonts.css │ │ ├── footer.css │ │ ├── home-cards.module.css │ │ ├── home-sections.module.css │ │ ├── main.css │ │ └── navbar.css │ ├── pages/ │ │ ├── helm-4-release-party.js │ │ ├── index.js │ │ ├── index.module.css │ │ ├── markdown-page.md │ │ └── party.module.css │ ├── theme/ │ │ ├── Blog/ │ │ │ └── Pages/ │ │ │ ├── BlogAuthorsListPage/ │ │ │ │ ├── index.js │ │ │ │ └── styles.module.css │ │ │ └── BlogAuthorsPostsPage/ │ │ │ └── index.js │ │ ├── BlogAuthorsListBreadcrumbs/ │ │ │ ├── index.js │ │ │ └── styles.module.css │ │ ├── BlogAuthorsPostsBreadcrumbs/ │ │ │ ├── index.js │ │ │ └── styles.module.css │ │ ├── BlogBreadcrumbs/ │ │ │ ├── index.js │ │ │ └── styles.module.css │ │ ├── BlogLayout/ │ │ │ ├── index.js │ │ │ └── styles.module.css │ │ ├── BlogListBreadcrumbs/ │ │ │ ├── index.js │ │ │ └── styles.module.css │ │ ├── BlogListPage/ │ │ │ ├── StructuredData/ │ │ │ │ └── index.js │ │ │ └── index.js │ │ ├── BlogPostItem/ │ │ │ └── index.tsx │ │ ├── BlogPostPage/ │ │ │ ├── Metadata/ │ │ │ │ └── index.js │ │ │ ├── StructuredData/ │ │ │ │ └── index.js │ │ │ └── index.js │ │ ├── BlogSidebar/ │ │ │ └── Desktop/ │ │ │ ├── index.js │ │ │ └── styles.module.css │ │ ├── DocBreadcrumbs/ │ │ │ ├── Items/ │ │ │ │ └── Home/ │ │ │ │ ├── index.js │ │ │ │ └── styles.module.css │ │ │ ├── StructuredData/ │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── styles.module.css │ │ └── TOCCollapsible/ │ │ ├── CollapseButton/ │ │ │ ├── index.js │ │ │ └── styles.module.css │ │ ├── index.js │ │ └── styles.module.css │ └── utils/ │ ├── communityDocsHelpers.js │ └── communityDocsTransforms.js ├── static/ │ ├── .nojekyll │ ├── chartmuseum/ │ │ └── index.html │ └── helm/ │ ├── index.html │ ├── v2/ │ │ └── index.html │ ├── v3/ │ │ └── index.html │ └── v4/ │ └── index.html ├── style-guide.md ├── versioned_docs/ │ ├── version-2/ │ │ ├── architecture.md │ │ ├── chart_best_practices/ │ │ │ ├── chart_best_practices.md │ │ │ ├── conventions.md │ │ │ ├── custom_resource_definitions.md │ │ │ ├── labels.md │ │ │ ├── pods.md │ │ │ ├── rbac.md │ │ │ ├── requirements.md │ │ │ ├── templates.md │ │ │ └── values.md │ │ ├── chart_template_guide/ │ │ │ ├── accessing_files.md │ │ │ ├── builtin_objects.md │ │ │ ├── chart_template_guide.md │ │ │ ├── control_structures.md │ │ │ ├── data_types.md │ │ │ ├── debugging.md │ │ │ ├── functions_and_pipelines.md │ │ │ ├── getting_started.md │ │ │ ├── helm_ignore_file.md │ │ │ ├── named_templates.md │ │ │ ├── notes_files.md │ │ │ ├── subcharts_and_globals.md │ │ │ ├── values_files.md │ │ │ ├── variables.md │ │ │ ├── wrapping_up.md │ │ │ └── yaml_techniques.md │ │ ├── developers.md │ │ ├── developing_charts/ │ │ │ ├── chart_repository.md │ │ │ ├── chart_repository_faq.md │ │ │ ├── chart_repository_sync_example.md │ │ │ ├── chart_tests.md │ │ │ ├── charts_hooks.md │ │ │ ├── charts_tips_and_tricks.md │ │ │ ├── developing_charts.md │ │ │ └── provenance.md │ │ ├── glossary.md │ │ ├── helm/ │ │ │ ├── helm.md │ │ │ ├── helm_completion.md │ │ │ ├── helm_create.md │ │ │ ├── helm_delete.md │ │ │ ├── helm_dependency.md │ │ │ ├── helm_dependency_build.md │ │ │ ├── helm_dependency_list.md │ │ │ ├── helm_dependency_update.md │ │ │ ├── helm_fetch.md │ │ │ ├── helm_get.md │ │ │ ├── helm_get_hooks.md │ │ │ ├── helm_get_manifest.md │ │ │ ├── helm_get_notes.md │ │ │ ├── helm_get_values.md │ │ │ ├── helm_history.md │ │ │ ├── helm_home.md │ │ │ ├── helm_init.md │ │ │ ├── helm_inspect.md │ │ │ ├── helm_inspect_chart.md │ │ │ ├── helm_inspect_readme.md │ │ │ ├── helm_inspect_values.md │ │ │ ├── helm_install.md │ │ │ ├── helm_lint.md │ │ │ ├── helm_list.md │ │ │ ├── helm_package.md │ │ │ ├── helm_plugin.md │ │ │ ├── helm_plugin_install.md │ │ │ ├── helm_plugin_list.md │ │ │ ├── helm_plugin_remove.md │ │ │ ├── helm_plugin_update.md │ │ │ ├── helm_repo.md │ │ │ ├── helm_repo_add.md │ │ │ ├── helm_repo_index.md │ │ │ ├── helm_repo_list.md │ │ │ ├── helm_repo_remove.md │ │ │ ├── helm_repo_update.md │ │ │ ├── helm_reset.md │ │ │ ├── helm_rollback.md │ │ │ ├── helm_search.md │ │ │ ├── helm_serve.md │ │ │ ├── helm_status.md │ │ │ ├── helm_template.md │ │ │ ├── helm_test.md │ │ │ ├── helm_upgrade.md │ │ │ ├── helm_verify.md │ │ │ └── helm_version.md │ │ ├── history.md │ │ ├── index.mdx │ │ ├── related.md │ │ └── using_helm/ │ │ ├── install.md │ │ ├── install_faq.md │ │ ├── kubernetes_apis.md │ │ ├── kubernetes_distros.md │ │ ├── plugins.md │ │ ├── rbac.md │ │ ├── securing_installation.md │ │ ├── tiller_ssl.md │ │ └── using_helm.md │ └── version-3/ │ ├── chart_best_practices/ │ │ ├── conventions.md │ │ ├── custom_resource_definitions.md │ │ ├── dependencies.md │ │ ├── index.mdx │ │ ├── labels.md │ │ ├── pods.md │ │ ├── rbac.md │ │ ├── templates.md │ │ └── values.md │ ├── chart_template_guide/ │ │ ├── accessing_files.md │ │ ├── builtin_objects.md │ │ ├── control_structures.md │ │ ├── data_types.md │ │ ├── debugging.md │ │ ├── function_list.md │ │ ├── functions_and_pipelines.md │ │ ├── getting_started.md │ │ ├── helm_ignore_file.md │ │ ├── index.mdx │ │ ├── named_templates.md │ │ ├── notes_files.md │ │ ├── subcharts_and_globals.md │ │ ├── values_files.md │ │ ├── variables.md │ │ ├── wrapping_up.md │ │ └── yaml_techniques.md │ ├── faq/ │ │ ├── changes_since_helm2.md │ │ ├── index.mdx │ │ ├── installing.md │ │ ├── troubleshooting.md │ │ └── uninstalling.md │ ├── glossary/ │ │ └── index.mdx │ ├── helm/ │ │ ├── _category_.json │ │ ├── helm.md │ │ ├── helm_completion.md │ │ ├── helm_completion_bash.md │ │ ├── helm_completion_fish.md │ │ ├── helm_completion_powershell.md │ │ ├── helm_completion_zsh.md │ │ ├── helm_create.md │ │ ├── helm_dependency.md │ │ ├── helm_dependency_build.md │ │ ├── helm_dependency_list.md │ │ ├── helm_dependency_update.md │ │ ├── helm_env.md │ │ ├── helm_get.md │ │ ├── helm_get_all.md │ │ ├── helm_get_hooks.md │ │ ├── helm_get_manifest.md │ │ ├── helm_get_metadata.md │ │ ├── helm_get_notes.md │ │ ├── helm_get_values.md │ │ ├── helm_history.md │ │ ├── helm_install.md │ │ ├── helm_lint.md │ │ ├── helm_list.md │ │ ├── helm_package.md │ │ ├── helm_plugin.md │ │ ├── helm_plugin_install.md │ │ ├── helm_plugin_list.md │ │ ├── helm_plugin_uninstall.md │ │ ├── helm_plugin_update.md │ │ ├── helm_pull.md │ │ ├── helm_push.md │ │ ├── helm_registry.md │ │ ├── helm_registry_login.md │ │ ├── helm_registry_logout.md │ │ ├── helm_repo.md │ │ ├── helm_repo_add.md │ │ ├── helm_repo_index.md │ │ ├── helm_repo_list.md │ │ ├── helm_repo_remove.md │ │ ├── helm_repo_update.md │ │ ├── helm_rollback.md │ │ ├── helm_search.md │ │ ├── helm_search_hub.md │ │ ├── helm_search_repo.md │ │ ├── helm_show.md │ │ ├── helm_show_all.md │ │ ├── helm_show_chart.md │ │ ├── helm_show_crds.md │ │ ├── helm_show_readme.md │ │ ├── helm_show_values.md │ │ ├── helm_status.md │ │ ├── helm_template.md │ │ ├── helm_test.md │ │ ├── helm_uninstall.md │ │ ├── helm_upgrade.md │ │ ├── helm_verify.md │ │ ├── helm_version.md │ │ └── index.mdx │ ├── howto/ │ │ ├── chart_releaser_action.md │ │ ├── chart_repository_sync_example.md │ │ ├── charts_tips_and_tricks.md │ │ └── index.mdx │ ├── index.mdx │ ├── intro/ │ │ ├── CheatSheet.md │ │ ├── index.mdx │ │ ├── install.md │ │ ├── quickstart.md │ │ └── using_helm.md │ ├── sdk/ │ │ ├── _install.mdx │ │ ├── _list.mdx │ │ ├── _main.mdx │ │ ├── _pull.mdx │ │ ├── _uninstall.mdx │ │ ├── _upgrade.mdx │ │ ├── examples.mdx │ │ ├── gosdk.md │ │ └── index.mdx │ └── topics/ │ ├── advanced.md │ ├── architecture.md │ ├── chart_repository.md │ ├── chart_tests.md │ ├── charts.md │ ├── charts_hooks.md │ ├── index.mdx │ ├── kubernetes_apis.md │ ├── kubernetes_distros.md │ ├── library_charts.md │ ├── permissions_sql_storage_backend.md │ ├── plugins.md │ ├── provenance.md │ ├── rbac.md │ ├── registries.md │ ├── v2_v3_migration.md │ └── version_skew.md ├── versioned_sidebars/ │ ├── version-2-sidebars.json │ └── version-3-sidebars.json └── versions.json
SYMBOL INDEX (183 symbols across 58 files)
FILE: docusaurus.config.js
method modifyContent (line 195) | modifyContent(filename, content) {
FILE: netlify-plugins/cache-docusaurus-dirs-api/index.js
function dirExists (line 11) | function dirExists(dirPath) {
function fileSha256 (line 20) | function fileSha256(filePath) {
function makeKey (line 29) | function makeKey({ dir, repoRoot }) {
function restoreDir (line 57) | async function restoreDir(utils, absPath, key) {
function saveDir (line 74) | async function saveDir(utils, absPath, key) {
method onPreBuild (line 93) | async onPreBuild({ inputs, utils }) {
method onPostBuild (line 117) | async onPostBuild({ inputs, utils }) {
FILE: netlify-plugins/cache-docusaurus-dirs-file/index.js
function dirExists (line 11) | function dirExists(dirPath) {
function fileSha256 (line 20) | function fileSha256(filePath) {
function makeKey (line 29) | function makeKey({ dir, repoRoot }) {
function restoreDir (line 57) | async function restoreDir(utils, absPath, key) {
function saveDir (line 93) | async function saveDir(utils, absPath, key) {
method onPreBuild (line 112) | async onPreBuild({ inputs, utils }) {
method onPostBuild (line 136) | async onPostBuild({ inputs, utils }) {
FILE: scripts/migrate-v2-docs.js
function migrateV2Docs (line 11) | async function migrateV2Docs(majorVersion = 2) {
FILE: scripts/migrate-v3-docs.js
function migrateV3Docs (line 27) | async function migrateV3Docs(majorVersion = 3) {
FILE: scripts/regenerate-cli-docs.mjs
constant PROJECT_ROOT (line 12) | const PROJECT_ROOT = path.dirname(__dirname);
function getMajorVersion (line 17) | function getMajorVersion(version) {
function getHelmLatest (line 25) | async function getHelmLatest() {
function regenerateDocs (line 43) | function regenerateDocs(helmVersion, versionDir) {
function deleteDeprecatedFiles (line 93) | function deleteDeprecatedFiles(helmDir) {
function renameIndexFilesToMdx (line 130) | function renameIndexFilesToMdx(helmDir) {
function createOrUpdateIndexFile (line 154) | function createOrUpdateIndexFile(helmDir) {
function processHelmFiles (line 184) | function processHelmFiles(helmDir) {
function processHelmHrefDifferences (line 269) | function processHelmHrefDifferences(helmDir) {
function convertSeeAlsoLinksToAbsolute (line 315) | function convertSeeAlsoLinksToAbsolute(helmDir) {
function main (line 359) | async function main() {
FILE: scripts/util/href-diffs-process.js
function processHrefDifferences (line 13) | function processHrefDifferences(majorVersion, differencesFile) {
function processHrefDifferencesInDirectory (line 69) | function processHrefDifferencesInDirectory(dirPath, hrefDifferences, maj...
FILE: scripts/util/util-docusaurus-links.js
constant HELM_CATEGORIES (line 7) | const HELM_CATEGORIES = [
function isCategory (line 25) | function isCategory(pathSegment) {
function convertCategoryPath (line 40) | function convertCategoryPath(categoryPath, currentDepth, relativePath) {
function convertRelativeLinksToAbsolute (line 64) | function convertRelativeLinksToAbsolute(majorVersion) {
function processDirectoryLinks (line 110) | function processDirectoryLinks(dirPath) {
function processMarkdownFile (line 149) | function processMarkdownFile(filePath, basePath) {
function convertMarkdownLink (line 329) | function convertMarkdownLink(text, linkPath, currentDepth, relativePath) {
function convertToAbsolutePath (line 351) | function convertToAbsolutePath(linkPath, currentDepth, relativePath) {
FILE: scripts/util/util-file-operations.js
function findFiles (line 12) | function findFiles(dir, extensions = ['.md', '.mdx']) {
function moveDirectoryContents (line 44) | function moveDirectoryContents(sourceDir, destDir) {
function removeDirectory (line 71) | function removeDirectory(dir) {
function createDirectory (line 82) | function createDirectory(dir) {
function copyFile (line 92) | function copyFile(sourceFile, destFile) {
function renameFile (line 106) | function renameFile(oldPath, newPath) {
FILE: scripts/util/util-frontmatter.js
function frontMatterFromYaml (line 10) | function frontMatterFromYaml(content) {
function frontMatterToYaml (line 65) | function frontMatterToYaml(frontmatter, restContent) {
FILE: scripts/util/util-migration.js
function startFresh (line 13) | function startFresh(majorVersion) {
function restoreSourceContent (line 28) | function restoreSourceContent(majorVersion) {
function skaffoldMajorVersion (line 65) | function skaffoldMajorVersion(majorVersion = 3) {
function moveDocs (line 91) | function moveDocs(majorVersion = 3) {
function deleteDeprecatedFiles (line 110) | function deleteDeprecatedFiles(majorVersion = 3) {
function deleteDeprecatedFilesInDirectory (line 150) | function deleteDeprecatedFilesInDirectory(dirPath) {
function replaceWeightWithSidebarPosition (line 176) | function replaceWeightWithSidebarPosition(majorVersion = 3) {
function replaceWeightInDirectory (line 216) | function replaceWeightInDirectory(dirPath) {
function addMainIndexMetadata (line 248) | function addMainIndexMetadata(majorVersion = 3) {
function addDocsIndexLists (line 278) | function addDocsIndexLists(majorVersion = 3) {
function addDocCardListInDirectory (line 318) | function addDocCardListInDirectory(dirPath) {
function importSDK (line 371) | function importSDK(majorVersion = 3) {
function renameIndexFilesToMdx (line 459) | function renameIndexFilesToMdx(majorVersion = 3) {
function renameIndexFilesInDirectory (line 499) | function renameIndexFilesInDirectory(dirPath) {
function renameCommandsToHelm (line 533) | function renameCommandsToHelm(majorVersion) {
FILE: scripts/util/util-text-replacements.js
function replaceHugoShortcodes (line 14) | function replaceHugoShortcodes(majorVersion = 3) {
function processHugoShortcodesInDirectory (line 57) | function processHugoShortcodesInDirectory(dirPath) {
function fixMarkdownLinkHrefs (line 147) | function fixMarkdownLinkHrefs(majorVersion = 3) {
function applyAllTextReplacements (line 158) | function applyAllTextReplacements(majorVersion = 3) {
FILE: scripts/v2/copy-files.js
function copyV2DocsToDocusaurus (line 11) | function copyV2DocsToDocusaurus() {
function buildHeaderFileMap (line 72) | function buildHeaderFileMap(docsPath) {
function extractHeaderFromContent (line 118) | function extractHeaderFromContent(content) {
function extractCategoryFromUrlPath (line 144) | function extractCategoryFromUrlPath(urlPath) {
function processCategoryWithChildren (line 153) | function processCategoryWithChildren(categoryItem, categoryName, outputP...
function processTopLevelFile (line 215) | function processTopLevelFile(item, outputPath, helm2DocsPath, headerToFi...
function normalizeQuotes (line 256) | function normalizeQuotes(text) {
function findSourceFileByHeader (line 269) | function findSourceFileByHeader(headerText, headerToFileMap) {
function copyFileWithFrontmatter (line 310) | function copyFileWithFrontmatter(sourcePath, targetPath, frontmatterData...
function createIndexFile (line 354) | function createIndexFile(outputPath) {
function extractFirstH2Heading (line 375) | function extractFirstH2Heading(content) {
function removeFirstH2Heading (line 391) | function removeFirstH2Heading(content) {
function createFrontmatter (line 419) | function createFrontmatter(data, isIndex = false) {
FILE: scripts/v2/menu-generate.js
constant V2_DOCS_URL (line 7) | const V2_DOCS_URL = 'https://v2.helm.sh/docs/';
FILE: scripts/v3/add-netlify-redirects.js
function addNetlifyRedirects (line 9) | function addNetlifyRedirects() {
FILE: scripts/v3/migrate-sdk-section.js
function importSdkExamplesFromGoFiles (line 13) | function importSdkExamplesFromGoFiles(majorVersion = 3) {
function applySdkHrefTransformations (line 107) | function applySdkHrefTransformations(majorVersion = 3) {
function migrateSdkSection (line 169) | function migrateSdkSection(majorVersion = 3) {
FILE: scripts/v3/process-helm-files.js
function processHelmFiles (line 14) | function processHelmFiles() {
function processHelmDirectory (line 50) | function processHelmDirectory(helmDir) {
function processHelmFile (line 107) | function processHelmFile(content, fileName) {
function updateIndexMdx (line 178) | function updateIndexMdx(helmDir) {
function createCategoryJson (line 226) | function createCategoryJson(helmDir) {
FILE: scripts/v3/remove-aliases.js
function removeAliasesFromFiles (line 10) | function removeAliasesFromFiles() {
FILE: scripts/v4/changelog.mjs
constant PARALLEL_LIMIT (line 17) | const PARALLEL_LIMIT = 10;
constant RATE_LIMIT_THRESHOLD (line 18) | const RATE_LIMIT_THRESHOLD = 500;
constant PROJECT_ROOT (line 19) | const PROJECT_ROOT = path.resolve(__dirname, "../..");
constant HELM_REPO_DIR (line 20) | const HELM_REPO_DIR = path.join(PROJECT_ROOT, "orig/helm");
constant BREAKING_CHANGES (line 23) | const BREAKING_CHANGES = new Set([
constant BASE_REF (line 60) | const BASE_REF = args[0];
constant HEAD_REF (line 61) | const HEAD_REF = args[1];
constant OUTPUT_FILE (line 62) | const OUTPUT_FILE = args[2] || "docs/changelog.md";
function setupHelmRepo (line 100) | async function setupHelmRepo() {
function getCommits (line 137) | async function getCommits(git) {
function checkRateLimit (line 173) | async function checkRateLimit() {
function fetchPRForCommit (line 182) | async function fetchPRForCommit(sha, git) {
function fetchAllPRs (line 213) | async function fetchAllPRs(commits, git) {
function categorizePRs (line 288) | function categorizePRs(prs) {
function formatPRRow (line 325) | function formatPRRow(pr) {
function sortByDate (line 337) | function sortByDate(prs) {
function generateMarkdown (line 341) | function generateMarkdown(categories, totalPRs) {
function main (line 466) | async function main() {
FILE: sdkexamples/install.go
function runInstall (line 16) | func runInstall(ctx context.Context, logger *log.Logger, settings *cli.E...
FILE: sdkexamples/list.go
function runList (line 11) | func runList(logger *log.Logger, settings *cli.EnvSettings) error {
FILE: sdkexamples/main.go
function initActionConfig (line 18) | func initActionConfig(settings *cli.EnvSettings, logger *log.Logger) (*a...
function initActionConfigList (line 22) | func initActionConfigList(settings *cli.EnvSettings, logger *log.Logger,...
function newRegistryClient (line 45) | func newRegistryClient(settings *cli.EnvSettings, certFile, keyFile, caF...
function main (line 85) | func main() {
FILE: sdkexamples/pull.go
function runPull (line 11) | func runPull(logger *log.Logger, settings *cli.EnvSettings, chartRef, ch...
FILE: sdkexamples/tlsutil.go
type TLSConfigOptions (line 28) | type TLSConfigOptions struct
type TLSConfigOption (line 34) | type TLSConfigOption
function WithInsecureSkipVerify (line 36) | func WithInsecureSkipVerify(insecureSkipTLSverify bool) TLSConfigOption {
function WithCertKeyPairFiles (line 44) | func WithCertKeyPairFiles(certFile, keyFile string) TLSConfigOption {
function WithCAFile (line 67) | func WithCAFile(caFile string) TLSConfigOption {
function NewTLSConfig (line 84) | func NewTLSConfig(options ...TLSConfigOption) (*tls.Config, error) {
FILE: sdkexamples/uninstall.go
function runUninstall (line 11) | func runUninstall(logger *log.Logger, settings *cli.EnvSettings, release...
FILE: sdkexamples/upgrade.go
function runUpgrade (line 16) | func runUpgrade(ctx context.Context, logger *log.Logger, settings *cli.E...
FILE: src/client-modules/heroHeightCalculator.js
function initializeHeroHeightCalculation (line 2) | function initializeHeroHeightCalculation() {
FILE: src/components/Boat/index.js
function BoatComponent (line 4) | function BoatComponent() {
FILE: src/components/GetVersion.js
function GetVersion (line 11) | function GetVersion({ majorVersion, label, link }) {
FILE: src/components/HomeAbout/index.js
function About (line 9) | function About() {
function HomeAbout (line 73) | function HomeAbout() {
FILE: src/components/HomeCommunity/index.js
function CustomDate (line 21) | function CustomDate({dateString, formatType, endDateString}) {
function Block (line 435) | function Block({ title, description }) {
function HomeCommunity (line 448) | function HomeCommunity() {
FILE: src/components/HomeFeatures/index.js
function Feature (line 53) | function Feature({ title, description }) {
function HomeFeatures (line 68) | function HomeFeatures() {
FILE: src/components/HomeGettingStarted/index.js
function HomeGettingStarted (line 11) | function HomeGettingStarted() {
FILE: src/components/HomeHeader/index.js
function HomeHeader (line 8) | function HomeHeader() {
FILE: src/components/HomeSupport/index.js
function CompanyLogo (line 75) | function CompanyLogo({ name, src, url }) {
function HomeSupport (line 93) | function HomeSupport() {
FILE: src/pages/helm-4-release-party.js
function Party (line 10) | function Party() {
FILE: src/pages/index.js
function Home (line 11) | function Home() {
FILE: src/theme/Blog/Pages/BlogAuthorsListPage/index.js
function AuthorListItem (line 15) | function AuthorListItem({author}) {
function AuthorsList (line 22) | function AuthorsList({authors}) {
function BlogAuthorsListPage (line 33) | function BlogAuthorsListPage({authors, sidebar}) {
FILE: src/theme/Blog/Pages/BlogAuthorsPostsPage/index.js
function Metadata (line 21) | function Metadata({author}) {
function ViewAllAuthorsLink (line 30) | function ViewAllAuthorsLink() {
function Content (line 38) | function Content({author, items, sidebar, listMetadata}) {
function BlogAuthorsPostsPage (line 61) | function BlogAuthorsPostsPage(props) {
FILE: src/theme/BlogAuthorsListBreadcrumbs/index.js
function BlogAuthorsListBreadcrumbs (line 12) | function BlogAuthorsListBreadcrumbs() {
FILE: src/theme/BlogAuthorsPostsBreadcrumbs/index.js
function BlogAuthorsPostsBreadcrumbs (line 12) | function BlogAuthorsPostsBreadcrumbs({author}) {
FILE: src/theme/BlogBreadcrumbs/index.js
function BlogBreadcrumbs (line 11) | function BlogBreadcrumbs() {
FILE: src/theme/BlogLayout/index.js
function useBlogTOC (line 12) | function useBlogTOC(toc, frontMatter = {}) {
function BlogLayout (line 37) | function BlogLayout(props) {
FILE: src/theme/BlogListBreadcrumbs/index.js
function BlogListBreadcrumbs (line 10) | function BlogListBreadcrumbs() {
FILE: src/theme/BlogListPage/StructuredData/index.js
function BlogListPageStructuredData (line 4) | function BlogListPageStructuredData(props) {
FILE: src/theme/BlogListPage/index.js
function BlogListPageMetadata (line 15) | function BlogListPageMetadata(props) {
function BlogListPageContent (line 30) | function BlogListPageContent(props) {
function BlogListPage (line 40) | function BlogListPage(props) {
FILE: src/theme/BlogPostItem/index.tsx
function useContainerClassName (line 12) | function useContainerClassName() {
function BlogPostItem (line 17) | function BlogPostItem({children, className}: Props): ReactNode {
FILE: src/theme/BlogPostPage/Metadata/index.js
function BlogPostPageMetadata (line 4) | function BlogPostPageMetadata() {
FILE: src/theme/BlogPostPage/StructuredData/index.js
function BlogPostStructuredData (line 4) | function BlogPostStructuredData() {
FILE: src/theme/BlogPostPage/index.js
function BlogPostPageContent (line 15) | function BlogPostPageContent({sidebar, children}) {
function BlogPostPage (line 38) | function BlogPostPage(props) {
FILE: src/theme/BlogSidebar/Desktop/index.js
function BlogSidebarDesktop (line 22) | function BlogSidebarDesktop({sidebar}) {
FILE: src/theme/DocBreadcrumbs/Items/Home/index.js
function HomeBreadcrumbItem (line 7) | function HomeBreadcrumbItem() {
FILE: src/theme/DocBreadcrumbs/StructuredData/index.js
function DocBreadcrumbsStructuredData (line 4) | function DocBreadcrumbsStructuredData(props) {
FILE: src/theme/DocBreadcrumbs/index.js
function BreadcrumbsItemLink (line 12) | function BreadcrumbsItemLink({children, href, isLast}) {
function BreadcrumbsItem (line 26) | function BreadcrumbsItem({children, active}) {
function DocBreadcrumbs (line 36) | function DocBreadcrumbs() {
FILE: src/theme/TOCCollapsible/CollapseButton/index.js
function TOCCollapsibleCollapseButton (line 5) | function TOCCollapsibleCollapseButton({collapsed, ...props}) {
FILE: src/theme/TOCCollapsible/index.js
function TOCCollapsible (line 7) | function TOCCollapsible({
FILE: src/utils/communityDocsHelpers.js
function processConfig (line 22) | function processConfig(config) {
function createEditUrlFunction (line 63) | function createEditUrlFunction(sourceRepo) {
FILE: src/utils/communityDocsTransforms.js
function parseFrontMatterAndContent (line 5) | function parseFrontMatterAndContent(rawContent) {
function extractH1Title (line 27) | function extractH1Title(content) {
function stripH1 (line 33) | function stripH1(content) {
function buildFrontMatter (line 39) | function buildFrontMatter(meta) {
function resolveCanonicalTargetPath (line 64) | function resolveCanonicalTargetPath(currentFilePath, hrefPath) {
function processLinkHref (line 70) | function processLinkHref(filename, href, linkExceptions, slugByPath) {
function rewriteMarkdownLinks (line 96) | function rewriteMarkdownLinks(filename, content, linkExceptions, slugByP...
function addImportNotice (line 154) | function addImportNotice(filename) {
function formatHipSidebarLabel (line 168) | function formatHipSidebarLabel(meta, originalFrontmatter, filename) {
function createHipFrontmatterTable (line 183) | function createHipFrontmatterTable(originalFrontmatter, filename) {
function extractTxtTitle (line 244) | function extractTxtTitle(content) {
function transformImportedContent (line 262) | function transformImportedContent(filename, rawContent, metaByPath, slug...
Copy disabled (too large)
Download .json
Condensed preview — 2098 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (13,279K chars).
[
{
"path": ".containerignore",
"chars": 289,
"preview": "# Ignore node_modules directory\nnode_modules\n\n# Ignore any log files\n*.log\n\n# Ignore Containerfile and .containerignore "
},
{
"path": ".editorconfig",
"chars": 168,
"preview": "root = true\n\n[*]\nend_of_line = lf\ninsert_final_newline = true\n\n[Makefile]\nindent_style = tab\n\n[*.{html,js,json,md,sass,s"
},
{
"path": ".github/workflows/build.yml",
"chars": 676,
"preview": "name: build\n\non:\n push:\n paths:\n - sdkexamples/**\n branches:\n - main\n pull_request:\n paths:\n -"
},
{
"path": ".github/workflows/stale.yml",
"chars": 834,
"preview": "name: \"Close stale issues and prs\"\non:\n schedule:\n - cron: \"0 0 * * *\"\n\njobs:\n stale:\n runs-on: ubuntu-latest\n "
},
{
"path": ".github/workflows/typos.yml",
"chars": 355,
"preview": "name: typos\n\non:\n push:\n branches:\n - main\n pull_request:\n branches:\n - main\n\npermissions:\n contents:"
},
{
"path": ".github/workflows/update-community-docs.yml",
"chars": 1849,
"preview": "name: Update Community Documentation\n\non:\n schedule:\n # Run weekly on Mondays at 3 AM UTC\n # Adjust frequency as "
},
{
"path": ".gitignore",
"chars": 473,
"preview": "# Dependencies\n/node_modules\n\n# Production\n/build\n\n# Generated files\n.docusaurus\n.cache-loader\n\n# Misc\n.DS_Store\n.env.lo"
},
{
"path": ".markdownlint.json",
"chars": 189,
"preview": "{\n \"default\": true,\n \"MD013\": {\n \"code_block_line_length\": 999,\n \"tables\": false\n },\n \"MD014\":"
},
{
"path": ".netlify/state.json",
"chars": 53,
"preview": "{\n\t\"siteId\": \"bbe72dce-fa74-4199-abb2-6bdfe2b4d08c\"\n}"
},
{
"path": ".nvmrc",
"chars": 3,
"preview": "22\n"
},
{
"path": ".typos.toml",
"chars": 1103,
"preview": "[default]\nextend-ignore-re = [\n # Hex color codes in SCSS/CSS\n \"F[0-9A-F]{2,4}\",\n]\n\n[default.extend-words]\n# Company/P"
},
{
"path": ".vscode/launch.json",
"chars": 434,
"preview": "{\n // Use IntelliSense to learn about possible attributes.\n // Hover to view descriptions of existing attributes.\n //"
},
{
"path": "AGENTS.md",
"chars": 10678,
"preview": "# AGENTS.md\n\nThis file provides guidance to AI coding agents working with the helm.sh website repository.\n\n## Overview\n\n"
},
{
"path": "ARCHITECTURAL_DECISIONS.md",
"chars": 19244,
"preview": "# Architectural Decisions - Helm Website\n\nThis document explains Helm-specific architectural decisions that help maintai"
},
{
"path": "CONTRIBUTING-ko.md",
"chars": 8519,
"preview": "# 기여 가이드라인\n\nhelm.sh 웹사이트 및 문서에 대한 기여 가이드입니다. 헬름의 기본 프로젝트는 [helm/helm](https://github.com/helm/helm/blob/main/CONTRIBUTIN"
},
{
"path": "CONTRIBUTING.md",
"chars": 14464,
"preview": "# Contributing Guidelines\n\nThis is the contribution guide for the helm.sh website and documentation. Go to [helm/helm](h"
},
{
"path": "Containerfile",
"chars": 398,
"preview": "FROM node:20-alpine\n\nWORKDIR /src\n\n# Tools needed by Make targets\nRUN apk update && apk add --no-cache make\n\n# Use exist"
},
{
"path": "HELM2-TO-DOCUSAURUS.md",
"chars": 3970,
"preview": "# Helm v2 to Docusaurus Migration Guide\n\nAutomated migration of Helm v2 documentation from the original source repositor"
},
{
"path": "HELM3-TO-DOCUSAURUS.md",
"chars": 4572,
"preview": "# Helm v3 to Docusaurus Migration Guide\n\nAutomated migration of Helm v3 documentation from existing Hugo content to Docu"
},
{
"path": "LICENSE",
"chars": 1088,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2017 Microsoft Corporation\n\nPermission is hereby granted, free of charge, to any pe"
},
{
"path": "Makefile",
"chars": 1388,
"preview": "SITE_URL ?= http://localhost:3000\nBASE_URL ?= /\n\nclean:\n\trm -rf node_modules/ build/ .docusaurus .cache-loader\n\ninstall:"
},
{
"path": "OWNERS",
"chars": 252,
"preview": "maintainers:\n - gjenkins8\n - karenhchu\n - mattfarina\n - paigecalvert\n - scottrigby\n - technosophos\n - TerryHowe\n "
},
{
"path": "README-ko.md",
"chars": 6937,
"preview": "\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOS"
},
{
"path": "community/hips/archives/README.md",
"chars": 413,
"preview": "---\ntitle: Proposal Archives\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO NOT EDI"
},
{
"path": "community/hips/archives/helm/distributed-search.md",
"chars": 4411,
"preview": "---\ntitle: \"Proposal: Search of Distributed Repositories\"\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/CO"
},
{
"path": "community/hips/archives/helm/helm-v3/000-helm-v3.md",
"chars": 3955,
"preview": "---\ntitle: Helm 3 Design Proposal\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO NO"
},
{
"path": "community/hips/archives/helm/helm-v3/001-charts.md",
"chars": 8745,
"preview": "---\ntitle: Charts\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO NOT EDIT THIS FILE"
},
{
"path": "community/hips/archives/helm/helm-v3/002-events.md",
"chars": 10497,
"preview": "---\ntitle: Event-Driven Architecture\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO"
},
{
"path": "community/hips/archives/helm/helm-v3/003-state.md",
"chars": 5450,
"preview": "---\ntitle: State Management\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO NOT EDIT"
},
{
"path": "community/hips/archives/helm/helm-v3/004-hooks.md",
"chars": 896,
"preview": "---\ntitle: Hook Annotations\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO NOT EDIT"
},
{
"path": "community/hips/archives/helm/helm-v3/005-plugins.md",
"chars": 3919,
"preview": "---\ntitle: Plugins\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO NOT EDIT THIS FIL"
},
{
"path": "community/hips/archives/helm/helm-v3/006-repositories.md",
"chars": 6742,
"preview": "---\ntitle: Repositories\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO NOT EDIT THI"
},
{
"path": "community/hips/archives/helm/helm-v3/007-security.md",
"chars": 937,
"preview": "---\ntitle: Security Considerations\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO N"
},
{
"path": "community/hips/archives/helm/helm-v3/008-controller.md",
"chars": 2286,
"preview": "---\ntitle: \"Appendix A: A Helm Controller\"\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSIT"
},
{
"path": "community/hips/archives/helm/helm-v3/009-package_manager.md",
"chars": 2598,
"preview": "---\ntitle: \"Appendix B: What Is a Package Manager?\"\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNIT"
},
{
"path": "community/hips/archives/helm/helm-v3/010-removed.md",
"chars": 1474,
"preview": "---\ntitle: \"Appendx C: Removed Sections\"\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITOR"
},
{
"path": "community/hips/archives/helm/helm-v3/011-user_stories.md",
"chars": 3165,
"preview": "---\ntitle: Helm v3 User Stories\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO NOT "
},
{
"path": "community/hips/archives/helm/helm-v3/012-chart-dev-stories.md",
"chars": 6320,
"preview": "---\ntitle: Chart v3 User Stories\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO NOT"
},
{
"path": "community/hips/archives/helm/helm-v3/research/package-manager-ux.md",
"chars": 9631,
"preview": "---\ntitle: Package Manager UX\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO NOT ED"
},
{
"path": "community/hips/archives/monocular/1.0-improvements.md",
"chars": 4801,
"preview": "---\ntitle: \"Proposal: Monocular 1.0 - improvements and redefining project focus\"\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IM"
},
{
"path": "community/hips/hip-0001.md",
"chars": 20230,
"preview": "---\ntitle: Writing a HIP\nsidebar_label: \"0001: Writing a HIP\"\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HEL"
},
{
"path": "community/hips/hip-0002.md",
"chars": 5139,
"preview": "---\ntitle: Pre-defined release dates for Helm\nsidebar_label: \"0002: Pre-defined release dates for Helm\"\n---\n\n<!--\nTHIS F"
},
{
"path": "community/hips/hip-0003.md",
"chars": 5285,
"preview": "---\ntitle: How Projects Join the Helm Organization\nsidebar_label: \"0003: How Projects Join the Helm Organization\"\n---\n\n<"
},
{
"path": "community/hips/hip-0004.md",
"chars": 9679,
"preview": "---\ntitle: Document backwards-compatibility rules\nsidebar_label: \"0004: Document backwards-compatibility rules\"\n---\n\n<!-"
},
{
"path": "community/hips/hip-0005.md",
"chars": 3814,
"preview": "---\ntitle: Helm Org Maintainers and Deprecated Projects\nsidebar_label: \"0005: Helm Org Maintainers and Deprecated Projec"
},
{
"path": "community/hips/hip-0006.md",
"chars": 13266,
"preview": "---\ntitle: OCI Support\nsidebar_label: \"0006: OCI Support\"\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/CO"
},
{
"path": "community/hips/hip-0007.md",
"chars": 3598,
"preview": "---\ntitle: Document and Track maintainer groups\nsidebar_label: \"0007: Document and Track maintainer groups\"\n---\n\n<!--\nTH"
},
{
"path": "community/hips/hip-0008.md",
"chars": 6417,
"preview": "---\ntitle: Add descriptions to custom completions\nsidebar_label: \"0008: Add descriptions to custom completions\"\n---\n\n<!-"
},
{
"path": "community/hips/hip-0009.md",
"chars": 2900,
"preview": "---\ntitle: Transitioning Security Team Members on Project Deprecation\nsidebar_label: \"0009: Transitioning Security Team "
},
{
"path": "community/hips/hip-0010.md",
"chars": 4612,
"preview": "---\ntitle: Distributed responsibility for picking\nsidebar_label: \"0010: Distributed responsibility for picking\"\n---\n\n<!-"
},
{
"path": "community/hips/hip-0011.md",
"chars": 39057,
"preview": "---\ntitle: CRD Handling in Helm 3\nsidebar_label: \"0011: CRD Handling in Helm 3\"\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMP"
},
{
"path": "community/hips/hip-0012.md",
"chars": 18079,
"preview": "---\ntitle: Helm 4 Development Process\nsidebar_label: \"0012: Helm 4 Development Process\"\n---\n\n<!--\nTHIS FILE IS AUTOMATIC"
},
{
"path": "community/hips/hip-0014.md",
"chars": 6194,
"preview": "---\ntitle: Helm Triage Maintainers\nsidebar_label: \"0014: Helm Triage Maintainers\"\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY I"
},
{
"path": "community/hips/hip-0015.md",
"chars": 6214,
"preview": "---\ntitle: Annotation for Images used by Helm Charts\nsidebar_label: \"0015: Annotation for Images used by Helm Charts\"\n--"
},
{
"path": "community/hips/hip-0016.md",
"chars": 6451,
"preview": "---\ntitle: Add export-values directive (similar to import-values)\nsidebar_label: \"0016: Add export-values directive (sim"
},
{
"path": "community/hips/hip-0017.md",
"chars": 7522,
"preview": "---\ntitle: Helm OCI MediaType Registration\nsidebar_label: \"0017: Helm OCI MediaType Registration\"\n---\n\n<!--\nTHIS FILE IS"
},
{
"path": "community/hips/hip-0018.md",
"chars": 6565,
"preview": "---\ntitle: Add Repository URL and tarball digest to a chart's release metadata\nsidebar_label: \"0018: Add Repository URL "
},
{
"path": "community/hips/hip-0019.md",
"chars": 10861,
"preview": "---\ntitle: New annotations for displaying hook output\nsidebar_label: \"0019: New annotations for displaying hook output\"\n"
},
{
"path": "community/hips/hip-0020.md",
"chars": 5716,
"preview": "---\ntitle: \"H4HIP: Charts v3 Enablement\"\nsidebar_label: \"0020: H4HIP: Charts v3 Enablement\"\n---\n\n<!--\nTHIS FILE IS AUTOM"
},
{
"path": "community/hips/hip-0021.md",
"chars": 5685,
"preview": "---\ntitle: Enhanced logging library for Helm\nsidebar_label: \"0021: Enhanced logging library for Helm\"\n---\n\n<!--\nTHIS FIL"
},
{
"path": "community/hips/hip-0022.md",
"chars": 7982,
"preview": "---\ntitle: Wait With kstatus\nsidebar_label: \"0022: Wait With kstatus\"\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM"
},
{
"path": "community/hips/hip-0023.md",
"chars": 13154,
"preview": "---\ntitle: Utilize Server Side Apply for installs/upgrades\nsidebar_label: \"0023: Utilize Server Side Apply for installs/"
},
{
"path": "community/hips/hip-0024.md",
"chars": 6712,
"preview": "---\ntitle: Improve the Helm Documentation\nsidebar_label: \"0024: Improve the Helm Documentation\"\n---\n\n<!--\nTHIS FILE IS A"
},
{
"path": "community/hips/hip-0025.md",
"chars": 15787,
"preview": "---\ntitle: Better Support for Resource Creation Sequencing\nsidebar_label: \"0025: Better Support for Resource Creation Se"
},
{
"path": "community/hips/hip-0026.md",
"chars": 27157,
"preview": "---\ntitle: \"H4HIP: Wasm plugin system\"\nsidebar_label: \"0026: H4HIP: Wasm plugin system\"\n---\n\n<!--\nTHIS FILE IS AUTOMATIC"
},
{
"path": "community/history.mdx",
"chars": 2322,
"preview": "---\ntitle: The History of the Project\ndescription: Provides a high-level overview of the project's history.\nsidebar_posi"
},
{
"path": "community/incubator.md",
"chars": 9126,
"preview": "---\ntitle: Kubernetes Helm Incubator Process\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOS"
},
{
"path": "community/localization.md",
"chars": 9628,
"preview": "---\ntitle: \"Localizing Helm Documentation\"\ndescription: \"Instructions for localizing the Helm documentation.\"\naliases: ["
},
{
"path": "community/meeting-notes/2017.md",
"chars": 28372,
"preview": "---\ntitle: Helm Minutes for 2017\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO NOT"
},
{
"path": "community/meeting-notes/2018.md",
"chars": 102558,
"preview": "---\ntitle: Helm Minutes for 2018\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO NOT"
},
{
"path": "community/meeting-notes/2019.md",
"chars": 94482,
"preview": "---\ntitle: Helm Minutes for 2019\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO NOT"
},
{
"path": "community/meeting-notes/2020.md",
"chars": 153043,
"preview": "---\ntitle: Helm Minutes for 2020\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO NOT"
},
{
"path": "community/meeting-notes/2021.md",
"chars": 120376,
"preview": "---\ntitle: Helm Minutes for 2021\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO NOT"
},
{
"path": "community/meeting-notes/index.mdx",
"chars": 383,
"preview": "---\ntitle: Archived Meeting Notes\n---\n\nHere are all of the archived Helm meeting notes prior to 2022. They are retained "
},
{
"path": "community/related.md",
"chars": 8476,
"preview": "---\ntitle: Related Projects and Documentation\ndescription: third-party tools, plugins and documentation provided by the "
},
{
"path": "community/release_checklist.md",
"chars": 19623,
"preview": "---\ntitle: Maintainer Release Checklist\ndescription: Checklist for maintainers when releasing the next version of Helm.\n"
},
{
"path": "community/release_policy.md",
"chars": 2290,
"preview": "---\ntitle: \"Release schedule policy\"\ndescription: \"Describes Helm's release schedule policy.\"\n---\n\nFor the benefit of it"
},
{
"path": "community/stable-repo-charts-new-locations.md",
"chars": 25201,
"preview": "---\ntitle: Stable chart repo new locations\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSIT"
},
{
"path": "community/user-profiles.md",
"chars": 3576,
"preview": "---\ntitle: User Profiles\n---\n\n<!--\nTHIS FILE IS AUTOMATICALLY IMPORTED FROM THE HELM/COMMUNITY REPOSITORY\nDO NOT EDIT TH"
},
{
"path": "docs/_v4-in-progress.mdx",
"chars": 255,
"preview": ":::warning\nThis page has not yet been updated for Helm 4. Some of the content might be inaccurate or not applicable to H"
},
{
"path": "docs/changelog.md",
"chars": 27110,
"preview": "---\nsidebar_position: 2\nsidebar_label: Full Changelog\n---\n\n# Helm 4 Full Changelog\n\n**Scope**: 290 PRs from (`v4.0.0-rc."
},
{
"path": "docs/chart_best_practices/conventions.md",
"chars": 1784,
"preview": "---\ntitle: General Conventions\ndescription: General conventions for charts.\nsidebar_position: 1\n---\n\nThis part of the Be"
},
{
"path": "docs/chart_best_practices/custom_resource_definitions.md",
"chars": 3439,
"preview": "---\ntitle: Custom Resource Definitions\ndescription: How to handle creating and using CRDs.\nsidebar_position: 7\n---\n\nThis"
},
{
"path": "docs/chart_best_practices/dependencies.mdx",
"chars": 2664,
"preview": "---\ntitle: Dependencies\ndescription: Covers best practices for Chart dependencies.\nsidebar_position: 4\n---\n\nimport Helm4"
},
{
"path": "docs/chart_best_practices/index.mdx",
"chars": 521,
"preview": "---\ntitle: Best Practices\nsidebar: true\nsidebar_position: 4\n---\n\n# The Chart Best Practices Guide\n\nThis guide covers the"
},
{
"path": "docs/chart_best_practices/labels.md",
"chars": 2613,
"preview": "---\ntitle: Labels and Annotations\ndescription: Covers best practices for using labels and annotations in your Chart.\nsid"
},
{
"path": "docs/chart_best_practices/pods.md",
"chars": 1912,
"preview": "---\ntitle: Pods and PodTemplates\ndescription: Discusses formatting the Pod and PodTemplate portions in Chart manifests.\n"
},
{
"path": "docs/chart_best_practices/rbac.md",
"chars": 2496,
"preview": "---\ntitle: Role-Based Access Control\ndescription: Discusses the creation and formatting of RBAC resources in Chart manif"
},
{
"path": "docs/chart_best_practices/templates.md",
"chars": 5229,
"preview": "---\ntitle: Templates\ndescription: A closer look at best practices surrounding templates.\nsidebar_position: 3\n---\n\nThis p"
},
{
"path": "docs/chart_best_practices/values.md",
"chars": 4354,
"preview": "---\ntitle: Values\ndescription: Focuses on how you should structure and use your values.\nsidebar_position: 2\n---\n\nThis pa"
},
{
"path": "docs/chart_template_guide/accessing_files.md",
"chars": 6527,
"preview": "---\ntitle: Accessing Files Inside Templates\ndescription: How to access files from within a template.\nsidebar_position: 1"
},
{
"path": "docs/chart_template_guide/builtin_objects.md",
"chars": 4803,
"preview": "---\ntitle: Built-in Objects\ndescription: Built-in objects available to templates.\nsidebar_position: 3\n---\n\nObjects are p"
},
{
"path": "docs/chart_template_guide/control_structures.md",
"chars": 13583,
"preview": "---\ntitle: Flow Control\ndescription: A quick overview on the flow structure within templates.\nsidebar_position: 7\n---\n\nC"
},
{
"path": "docs/chart_template_guide/data_types.md",
"chars": 1147,
"preview": "---\ntitle: \"Appendix: Go Data Types and Templates\"\ndescription: A quick overview on variables in templates.\nsidebar_posi"
},
{
"path": "docs/chart_template_guide/debugging.md",
"chars": 1394,
"preview": "---\ntitle: Debugging Templates\ndescription: Troubleshooting charts that are failing to deploy.\nsidebar_position: 13\n---\n"
},
{
"path": "docs/chart_template_guide/function_list.mdx",
"chars": 56092,
"preview": "---\ntitle: Template Function List\ndescription: A list of template functions available in Helm\nsidebar_position: 6\n---\n\ni"
},
{
"path": "docs/chart_template_guide/functions_and_pipelines.mdx",
"chars": 8594,
"preview": "---\ntitle: Template Functions and Pipelines\ndescription: Using functions in templates.\nsidebar_position: 5\n---\n\nimport H"
},
{
"path": "docs/chart_template_guide/getting_started.md",
"chars": 8503,
"preview": "---\ntitle: Getting Started\ndescription: A quick guide on Chart templates.\nsidebar_position: 2\n---\n\nIn this section of th"
},
{
"path": "docs/chart_template_guide/helm_ignore_file.md",
"chars": 1736,
"preview": "---\ntitle: The .helmignore file\ndescription: The `.helmignore` file is used to specify files you don't want to include i"
},
{
"path": "docs/chart_template_guide/index.mdx",
"chars": 795,
"preview": "---\ntitle: Chart Template Guide\nsidebar_position: 5\n---\n\n# The Chart Template Developer's Guide\n\nThis guide provides an "
},
{
"path": "docs/chart_template_guide/named_templates.md",
"chars": 10982,
"preview": "---\ntitle: Named Templates\ndescription: How to define named templates.\nsidebar_position: 9\n---\n\nIt is time to move beyon"
},
{
"path": "docs/chart_template_guide/notes_files.md",
"chars": 1567,
"preview": "---\ntitle: Creating a NOTES.txt File\ndescription: How to provide instructions to your Chart users.\nsidebar_position: 10\n"
},
{
"path": "docs/chart_template_guide/subcharts_and_globals.md",
"chars": 6972,
"preview": "---\ntitle: Subcharts and Global Values\ndescription: Interacting with a subchart's and global values.\nsidebar_position: 1"
},
{
"path": "docs/chart_template_guide/values_files.mdx",
"chars": 5199,
"preview": "---\ntitle: Values Files\ndescription: Instructions on how to use the --values flag.\nsidebar_position: 4\n---\n\nimport Helm4"
},
{
"path": "docs/chart_template_guide/variables.md",
"chars": 4629,
"preview": "---\ntitle: Variables\ndescription: Using variables in templates.\nsidebar_position: 8\n---\n\nWith functions, pipelines, obje"
},
{
"path": "docs/chart_template_guide/wrapping_up.md",
"chars": 2061,
"preview": "---\ntitle: Next Steps\ndescription: Wrapping up - some useful pointers to other documentation that will help you.\nsidebar"
},
{
"path": "docs/chart_template_guide/yaml_techniques.md",
"chars": 8948,
"preview": "---\ntitle: \"Appendix: YAML Techniques\"\ndescription: A closer look at the YAML specification and how it applies to Helm.\n"
},
{
"path": "docs/glossary/index.mdx",
"chars": 6706,
"preview": "---\ntitle: Glossary\ndescription: Terms used to describe components of Helm's architecture.\nsidebar_position: 10\n---\n\n# G"
},
{
"path": "docs/helm/_category_.json",
"chars": 65,
"preview": "{\n \"link\": {\n \"type\": \"doc\",\n \"id\": \"helm-category\"\n }\n}\n"
},
{
"path": "docs/helm/helm.md",
"chars": 9667,
"preview": "---\ntitle: helm\nslug: helm\n---\n\nThe Helm package manager for Kubernetes.\n\n### Synopsis\n\nThe Kubernetes package manager\n\n"
},
{
"path": "docs/helm/helm_completion.md",
"chars": 2908,
"preview": "---\ntitle: helm completion\n---\n\ngenerate autocompletion scripts for the specified shell\n\n### Synopsis\n\n\nGenerate autocom"
},
{
"path": "docs/helm/helm_completion_bash.md",
"chars": 2913,
"preview": "---\ntitle: helm completion bash\n---\n\ngenerate autocompletion script for bash\n\n### Synopsis\n\n\nGenerate the autocompletion"
},
{
"path": "docs/helm/helm_completion_fish.md",
"chars": 2899,
"preview": "---\ntitle: helm completion fish\n---\n\ngenerate autocompletion script for fish\n\n### Synopsis\n\n\nGenerate the autocompletion"
},
{
"path": "docs/helm/helm_completion_powershell.md",
"chars": 2861,
"preview": "---\ntitle: helm completion powershell\n---\n\ngenerate autocompletion script for powershell\n\n### Synopsis\n\n\nGenerate the au"
},
{
"path": "docs/helm/helm_completion_zsh.md",
"chars": 2809,
"preview": "---\ntitle: helm completion zsh\n---\n\ngenerate autocompletion script for zsh\n\n### Synopsis\n\n\nGenerate the autocompletion s"
},
{
"path": "docs/helm/helm_create.md",
"chars": 3352,
"preview": "---\ntitle: helm create\n---\n\ncreate a new chart with the given name\n\n### Synopsis\n\n\nThis command creates a chart director"
},
{
"path": "docs/helm/helm_dependency.md",
"chars": 4321,
"preview": "---\ntitle: helm dependency\n---\n\nmanage a chart's dependencies\n\n### Synopsis\n\n\nManage the dependencies of a chart.\n\nHelm "
},
{
"path": "docs/helm/helm_dependency_build.md",
"chars": 3732,
"preview": "---\ntitle: helm dependency build\n---\n\nrebuild the charts/ directory based on the Chart.lock file\n\n### Synopsis\n\n\nBuild o"
},
{
"path": "docs/helm/helm_dependency_list.md",
"chars": 2779,
"preview": "---\ntitle: helm dependency list\n---\n\nlist the dependencies for the given chart\n\n### Synopsis\n\n\nList all of the dependenc"
},
{
"path": "docs/helm/helm_dependency_update.md",
"chars": 4011,
"preview": "---\ntitle: helm dependency update\n---\n\nupdate charts/ based on the contents of Chart.yaml\n\n### Synopsis\n\n\nUpdate the on-"
},
{
"path": "docs/helm/helm_env.md",
"chars": 2486,
"preview": "---\ntitle: helm env\n---\n\nhelm client environment information\n\n### Synopsis\n\n\nEnv prints out all the environment informat"
},
{
"path": "docs/helm/helm_get.md",
"chars": 3276,
"preview": "---\ntitle: helm get\n---\n\ndownload extended information of a named release\n\n### Synopsis\n\n\nThis command consists of multi"
},
{
"path": "docs/helm/helm_get_all.md",
"chars": 2783,
"preview": "---\ntitle: helm get all\n---\n\ndownload all information for a named release\n\n### Synopsis\n\n\nThis command prints a human re"
},
{
"path": "docs/helm/helm_get_hooks.md",
"chars": 2660,
"preview": "---\ntitle: helm get hooks\n---\n\ndownload all hooks for a named release\n\n### Synopsis\n\n\nThis command downloads hooks for a"
},
{
"path": "docs/helm/helm_get_manifest.md",
"chars": 2832,
"preview": "---\ntitle: helm get manifest\n---\n\ndownload the manifest for a named release\n\n### Synopsis\n\n\nThis command fetches the gen"
},
{
"path": "docs/helm/helm_get_metadata.md",
"chars": 2647,
"preview": "---\ntitle: helm get metadata\n---\n\nThis command fetches metadata for a given release\n\n```\nhelm get metadata RELEASE_NAME "
},
{
"path": "docs/helm/helm_get_notes.md",
"chars": 2603,
"preview": "---\ntitle: helm get notes\n---\n\ndownload the notes for a named release\n\n### Synopsis\n\n\nThis command shows notes provided "
},
{
"path": "docs/helm/helm_get_values.md",
"chars": 2773,
"preview": "---\ntitle: helm get values\n---\n\ndownload the values file for a named release\n\n### Synopsis\n\n\nThis command downloads a va"
}
]
// ... and 1898 more files (download for full content)
About this extraction
This page contains the full source code of the helm/helm-www GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2098 files (10.3 MB), approximately 2.8M tokens, and a symbol index with 183 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.