Helm Collector
Parse Helm charts to extract chart metadata, lint validation results, values schema presence, and dependency version constraints. Runs helm lint on discovered charts and normalizes results for policy evaluation.
helm to your lunar-config.yml:uses: github://earthly/lunar-lib/collectors/helm@v1.0.5
What This Integration Collects
This integration includes 2 collectors that gather metadata from your systems.
charts
Finds all Helm charts in the repository (directories containing Chart.yaml) and collects:
- Chart metadata (name, version, appVersion)
- Helm lint validation results and errors
- Values schema presence (values.schema.json)
- Chart dependencies with version constraints
cicd
Tracks helm commands executed in CI pipelines (install, upgrade, template, package, etc.). Records every invocation for audit trails and captures the helm version used.
How Collectors Fit into Lunar
Lunar watches your code and CI/CD systems to collect SDLC data from config files, test results, IaC, deployment configurations, security scans, and more.
Collectors are the automatic data-gathering layer. They extract structured metadata from your repositories and pipelines, feeding it into Lunar's centralized database where guardrails evaluate it to enforce your engineering standards.
Learn How Lunar Works →Example Collected Data
This collector writes structured metadata to the Component JSON. Here's an example of the data it produces:
{
"k8s": {
"helm": {
"source": {
"tool": "helm",
"version": "3.14.0"
},
"charts": [
{
"path": "charts/api",
"name": "api",
"version": "1.2.3",
"app_version": "2.0.0",
"version_is_semver": true,
"lint_passed": true,
"lint_errors": [],
"has_values_schema": true,
"schema_path": "charts/api/values.schema.json",
"dependencies": [
{
"name": "postgresql",
"version": "~11.9.0",
"repository": "https://charts.bitnami.com/bitnami",
"is_pinned": true
},
{
"name": "redis",
"version": "*",
"repository": "https://charts.bitnami.com/bitnami",
"is_pinned": false
}
]
}
],
"cicd": {
"cmds": [
{"cmd": "helm upgrade --install api ./charts/api -f values-prod.yaml", "version": "3.14.0"},
{"cmd": "helm template api ./charts/api", "version": "3.14.0"}
],
"source": {"tool": "helm", "integration": "ci"}
}
}
}
}
Configuration
Configure this collector in your lunar-config.yml.
Inputs
| Input | Required | Default | Description |
|---|---|---|---|
find_command
|
Optional |
find . -type f \( -name 'Chart.yaml' -o -name 'Chart.yml' \)
|
Command to find Chart.yaml files (must output one file path per line) |
lint_strict
|
Optional |
false
|
Enable strict mode for helm lint (true/false) |
Documentation
View on GitHubHelm Collector
Parse Helm charts and collect chart metadata, lint results, and dependency information.
Overview
This collector finds all Helm charts in a repository (directories containing Chart.yaml) and extracts structured metadata. It runs helm lint on each chart, parses version information, checks for a values.schema.json file, and enumerates chart dependencies with their version constraints. The collector outputs normalized data under .k8s.helm for policy evaluation.
Collected Data
This collector writes to the following Component JSON paths:
| Path | Type | Description |
|---|---|---|
.k8s.helm.source |
object | Tool metadata (tool name and version) |
.k8s.helm.charts[] |
array | Discovered Helm charts with metadata |
.k8s.helm.charts[].path |
string | Chart directory path |
.k8s.helm.charts[].name |
string | Chart name from Chart.yaml |
.k8s.helm.charts[].version |
string | Chart version |
.k8s.helm.charts[].version_is_semver |
boolean | Whether version follows semver |
.k8s.helm.charts[].lint_passed |
boolean | Whether helm lint passed |
.k8s.helm.charts[].lint_errors |
array | Lint error messages (empty if passed) |
.k8s.helm.charts[].app_version |
string | App version from Chart.yaml (appVersion field) |
.k8s.helm.charts[].has_values_schema |
boolean | Whether values.schema.json exists |
.k8s.helm.charts[].schema_path |
string | Path to values schema file |
.k8s.helm.charts[].dependencies[] |
array | Chart dependencies from Chart.yaml |
.k8s.helm.charts[].dependencies[].name |
string | Dependency name |
.k8s.helm.charts[].dependencies[].version |
string | Version constraint |
.k8s.helm.charts[].dependencies[].repository |
string | Repository URL for the dependency |
.k8s.helm.charts[].dependencies[].is_pinned |
boolean | Whether version is constrained (not * or empty) |
.k8s.helm.cicd.cmds[] |
array | Helm commands executed in CI |
.k8s.helm.cicd.source |
object | CI integration metadata |
Collectors
This integration provides the following collectors (use include to select a subset):
| Collector | Description |
|---|---|
charts |
Collects Helm chart metadata, lint results, schema presence, and dependencies |
cicd |
Tracks helm commands executed in CI (install, upgrade, template, package) |
Installation
Add to your lunar-config.yml:
collectors:
- uses: github://earthly/lunar-lib/collectors/helm@v1.0.0
on: ["domain:your-domain"] # Or use tags like [kubernetes, helm]
# with:
# find_command: "find ./charts -name 'Chart.yaml'" # Custom find command
# lint_strict: "true" # Enable strict lint mode
Open Source
This collector is open source and available on GitHub. Contribute improvements, report issues, or fork it for your own use.
Common Use Cases
Explore guardrails that use data from Helm Collector.
Ready to Automate Your Standards?
See how Lunar can turn your AGENTS.md, engineering wiki, compliance docs, or postmortem action items into automated guardrails with our 100+ built-in guardrails.