Agentic AI with Java: Live Cohort
KubernetesJobs, Helm & Argo CD

Helm: Kubernetes Package Manager

Understand why Helm exists, what charts, repositories and releases are, install Helm on the EKS home server, and learn the core commands to install, upgrade, roll back and uninstall applications.

Up to now, everything in this course came from YAML we wrote ourselves. That is the right way to learn. But suppose you want to run Prometheus, Grafana or Argo CD in your cluster. Each of them needs dozens of objects: Deployments, StatefulSets, Services, ConfigMaps, Secrets, ServiceAccounts, Roles, RoleBindings, CustomResourceDefinitions, PVCs. Writing and maintaining all of that by hand, and upgrading it later, would be a full-time job.

On Linux you never install Git by downloading its files and dependencies yourself. You run apt install git on Ubuntu, or dnf install git on Amazon Linux and Red Hat. The package manager knows what to fetch and how to set it up.

Helm is the package manager for Kubernetes. It installs, upgrades, configures and uninstalls applications in your cluster with a few commands.

Three words to know

TermMeaningLinux comparison
ChartA package: a set of Kubernetes manifest templates plus default configuration values, everything needed to deploy one applicationA .deb or .rpm package
RepositoryA web location where charts are published, for example https://argoproj.github.io/argo-helmAn apt or dnf repository
ReleaseOne installed copy of a chart in your cluster, with a name. You can install the same chart twice under two release namesAn installed package

You find charts on Artifact Hub, the community catalogue. Search for "argo-cd", "prometheus" or "grafana" and you get the repository URL and the install command. Prefer charts from the project's own organisation, marked as official or verified publisher, and sorted by stars.

A chart repository provides the argo/argo-cd chart, made of Chart.yaml, values.yaml and templates; helm install combines templates with your values and creates a release named argocd with Deployments, Services, ConfigMaps, Secrets and RBAC objects; upgrade and rollback create new revisions

Inside a chart

mychart/
├── Chart.yaml          # name, version, appVersion, description
├── values.yaml         # default settings, all of them overridable
├── templates/          # Kubernetes YAML with {{ placeholders }}
│   ├── deployment.yaml
│   ├── service.yaml
│   └── _helpers.tpl
└── charts/             # other charts this one depends on

A template looks like ordinary YAML with placeholders:

templates/deployment.yaml (excerpt)
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"

helm install fills the placeholders from values.yaml and from anything you pass with --set or -f my-values.yaml, then sends the resulting YAML to the cluster. That is why one chart can serve dev, test and production: only the values change.

Install Helm on the EKS home server

Helm is a single binary on the machine where you run kubectl. It talks to the cluster using the same kubeconfig. Nothing is installed inside the cluster for Helm itself.

The lecture uses the official install script:

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
helm version
Downloading https://get.helm.sh/helm-v3.21.3-linux-amd64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /usr/local/bin
helm installed into /usr/local/bin/helm
version.BuildInfo{Version:"v3.21.3", ...}
StepWhy
curl -fsSL -o get_helm.sh <url>Download the script. -f fails on HTTP errors, -s is silent, -S still shows errors, -L follows redirects
chmod 700 get_helm.shMake it executable, for your user only
./get_helm.shDetects your OS and CPU, downloads the right release, checks its checksum, and puts helm in /usr/local/bin
helm versionConfirms the install

Helm 4 is the current major version

The lecture installs Helm 3 with the get-helm-3 script. Helm 4 was released in November 2025 and is now the current version. Helm 3 receives only security fixes, which end in February 2027. For a new setup, use the Helm 4 script:

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-4
chmod 700 get_helm.sh
./get_helm.sh

Every command in this course works the same in Helm 3 and Helm 4. Charts written for Helm 3 (chart apiVersion: v2) install with Helm 4 too.

The commands you will use

CommandWhat it does
helm repo add argo https://argoproj.github.io/argo-helmRegister a repository under a short name
helm repo updateDownload the latest chart lists from all repositories
helm search repo argoSearch charts in the repositories you added
helm show values argo/argo-cdPrint every setting the chart supports, with defaults
helm install <release> <chart> -n <ns> --create-namespaceInstall a chart as a named release
helm list -AList releases in all namespaces
helm status <release> -n <ns>Show a release's state and its notes again
helm upgrade <release> <chart> -n <ns> -f values.yamlApply a new chart version or new values. Creates a new revision
helm history <release> -n <ns>List the revisions
helm rollback <release> <revision> -n <ns>Go back to an earlier revision
helm uninstall <release> -n <ns>Remove everything the release created
helm template <release> <chart>Render the YAML locally without installing, good for reviewing

A quick practice run with your own chart

You do not need a repository to try Helm. helm create generates a working sample chart that deploys nginx:

helm create telusko-chart
ls telusko-chart
helm install telusko-web ./telusko-chart
helm list
kubectl get deploy,svc,pods

Change a value during an upgrade, then look at the history and roll back:

helm upgrade telusko-web ./telusko-chart --set replicaCount=3
kubectl get pods                       # 3 pods now
helm history telusko-web
helm rollback telusko-web 1
kubectl get pods                       # back to 1 pod
helm uninstall telusko-web

helm upgrade --install installs if the release does not exist yet and upgrades if it does. Pipelines use it so the same command works on the first and every later deployment.

Charts can create paid AWS resources

Many charts create Services of type LoadBalancer or PVCs. On EKS those become real AWS load balancers and EBS volumes. Read helm show values before installing, and after helm uninstall check EC2, Load Balancers and EC2, Volumes. PVCs created by a StatefulSet in a chart are often not deleted by helm uninstall.

In the next lesson we use Helm for real: installing Argo CD with two commands instead of hundreds of lines of YAML.

Try It Yourself

  1. Install Helm and run helm version. Which major version did you get?
  2. Add the Argo repository, run helm repo update, and helm search repo argo. How many charts does the project publish?
  3. Run helm show values argo/argo-cd | less and find the setting that controls the type of the argocd-server Service.
  4. Create telusko-chart, change replicaCount to 2 in its values.yaml, and use helm template to see the rendered Deployment before installing it.
  5. Install it, upgrade it twice with different values, and roll back to revision 2. Check with helm history.

Official references


Written By: Shramik Masti

How is this guide?

Last updated on