Skip to main content

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 via helm_path)
  • kubectl access to the cluster (kubeconfig on disk or in the default search path)

Setup

Configure Helm like other local integrations: run opensre 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 active helm record to ~/.opensre/integrations.json:
Credential field aliases (store / API compatibility): 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_path at a Helm 3.x binary.
  • Set HELM_KUBECONFIG / kubeconfig and HELM_KUBE_CONTEXT / kube_context when 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, start opensre 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.sh to 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.
This creates a kind cluster named opensre-helm-demo, installs bitnami/nginx as release demo in namespace demo, and prints a Helm/kubectl snapshot.
Verify:
Chat sessions (unlike 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:
Now ask the agent about the deployed release:
Ask: What Helm releases are in the demo namespace, and is the demo release healthy? All 5 registered tools return real data against this cluster — confirmed by direct calls to each: release listing, release status, release history, release values (empty {} 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

A passing check runs 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, or uninstall releases.
  • helm get values output 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 .env or the integration store — not in source control.