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 KUBECONFIG environment variable set or ~/.kube/config present
  • Root or sudo access on the RHEL 7 node where Helm will be installed
  • curl and tar available: 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.