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 tool calls 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)
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.
Tools
Evidence keys
Post-processing writes distinct evidence keys so parallel tools do not overwrite each other:Usage in chat
Once Helm is configured, startopensre and name the release and namespace in your question, e.g. “What changed in the my-api release in prod? Show its history and values.” When your question omits a namespace, default_namespace from the config is used as the fallback.
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 integrations verify) only fall 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.