Helm is the package manager for Kubernetes — it allows defining, installing, and upgrading complex Kubernetes applications using charts, which are pre-configured packages of Kubernetes resource manifests. Instead of manually writing and applying dozens of YAML files for a complex application (deployments, services, config maps, secrets, ingress rules, RBAC), a single helm install command deploys the entire application from a tested, version-controlled chart. The Helm ecosystem includes a repository of over 10,000 pre-built charts for popular software (databases, monitoring stacks, CI/CD tools, web servers), making it straightforward to deploy production-grade software to Kubernetes. This guide covers installing Helm on RHEL 9, adding chart repositories, deploying and managing applications with Helm, and creating a basic custom chart.

Prerequisites

  • Kubernetes cluster (kubeadm or k3s) running on RHEL 9
  • kubectl configured and able to reach the cluster

Step 1 — Install Helm

# Download and run the Helm installation script
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

# Or install via package manager
dnf install -y helm

helm version

Step 2 — Add Chart Repositories

# Add the official stable chart repository
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

# Update all repository indexes
helm repo update

# Search for available charts
helm search repo nginx
helm search repo postgres

Step 3 — Install and Manage Applications

# Install Nginx Ingress Controller
helm install nginx-ingress ingress-nginx/ingress-nginx 
    --namespace ingress-nginx 
    --create-namespace

# Install PostgreSQL with custom values
helm install mydb bitnami/postgresql 
    --namespace database 
    --create-namespace 
    --set auth.postgresPassword=SecurePass123! 
    --set primary.persistence.size=10Gi

# List all installed Helm releases
helm list --all-namespaces

# Check release status
helm status mydb -n database

Step 4 — Upgrade and Rollback

# Upgrade a release with new values
helm upgrade mydb bitnami/postgresql 
    -n database 
    --set auth.postgresPassword=NewPass456! 
    --set primary.persistence.size=20Gi

# View upgrade history
helm history mydb -n database

# Roll back to the previous version
helm rollback mydb 1 -n database

# Uninstall a release
helm uninstall mydb -n database

Step 5 — Create a Custom Helm Chart

# Scaffold a new chart
helm create myapp

# Chart structure:
# myapp/
#   Chart.yaml        — chart metadata (name, version, description)
#   values.yaml       — default configuration values
#   templates/        — Kubernetes manifest templates (Go templates)
#     deployment.yaml
#     service.yaml
#     ingress.yaml

# Install your custom chart
helm install myapp ./myapp --namespace production --create-namespace

# Package the chart for distribution
helm package myapp/
# Creates: myapp-0.1.0.tgz

Conclusion

Helm 3 on RHEL 9 eliminates the complexity of manually managing Kubernetes YAML files for complex applications. The three most frequently used Helm workflows are: helm install (deploy a new application), helm upgrade (update configuration or chart version), and helm rollback (revert to a previous deployment state). The --set flag is convenient for one-off overrides, but for production deployments, use a values.yaml file and commit it to version control so the exact deployed configuration is reproducible.

Next steps: How to Install Kubernetes on RHEL 9, How to Deploy Applications to Kubernetes on RHEL 9, and How to Set Up Kubernetes Ingress on RHEL 9.