How to Install Helm and Tiller on Kubernetes: Step-by-Step Guide
This guide explains what Helm charts and values.yaml are, shows how to install the Helm client and Tiller server on a Kubernetes master node, and provides common Helm commands for managing releases, all with concrete code examples and verification steps.
Overview
Helm is the package manager for Kubernetes, consisting of a client ( helm) and a server component ( tiller) that interacts with the API server to create releases from charts.
Key Concepts
Chart : a collection of Kubernetes manifest files (e.g., Deployment, Service) packaged together.
values.yaml : a file that supplies default configuration values for a chart; users can override these when installing.
Repository, Release, Chart relationship : a repository stores charts; a chart combined with values.yaml produces a release instance in a target cluster.
Installing the Helm client
Download the Helm binary from the official release page, extract, and move it to /usr/local/bin:
tar -xzvf helm-v2.13.1-linux-amd64.tar.gz
cd linux-amd64
cp helm /usr/local/bin
helm versionThe command should display matching client and server versions once Tiller is installed.
Installing the Tiller server
Create an RBAC service account and binding (example rbac.yaml) and apply it:
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system kubectl apply -f rbac.yamlLoad the Tiller Docker image onto each node (download link provided) and create the deployment manifest ( tiller.yaml) then apply it:
docker load -i tiler_2_13_1.tar.gz ---
apiVersion: apps/v1
kind: Deployment
metadata:
name: tiller-deploy
namespace: kube-system
labels:
app: helm
name: tiller
spec:
replicas: 1
selector:
matchLabels:
app: helm
name: tiller
template:
metadata:
labels:
app: helm
name: tiller
spec:
serviceAccount: tiller
containers:
- name: tiller
image: gcr.io/kubernetes-helm/tiller:v2.13.1
ports:
- containerPort: 44134
name: tiller
- containerPort: 44135
name: http
livenessProbe:
httpGet:
path: /liveness
port: 44135
initialDelaySeconds: 1
timeoutSeconds: 1
readinessProbe:
httpGet:
path: /readiness
port: 44135
initialDelaySeconds: 1
timeoutSeconds: 1
---
apiVersion: v1
kind: Service
metadata:
name: tiller-deploy
namespace: kube-system
labels:
app: helm
name: tiller
spec:
type: ClusterIP
ports:
- name: tiller
port: 44134
targetPort: tiller
selector:
app: helm
name: tiller kubectl apply -f tiller.yamlVerify the deployment:
kubectl get pods -n kube-system
# Expected output includes a Running tiller-deploy podCommon Helm commands
helm install [RELEASE] [CHART] [flags]– create a new release. helm upgrade [RELEASE] [CHART] [flags] – upgrade an existing release. helm rollback [RELEASE] [REVISION] [flags] – roll back to a previous revision. helm delete [RELEASE] [flags] – delete a release. helm history [RELEASE] – view revision history. helm inspect [CHART] – show chart details. helm fetch [CHART] – download a chart. helm package [CHART] – package a chart for distribution.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Full-Stack DevOps & Kubernetes
Focused on sharing DevOps, Kubernetes, Linux, Docker, Istio, microservices, Spring Cloud, Python, Go, databases, Nginx, Tomcat, cloud computing, and related technologies.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
