| name | helm-helper |
| description | Helm chart management for Kubernetes deployments
When user mentions Helm, charts, helm commands, values, releases, or Kubernetes packaging
|
Helm Helper Agent
What's New in Helm 4.x & 2025
- OCI Registry Support: Push/pull charts using
oci:// protocol to container registries
- Server-Side Dry Run: Full API validation with
--dry-run=server
- JSON Schema Validation: Validate values with
values.schema.json
- Enhanced Diff: Preview changes with
helm diff plugin
- Provenance & Signing: Sigstore support for chart verification
- Library Charts: Reusable chart components with
type: library
Overview
Helm is the package manager for Kubernetes. Charts are packages containing Kubernetes resource definitions. Repositories store and share charts. Releases are instances of charts deployed to a cluster.
CLI Commands
Auto-Approved Commands
The following helm commands are auto-approved and safe to use:
helm list - List releases
helm get - Download release information
helm status - Display release status
helm show - Show chart information
helm search - Search for charts
helm version - Show version info
helm env - Display client environment
helm history - Fetch release history
Chart Discovery
helm search hub nginx
helm search repo bitnami/nginx
helm search repo bitnami/nginx --versions
helm search repo bitnami/nginx --version "^10.0.0"
Installation & Upgrades
helm install my-release bitnami/nginx
helm install my-release bitnami/nginx -f values.yaml
helm install my-release bitnami/nginx --set replicaCount=3
helm install my-release bitnami/nginx -n production --create-namespace
helm install my-release bitnami/nginx --dry-run=server
helm install my-release bitnami/nginx --wait --timeout 5m
helm install my-release bitnami/nginx --atomic
helm install my-release oci://registry.example.com/charts/nginx --version 1.0.0
Upgrade patterns:
helm upgrade my-release bitnami/nginx -f values.yaml
helm upgrade --install my-release bitnami/nginx
helm upgrade my-release bitnami/nginx --reuse-values --set image.tag=v2
helm upgrade my-release bitnami/nginx --reset-values
helm upgrade my-release bitnami/nginx --atomic
helm upgrade my-release bitnami/nginx --force
Release Management
helm history my-release
helm rollback my-release
helm rollback my-release 3
helm uninstall my-release
helm uninstall my-release --keep-history
Repository Management
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm repo list
helm repo remove bitnami
helm repo add private https://charts.example.com --username user --password pass
Chart Development
helm create mychart
helm lint mychart
helm template my-release mychart
helm template my-release mychart --show-only templates/deployment.yaml
helm package mychart
helm package mychart --version 1.0.0
helm dependency update mychart
helm dependency list mychart
Information Commands
helm get all my-release
helm get values my-release
helm get manifest my-release
helm get notes my-release
helm get hooks my-release
helm show chart bitnami/nginx
helm show values bitnami/nginx
helm show readme bitnami/nginx
Common Workflows
Install Chart with Custom Values
helm show values bitnami/nginx > default-values.yaml
cat > my-values.yaml <<EOF
replicaCount: 3
service:
type: LoadBalancer
resources:
limits:
cpu: 500m
memory: 256Mi
EOF
helm install my-nginx bitnami/nginx -f my-values.yaml --dry-run=server
helm install my-nginx bitnami/nginx -f my-values.yaml --atomic --wait
Upgrade with Rollback Strategy
helm status my-release
helm diff upgrade my-release bitnami/nginx -f new-values.yaml
helm upgrade my-release bitnami/nginx -f new-values.yaml --atomic --timeout 10m
helm rollback my-release 0
Working with OCI Registries
helm registry login registry.example.com
helm push mychart-1.0.0.tgz oci://registry.example.com/charts
helm pull oci://registry.example.com/charts/mychart --version 1.0.0
helm install my-release oci://registry.example.com/charts/mychart --version 1.0.0
helm registry logout registry.example.com
Chart Development
Template Syntax
{{ .Values.replicaCount }}
{{ .Release.Name }}
{{ .Release.Namespace }}
{{ .Release.IsUpgrade }}
{{ .Chart.Name }}
{{ .Chart.Version }}
{{ .Values.name | quote }}
{{ .Values.name | upper }}
{{ default "nginx" .Values.image.name }}
{{ required "image.tag is required" .Values.image.tag }}
{{- if .Values.ingress.enabled }}
{{- end }}
{{- range .Values.hosts }}
- {{ . | quote }}
{{- end }}
Chart.yaml Structure
apiVersion: v2
name: mychart
version: 1.0.0
appVersion: "1.16.0"
description: My Helm chart
type: application
keywords:
- nginx
- web
dependencies:
- name: postgresql
version: "12.x.x"
repository: https://charts.bitnami.com/bitnami
condition: postgresql.enabled
Values Schema Validation
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": ["replicaCount"],
"properties": {
"replicaCount": {
"type": "integer",
"minimum": 1
},
"image": {
"type": "object",
"properties": {
"repository": { "type": "string" },
"tag": { "type": "string" }
}
}
}
}
Hooks
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Release.Name }}-db-migrate
annotations:
"helm.sh/hook": pre-upgrade,pre-install
"helm.sh/hook-weight": "-5"
"helm.sh/hook-delete-policy": hook-succeeded
spec:
template:
spec:
containers:
- name: migrate
image: migrate:latest
command: ["./migrate.sh"]
restartPolicy: Never
Hook types: pre-install, post-install, pre-delete, post-delete, pre-upgrade, post-upgrade, pre-rollback, post-rollback, test
Best Practices
-
Always use --atomic for production - Automatic rollback on failure
helm upgrade --install my-release chart --atomic
-
Pin chart versions - Never use floating versions
helm install my-release bitnami/nginx --version 15.0.0
-
Use helm diff before upgrades
helm plugin install https://github.com/databus23/helm-diff
helm diff upgrade my-release chart -f values.yaml
-
Structure values files by environment
values.yaml # defaults
values-dev.yaml # development overrides
values-staging.yaml # staging overrides
values-prod.yaml # production overrides
-
Use library charts for shared components
dependencies:
- name: common
version: 1.x.x
repository: https://charts.bitnami.com/bitnami
-
Template naming conventions
- Use
.yaml extension for YAML output
- Use
.tpl for helper templates
- Name files after the resource type:
deployment.yaml, service.yaml
Troubleshooting
Failed Installation
helm status my-release
helm get all my-release
kubectl get events --sort-by='.lastTimestamp'
helm get manifest my-release
Pending Upgrades
helm list --all
helm list --pending
helm rollback my-release 0 --force
Hook Failures
helm get hooks my-release
kubectl get jobs -l app.kubernetes.io/managed-by=Helm
kubectl logs job/my-release-pre-upgrade
Template Rendering Issues
helm template my-release mychart --debug
helm lint mychart --strict
helm template my-release mychart -f values.yaml --validate
Examples
Example 1: Complete Deployment Workflow
#!/bin/bash
set -e
RELEASE="my-app"
CHART="./charts/my-app"
NAMESPACE="production"
VALUES="values-prod.yaml"
helm lint "$CHART" -f "$VALUES" --strict
helm upgrade --install "$RELEASE" "$CHART" \
-n "$NAMESPACE" \
-f "$VALUES" \
--dry-run=server
helm upgrade --install "$RELEASE" "$CHART" \
-n "$NAMESPACE" \
-f "$VALUES" \
--atomic \
--timeout 10m \
--wait
helm status "$RELEASE" -n "$NAMESPACE"
kubectl get pods -n "$NAMESPACE" -l app.kubernetes.io/instance="$RELEASE"
Example 2: Multi-Environment Values
replicaCount: 1
image:
repository: nginx
tag: "1.25"
replicaCount: 3
resources:
limits:
cpu: 1
memory: 512Mi
helm upgrade --install my-app ./chart \
-f values.yaml \
-f values-prod.yaml \
-n production
Example 3: Umbrella Chart Pattern
apiVersion: v2
name: my-platform
version: 1.0.0
dependencies:
- name: frontend
version: "1.x.x"
repository: "file://../frontend"
- name: backend
version: "1.x.x"
repository: "file://../backend"
- name: postgresql
version: "12.x.x"
repository: https://charts.bitnami.com/bitnami
cd umbrella
helm dependency update
helm install my-platform . -f values.yaml
When to Ask for Help
Ask the user for clarification when:
- The target namespace or cluster context is ambiguous
- Values file paths or chart locations are unclear
- Destructive operations (uninstall, rollback) need confirmation
- Version constraints conflict with requirements
- OCI registry credentials are needed
- Multiple releases match the criteria