Overview
OpenSRE runs the Helm 3 command-line client on the machine where the agent executes. It uses read-only subcommands (helm list, helm status, helm history, helm get values, helm get manifest) with explicit --kube-context and --kubeconfig flags so investigations target the same cluster your engineers use.
Helm 2 is not supported. Verification checks
helm version and requires a Helm 3.x client.Prerequisites
- Helm 3 installed and on
PATH(or configured viahelm_path) kubectlaccess to the cluster (kubeconfig on disk or in the default search path)- Optional: alert annotations or Kubernetes labels that identify a Helm release and namespace (see Usage in investigations)
Setup
Configure Helm like other local integrations: runopensre integrations setup helm, use environment variables, and/or ~/.opensre/integrations.json.
Option 1: Interactive CLI
Option 2: Environment variables
Enable the integration and point it at your cluster:
To raise the maximum size of stored manifest text (see Advanced):
Option 3: Persistent store
Add an activehelm record to ~/.opensre/integrations.json:
context for kube_context, kubeconfig_path or kube_config for kubeconfig, and namespace for default_namespace.
The setup/store path does not require OSRE_HELM_INTEGRATION; that env gate applies only when discovering Helm from environment variables alone.
Credentials
Helm uses your local Helm binary plus kubeconfig access to the cluster. There is no separate Helm API token.- Point
HELM_PATH/helm_pathat a Helm 3.x binary. - Set
HELM_KUBECONFIG/kubeconfigandHELM_KUBE_CONTEXT/kube_contextwhen you need a specific cluster identity. - Prefer a dedicated kubeconfig or context with least privilege if your policy requires it.
Investigation tools
Evidence keys
Post-processing writes distinct evidence keys so parallel tools do not overwrite each other:Usage in investigations
When Helm is configured, OpenSRE adds ahelm entry to detect_sources only if the alert shows Helm-specific context — avoiding generic “deployment” noise.
Annotations (including top-level enriched fields merged into annotations):
Labels (from Prometheus/Alertmanager-style
labels / commonLabels on the alert payload):
Alert text: Strong phrases such as
helm upgrade, helm install, helm rollback, helm chart, or helm release in summary / description / message (or top-level alert_name / error_message) can also enable the Helm source when other hints are absent.
Top-level payload fields (dict alerts only): helm_release, helm_release_name, helm_namespace, etc., are consulted as fallbacks.
Example minimal alert:
Advanced
- Manifest size: Very large charts can produce multi-megabyte manifests. The client truncates manifest text by default; override with
HELM_MANIFEST_MAX_CHARS(see Option 2). - Local kind demo: From a repo checkout with Docker, kind, kubectl, and Helm installed, run
./tests/e2e/kubernetes/helm/scripts/demo-helm-kind.shto create a sample cluster and release (see script comments for teardown).
Local verification recipe
Verified live: the demo script above produces a real cluster and release, then all 5 registered tools were confirmed against it.kind cluster named opensre-helm-demo, installs bitnami/nginx as
release demo in namespace demo, and prints a Helm/kubectl snapshot.
opensre investigate (unlike opensre integrations verify) only falls through to env
vars when the store has no records at all — any existing record, for any service, blocks
env-var resolution entirely. Point OPENSRE_INTEGRATIONS_STORE_PATH at a path inside a
fresh empty directory instead, so your real config is never read or written and the
HELM_* vars above are the only source of connection info:
{} here since the demo installs with default values only — Helm’s get values
returns only user-supplied overrides, not the chart’s own defaults), and the rendered
manifest.
Teardown:
Verify
helm version (must report Helm 3) and a minimal helm list -A --max 1 -o json against your cluster to validate JSON output and reachability.
Troubleshooting
Security
- The integration is read-only: it does not
install,upgrade, oruninstallreleases. helm get valuesoutput can include secrets; treat evidence like any other sensitive kubectl/Helm output.- Prefer a dedicated kubeconfig or context with least privilege if your policy requires it.
- Store paths and context names in
.envor the integration store — not in source control.