Noksa
helm-resolve-deps
Go

A Helm plugin to properly resolve local chain dependencies in charts

Last updated May 21, 2026
11
Stars
3
Forks
0
Issues
0
Stars/day
Attention Score
24
Language breakdown
Go 91.4%
Shell 4.6%
Makefile 4.0%
โ–ธ Files click to expand
README

๐Ÿ”— helm-resolve-deps

โšก A Helm plugin that properly resolves local chain dependencies in charts

๐Ÿค” Why?

Helm's built-in helm dependency update doesn't handle transitive local dependencies well. If you have charts with file:// dependencies that themselves have dependencies, Helm won't resolve the entire chain correctly.

helm-resolve-deps solves this by recursively resolving all local dependencies in the correct order.

Inspired by helm/helm#2247

๐Ÿ“ Note: I've created an issue and a pull request to fix this in Helm itself. Until it's merged, this plugin provides the solution.

โœจ Key Benefits

| Feature | Description | |--------------------------------|----------------------------------------------------------| | ๐Ÿ”„ Chain Resolution | Recursively resolves local (file://) dependencies | | โšก Parallel Processing | Bounded-concurrency dependency resolution (errgroup) | | ๐Ÿ“ฆ Unpack Mode | Extract .tgz archives for debugging | | ๐Ÿงน Clean Mode | Remove old dependencies before updating | | ๐Ÿ›‘ Cycle Detection | Fast-fails on circular file:// chains with a chain trace | | โœ‹ Cancellable | Ctrl-C propagates to running helm/tar sub-processes |


๐Ÿ“‹ Requirements

  • ๐ŸŽฏ Helm 3 installed on host machine

๐Ÿš€ Installation

(helm plugin uninstall resolve-deps || true) && helm plugin install https://github.com/Noksa/helm-resolve-deps.git
๐Ÿ’ก Helm 4 users: Add --verify=false flag to the install command

๐Ÿ“– Usage

๐Ÿ” Getting Help

helm resolve-deps --help

๐ŸŽฏ Basic Syntax

helm resolve-deps [PATH] [FLAGS]

๐Ÿ”ง Available Flags

| Flag | Short | Description | |-----------------------|-------|----------------------------------------------------------| | --untar | -u | Unpack dependent charts as directories instead of .tgz | | --clean | -c | Remove charts/, tmpcharts/, and Chart.lock | | --skip-refresh | | Skip fetching updates from Helm repositories | | --skip-refresh-in | | Deprecated, no-op. Retained for backwards compatibility | | --threads | | Number of parallel workers (default: CPU count - 1, min 1) | | --help | -h | Show help | | --version | -v | Show version |

Anything passed after -- is forwarded verbatim to every recursive helm dependency update invocation.


โš™๏ธ How It Works

Given this structure:

parent-chart/ โ”œโ”€โ”€ Chart.yaml (depends on child-chart via file://) โ””โ”€โ”€ charts/     โ””โ”€โ”€ child-chart/         โ””โ”€โ”€ Chart.yaml (depends on grandchild-chart via file://)

Running helm resolve-deps parent-chart will:

  • ๐Ÿ” Discover all local dependencies recursively
  • ๐Ÿ“ฆ Resolve grandchild-chart dependencies first
  • ๐Ÿ”— Resolve child-chart dependencies (including grandchild)
  • โœ… Resolve parent-chart dependencies (including entire chain)

๐Ÿ’ก Examples

๐Ÿ” Basic Operations

Resolve dependencies in current directory

helm resolve-deps .

Resolve with repository refresh skipped

helm resolve-deps . --skip-refresh

๐Ÿงน Clean Operations

Clean before resolving

helm resolve-deps . --clean

Clean and unpack dependencies

helm resolve-deps . --clean --untar

โšก Performance Optimization

Use multiple threads

# Use 4 parallel workers helm resolve-deps . --threads 4

Skip refresh for specific charts

# Skip refresh for chart1 and chart2 helm resolve-deps . --skip-refresh-in chart1,chart2

๐Ÿ”ง Advanced Usage

Unpack dependencies for debugging

# Extract all .tgz files to directories helm resolve-deps ~/charts/my-chart --untar

๐Ÿ’ก Tip: Use --untar to inspect and modify dependent charts directly in the charts/ directory

Pass additional flags to helm dependency update

# Everything after -- is forwarded verbatim to "helm dependency update" helm resolve-deps . -- --kubeconfig myconfig helm resolve-deps . -- --debug

Full example with all options

helm resolve-deps ~/charts/my-chart \   --clean \   --untar \   --threads 4 \   -- --debug

๐Ÿ›‘ Cycle Detection

If the chart graph contains a cycle (e.g. A depends on B and B depends on A via file://), the plugin fails immediately with the offending chain:

Error: cyclic chart dependency detected: /path/to/a -> /path/to/b -> /path/to/a

No deadlocks, no infinite recursion.


๐Ÿงช Testing

make test

๐Ÿ” Linting

make lint
๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท Noksa/helm-resolve-deps ยท Updated daily from GitHub