# Helm
> The package manager for Kubernetes

## Summary
Kubernetes package manager that uses charts to define, install, and manage complex application deployments with templating, versioning, and rollback support.

## Capabilities
- Install, upgrade, and rollback Kubernetes applications via charts
- Template Kubernetes manifests with dynamic values
- Manage chart repositories and dependencies
- Package and share reusable application definitions
- Track release history with rollback support

## When to Use
- Deploying complex Kubernetes applications with many resources
- Need templated Kubernetes manifests with environment-specific values
- Managing application versions and rollbacks on Kubernetes
- Sharing reusable Kubernetes application packages across teams

## When NOT to Use
- Deploying simple single-manifest Kubernetes resources (use kubectl apply)
- Not using Kubernetes at all
- Prefer Kustomize for overlay-based manifest management

## Key Flags
- `install`: Install a Helm chart into the cluster
- `upgrade`: Upgrade a release to a new chart version or values
- `rollback`: Roll back a release to a previous revision
- `repo add`: Add a chart repository
- `template`: Render chart templates locally without installing
- `list`: List all deployed releases

## Usage Patterns
### Add a chart repository and install a chart
```
helm repo add bitnami https://charts.bitnami.com/bitnami && helm install my-release bitnami/nginx
```
Adds the Bitnami repo and installs nginx from it

### Upgrade a release with custom values
```
helm upgrade my-release bitnami/nginx -f values.yaml
```
Upgrades the release using values from a custom file

### Render templates locally for inspection
```
helm template my-release ./my-chart -f values.yaml
```
Outputs rendered Kubernetes manifests without deploying

### Roll back to a previous release
```
helm rollback my-release 2
```
Reverts the release to revision 2

## Input / Output
- **stdin**: Can accept values via stdin with -f -
- **stdout**: Release status, rendered templates, and chart information
- **stderr**: Error messages and deployment warnings

## Installation
- **homebrew**: `brew install helm`
- **snap**: `sudo snap install helm --classic`

## Related Tools
- [kubectl](/tools/kubectl) (complementary): kubectl manages individual resources, Helm manages packaged applications
- [k9s](/tools/k9s) (complementary): K9s provides a TUI for monitoring resources deployed by Helm
- [pulumi](/tools/pulumi) (alternative): Pulumi can deploy Helm charts programmatically using real code

---
Source: https://littlescripts.sh/tools/helm
