Install Helm and Tiller
Start course

If you work with Kubernetes, then GitOps is going to make your world a better place by enabling you to perform automated zero effort deployments into Kubernetes - as many times as you require per day!

This introductory level training course is designed to bring you quickly up to speed with the basic features and processes involved in a GitOps workflow. This course will present to you the key features and GitOps workflow theory. 

GitOps defines a better approach to performing Continuous Delivery in the context of a Kubernetes cluster. It does so by promoting Git as the single source of truth for declarative infrastructure and workloads.

We’d love to get your feedback on this course, so please give it a rating when you’re finished. If you have any queries or suggestions, please contact us at

Learning Objectives

By completing this course, you will:

  • Learn about the principles, practices, and processes that drive a GitOps workflow
  • Learn how to establish GitOps to automate and synchronize cluster state with Git repos
  • Learn how GitOps uses Git as its single source of truth
  • Learn and understand how to configure and enable a GitOps workflow using tools such as Helm, Tiller, and Flux

Intended Audience

This course is intended for:

  • Anyone interested in learning GitOps
  • Software Developers interested in the GitOps workflow
  • DevOps practitioners looking to learn how to setup, manage and maintain applications using a GitOps workflow


To get the most from this course, you should have at least:

  • A basic understanding of containers and containerisation
  • A basic understanding of Kubernetes - and container orchestration and scheduling
  • A basic understanding of software development and the software development life cycle
  • A basic understanding of Git and Git repositories

Source Code

The sample GitOps project code as used within the demonstrations is located here:

If you intend to repeat the same instructions as presented within this course in your own environment, then you must FORK this repository into your own GitHub account. The reason for this, is that you need to be the owner of the repo to be able to upload and configure a new Deploy Key within the Settings area of the repo. The Settings area of a repo is only available when you are the owner of the repo.



- [Jeremy] Okay, welcome back. In this demonstration I'm going to install the Helm command line client. We are going to later use the Helm command line client to install the Flux operator chat into the Kubernetes cluster. For this demonstration I'm going to be working with Helm version two. Using my local browser I'll navigate to This is the main documentation site for Helm Two. From here I'll click on the Helm on Github link like so. Scrolling down to the install section, I'll need to click on the Releases page link. 

From here I'll click on Tags and then click on the last and lightest version two release, which happens to be the 2.16.1 release. From here I'll copy the download like for the MacOS amd64 binary like so. Jumping back into the terminal I'll clear it and then use the kill command to download the Helm install package. Okay, this is now downloading. Now that the download has finished, I'll use the tar command to decompress and extract its contents. 

Using the tree command I'll display the contents of the current directory. From here I'll copy the helm binary into a directory that is configured on my path. Okay, now that this is all in place I should be able to call up and run the Helm command like so. I'll confirm the version of the Helm client by running the command helm version --sort -- client. And indeed we can see that we are running version 2.16.1. 

Okay, I've just completed the Helm client-side setup. Next I need to setup the Helm service side which relies on a component named Tiller being installed into Kubernetes. To start with, I'll create a dedicated service account for Tiller. This needs to be created in the Kube system namespace. Therefore, I'll run the command kubectl, dash n for namespace, kube system, create serviceaccount tiller. Next I need to give this new service account cluster admin privileges to allow Tiller to have the rights to install and setup various resources within the cluster based on the home client commands that will be sent to it. Therefore, I'll need to enter the following command within the terminal: kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system tiller. 

With this now in place the remaining thing required to complete the helm install is to initialize it by running the command helm init --service-account tiller like so. 

Okay, at this stage we're ready to begin installing the flux operator which I'll perform in the next demo.

About the Author
Learning Paths

Jeremy is a Content Lead Architect and DevOps SME here at Cloud Academy where he specializes in developing DevOps technical training documentation.

He has a strong background in software engineering, and has been coding with various languages, frameworks, and systems for the past 25+ years. In recent times, Jeremy has been focused on DevOps, Cloud (AWS, Azure, GCP), Security, Kubernetes, and Machine Learning.

Jeremy holds professional certifications for AWS, Azure, GCP, Terraform, Kubernetes (CKA, CKAD, CKS).