How to Install and Use Helm on RHEL 7
Helm is the package manager for Kubernetes — often described as the “apt” or “yum” of the Kubernetes ecosystem. It allows you to define, install, and upgrade even the most complex Kubernetes applications using reusable templates called charts. A single Helm chart can encapsulate dozens of Kubernetes manifests, making it far easier to deploy third-party software like databases, message queues, and monitoring stacks than maintaining raw YAML files by hand. This tutorial covers downloading and installing the Helm binary on RHEL 7, adding chart repositories, searching for charts, installing and managing releases, customizing deployments with values files, and performing upgrades and rollbacks.
Prerequisites
- A running Kubernetes cluster (kubeadm or k3s) accessible via
kubectl - The
KUBECONFIGenvironment variable set or~/.kube/configpresent - Root or sudo access on the RHEL 7 node where Helm will be installed
curlandtaravailable:yum install -y curl tar- Outbound HTTPS access to GitHub and chart repositories
Step 1: Download the Helm Binary from GitHub
Helm is distributed as a pre-compiled binary for Linux. Download the latest stable release from the official GitHub releases page. Adjust the version number as needed.
# Set the desired Helm version
HELM_VERSION="v3.13.3"
# Download the Linux amd64 tarball
curl -LO "https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz"
# Verify the checksum (download the checksum file first)
curl -LO "https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz.sha256sum"
sha256sum -c helm-${HELM_VERSION}-linux-amd64.tar.gz.sha256sum
# Extract the archive
tar -zxvf helm-${HELM_VERSION}-linux-amd64.tar.gz
Step 2: Move the Binary to /usr/local/bin
Move the extracted helm binary to a directory on the system PATH so it is accessible to all users.
# Move the helm binary
mv linux-amd64/helm /usr/local/bin/helm
# Set correct permissions
chmod 755 /usr/local/bin/helm
# Clean up downloaded files
rm -rf linux-amd64 helm-${HELM_VERSION}-linux-amd64.tar.gz*
# Confirm the installation
helm version
Expected output:
version.BuildInfo{Version:"v3.13.3", GitCommit:"...", GitTreeState:"clean", GoVersion:"go1.21.4"}
Step 3: Add Helm Repositories
Helm repositories are HTTP servers hosting packaged charts. Add the most commonly used repositories to get access to a wide library of ready-made applications.
# Add the Bitnami repository (comprehensive app catalog)
helm repo add bitnami https://charts.bitnami.com/bitnami
# Add the Helm stable repository (classic charts)
helm repo add stable https://charts.helm.sh/stable
# Add other popular repositories
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo add jetstack https://charts.jetstack.io
# Update the local cache of all repositories
helm repo update
# List configured repositories
helm repo list
Expected output from helm repo list:
NAME URL
bitnami https://charts.bitnami.com/bitnami
stable https://charts.helm.sh/stable
ingress-nginx https://kubernetes.github.io/ingress-nginx
jetstack https://charts.jetstack.io
Step 4: Search for Charts
Use helm search repo to find available charts in your configured repositories, or helm search hub to search the public Artifact Hub.
# Search for nginx charts in all configured repos
helm search repo nginx
# Search specifically in bitnami
helm search repo bitnami/nginx
# Search for a specific keyword
helm search repo wordpress
# Search Artifact Hub (requires internet)
helm search hub redis
# Show all available chart versions
helm search repo bitnami/mysql --versions
Step 5: Inspect a Chart Before Installing
Before deploying, inspect the chart to understand what it will create and what configuration options are available.
# Show chart information
helm show chart bitnami/nginx
# Show default values (configurable parameters)
helm show values bitnami/nginx
# Save the default values to a file for editing
helm show values bitnami/nginx > nginx-values.yaml
Step 6: Install a Chart with helm install
Install a chart to create a release — a named instance of a chart deployed into your cluster. Each release is independently managed.
# Install nginx from bitnami into the default namespace
helm install my-nginx bitnami/nginx
# Install into a specific namespace (create if needed)
helm install my-nginx bitnami/nginx
--namespace webapps
--create-namespace
# Install with inline value overrides
helm install my-mysql bitnami/mysql
--set auth.rootPassword=SuperSecret
--set primary.persistence.size=10Gi
# Perform a dry run (no changes applied)
helm install my-nginx bitnami/nginx --dry-run
# Wait for all resources to become ready
helm install my-nginx bitnami/nginx --wait --timeout=5m
Step 7: List Installed Releases
# List releases in the default namespace
helm list
# List releases across all namespaces
helm list --all-namespaces
# List only failed releases
helm list --failed
# Show release history
helm history my-nginx
Example output from helm list:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
my-nginx default 1 2024-01-15 10:22:34 deployed nginx-15.4.2 1.25.3
Step 8: Upgrade a Release
Use helm upgrade to apply new chart versions or changed configuration values to an existing release. Helm records each upgrade as a new revision.
# Upgrade to the latest chart version with no config changes
helm upgrade my-nginx bitnami/nginx
# Upgrade with a new value
helm upgrade my-nginx bitnami/nginx
--set replicaCount=3
# Upgrade using a values file
helm upgrade my-nginx bitnami/nginx
-f nginx-values.yaml
# Upgrade and install if the release does not yet exist (upsert)
helm upgrade --install my-nginx bitnami/nginx
Step 9: Roll Back a Release
If an upgrade causes problems, roll back to a previous revision instantly.
# View release history to find the target revision
helm history my-nginx
# Roll back to the previous revision
helm rollback my-nginx
# Roll back to a specific revision number
helm rollback my-nginx 1
# Verify after rollback
helm list
kubectl get pods
Step 10: Customize Deployments with a Values File
For repeatable, version-controlled deployments, always use a values.yaml file rather than --set flags on the command line.
# Create a custom values file
cat > my-nginx-values.yaml <<EOF
replicaCount: 3
service:
type: NodePort
nodePorts:
http: "30080"
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 70
EOF
# Apply the values file
helm install my-nginx bitnami/nginx -f my-nginx-values.yaml
# Multiple values files are merged left-to-right
helm install my-nginx bitnami/nginx
-f defaults.yaml
-f production-overrides.yaml
Step 11: Uninstall a Release
# Remove a release and all its Kubernetes resources
helm uninstall my-nginx
# Keep the release history after deletion
helm uninstall my-nginx --keep-history
# If history was kept, verify the status
helm list --uninstalled
Helm dramatically simplifies the process of deploying and managing applications on Kubernetes. You have installed the Helm binary from GitHub on RHEL 7, added the Bitnami and Helm stable repositories, searched for available charts, and worked through the full release lifecycle: install, list, upgrade, rollback, and uninstall. Using values files for all configuration ensures your deployments are reproducible and auditable. As a next step, explore creating your own Helm chart with helm create <chart-name> to package your own applications for consistent deployment across environments.