# Helm — The Package Manager for Kubernetes

> Practical guide to Helm — install charts, manage releases, roll back, maintain repositories and render templates, with examples for every step.

Source: https://www.jpkc.com/db/en/cheatsheets/containers/helm/

<!-- PROSE:intro -->
Helm is the package manager for Kubernetes: instead of hand-maintaining dozens of separate YAML manifests, you bundle an entire application into a chart and install it with a single command. Each installation of a chart creates a release that Helm versions for you – you can upgrade it, roll it back to an earlier revision when something breaks, and tailor it per environment through values. Since Helm 3 everything runs client-side without the old Tiller component in the cluster, which greatly simplifies setup and security. You pull charts from repositories or from Artifact Hub. This guide walks you through the commands you reach for daily, from the first install to your own chart.
<!-- PROSE:intro:end -->

## Install & Upgrade

`helm install <name> <chart>` — Install a chart with a release name.

```bash
helm install my-nginx bitnami/nginx
```

`helm install <name> <chart> -f <values>` — Install with custom values file.

```bash
helm install my-app ./mychart -f values-prod.yaml
```

`helm install <name> <chart> --set <key>=<value>` — Install with inline value overrides.

```bash
helm install my-app bitnami/nginx --set replicaCount=3
```

`helm install <name> <chart> -n <namespace>` — Install into a specific namespace.

```bash
helm install my-app ./mychart -n production
```

`helm install <name> <chart> --dry-run` — Simulate install without actually deploying.

```bash
helm install my-app ./mychart --dry-run
```

`helm upgrade <name> <chart>` — Upgrade a release to a new chart version.

```bash
helm upgrade my-app bitnami/nginx
```

`helm upgrade --install <name> <chart>` — Upgrade or install if not exists (idempotent).

```bash
helm upgrade --install my-app ./mychart -f values.yaml
```

## List & Status

`helm list` — List all releases in the current namespace.

```bash
helm list
```

`helm list -A` — List releases across all namespaces.

```bash
helm list -A
```

`helm status <name>` — Show the status of a release.

```bash
helm status my-app
```

`helm history <name>` — Show the revision history of a release.

```bash
helm history my-app
```

`helm get values <name>` — Show the values used for a release.

```bash
helm get values my-app
```

`helm get manifest <name>` — Show the rendered Kubernetes manifests.

```bash
helm get manifest my-app
```

## Rollback & Uninstall

`helm rollback <name> <revision>` — Roll back a release to a previous revision.

```bash
helm rollback my-app 2
```

`helm uninstall <name>` — Uninstall a release.

```bash
helm uninstall my-app
```

`helm uninstall <name> --keep-history` — Uninstall but keep the release history.

```bash
helm uninstall my-app --keep-history
```

## Repositories

`helm repo add <name> <url>` — Add a chart repository.

```bash
helm repo add bitnami https://charts.bitnami.com/bitnami
```

`helm repo update` — Update local chart repository index.

```bash
helm repo update
```

`helm repo list` — List all configured repositories.

```bash
helm repo list
```

`helm repo remove <name>` — Remove a repository.

```bash
helm repo remove bitnami
```

`helm search repo <keyword>` — Search charts in added repositories.

```bash
helm search repo nginx
```

`helm search hub <keyword>` — Search charts on Artifact Hub.

```bash
helm search hub postgresql
```

## Create & Template

`helm create <name>` — Create a new chart scaffold.

```bash
helm create my-chart
```

`helm template <name> <chart>` — Render chart templates locally without deploying.

```bash
helm template my-app ./mychart -f values.yaml
```

`helm lint <chart>` — Check a chart for issues.

```bash
helm lint ./mychart
```

`helm package <chart>` — Package a chart into a .tgz archive.

```bash
helm package ./mychart
```

`helm show values <chart>` — Show the default values of a chart.

```bash
helm show values bitnami/nginx
```

`helm dependency update <chart>` — Download chart dependencies.

```bash
helm dependency update ./mychart
```

<!-- PROSE:outro -->
## Conclusion

Helm takes the grind out of rolling whole applications into Kubernetes reproducibly: loose manifests become a versioned release you can upgrade or roll back at will. If you maintain your own charts, it pays to invest early in clean `values.yaml` structures and `helm lint` – that keeps your deployments traceable and maintainable across many environments.

## Further Reading

- [Helm – official documentation](https://helm.sh/docs/) – reference, concepts and best practices
- [Artifact Hub](https://artifacthub.io/) – central search for ready-made charts
- [Helm – Wikipedia](https://en.wikipedia.org/wiki/Helm_(software)) – background and history
<!-- PROSE:outro:end -->

## Related Commands

- [ddev](https://www.jpkc.com/db/en/cheatsheets/containers/ddev/) – spin up local container-based development environments
- [docker](https://www.jpkc.com/db/en/cheatsheets/containers/docker/) – build and run container images
- [docker-compose](https://www.jpkc.com/db/en/cheatsheets/containers/docker-compose/) – define multi-container setups declaratively

