| name | helm-deploy |
| description | Deploy and manage Kubernetes applications with Helm: install, upgrade, rollback, chart management, values.yaml, secrets. Trigger: when deploying with Helm, helm install, helm upgrade, helm rollback, Helm charts, Kubernetes package management, helm values, chart templates |
| version | 1 |
| argument-hint | [install|upgrade|rollback|list|uninstall|template <release> <chart>] |
| allowed-tools | ["bash","read","write","grep","glob"] |
Helm — Kubernetes Package Management
You are now operating in Helm deployment management mode.
Installation
brew install helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
helm version
Repository Management
helm repo add stable https://charts.helm.sh/stable
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm repo list
helm repo remove stable
helm search repo nginx
helm search repo bitnami/postgresql --versions
helm search hub wordpress
Installing Charts
helm install my-release bitnami/postgresql
helm install my-release bitnami/postgresql -f values.yaml
helm install my-release bitnami/postgresql \
--set auth.postgresPassword=secret \
--set primary.persistence.size=10Gi
helm install my-release bitnami/postgresql \
--namespace production \
--create-namespace
helm install my-release bitnami/postgresql --version 12.1.3
helm install my-release ./my-chart/
helm install my-release ./my-chart-1.0.0.tgz
helm install my-release bitnami/postgresql --dry-run --debug
Upgrading Releases
helm upgrade my-release bitnami/postgresql -f values.yaml
helm upgrade --install my-release bitnami/postgresql -f values.yaml
helm upgrade --install my-release bitnami/postgresql \
-f values.yaml \
--wait \
--timeout 5m
helm upgrade my-release bitnami/postgresql \
-f values.yaml \
--cleanup-on-fail
helm upgrade --atomic my-release bitnami/postgresql -f values.yaml
helm upgrade my-release bitnami/postgresql \
--reuse-values \
--set image.tag=15.3.0
Rollback
helm history my-release
helm rollback my-release
helm rollback my-release 2
helm rollback my-release 2 --wait --timeout 3m
helm rollback my-release 1 --namespace production
Release Management
helm list
helm list --all-namespaces
helm list --namespace production
helm list --failed
helm status my-release
helm get values my-release
helm get values my-release --all
helm get manifest my-release
helm get notes my-release
helm uninstall my-release
helm uninstall my-release --keep-history
helm uninstall my-release --namespace production
Chart Development
helm create my-chart
helm lint my-chart/
helm lint my-chart/ -f custom-values.yaml
helm template my-release my-chart/ -f values.yaml
helm template my-release my-chart/ | kubectl apply -f -
helm package my-chart/
helm package my-chart/ --version 1.2.3 --app-version 2.0.0
values.yaml Patterns
replicaCount: 2
image:
repository: myapp
tag: "1.0.0"
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
ingress:
enabled: false
className: nginx
hosts:
- host: myapp.example.com
paths:
- path: /
pathType: Prefix
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 128Mi
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 80
env:
- name: APP_ENV
value: production
Environment-Specific Values
helm upgrade --install my-release ./my-chart \
-f values.yaml \
-f values-production.yaml \
--set image.tag=git-$(git rev-parse --short HEAD)
Secrets Management
helm upgrade --install my-release ./my-chart \
--set db.password="${DB_PASSWORD}"
helm plugin install https://github.com/jkroepke/helm-secrets
helm secrets upgrade --install my-release ./my-chart \
-f secrets.yaml.enc
Troubleshooting
helm install my-release ./my-chart --debug --dry-run 2>&1
kubectl get events --sort-by='.lastTimestamp' -n production | tail -20
kubectl describe pod <pod-name> -n production
kubectl logs <pod-name> -n production --previous
helm get values my-release --all | grep <key>
helm plugin install https://github.com/databus23/helm-diff
helm diff upgrade my-release ./my-chart -f values.yaml
Best Practices
- Always use
helm upgrade --install for idempotent deployments.
- Use
--atomic in CI to auto-rollback on deployment failure.
- Never commit plaintext secrets in
values.yaml; use --set or Helm Secrets plugin.
- Pin chart versions in production:
helm upgrade my-release bitnami/postgresql --version 12.1.3.
- Use
helm lint and helm template in CI to catch errors before deploying.
- Keep a
values-<env>.yaml per environment; never modify base values.yaml for env-specific config.
- Run
helm list --all-namespaces regularly to audit what is deployed.
- Use
helm diff upgrade (with helm-diff plugin) to review changes before applying.