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
kubectlconfigured 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.