Helm Quickstart
- Objectives
- Kubernetes or Helm?
- Before You Begin
- Visual Summary
- Step 1: Install and Launch the Kubernetes Delegate
- Step 2: Add a Kubernetes Cluster Cloud Provider
- Step 3: Add a Docker Registry Artifact Server
- Step 4: Add a Helm Repo Artifact Server
- Step 5: Add Your Artifact and Helm Chart
- Step 6: Define Your Target Kubernetes Cluster
- Step 7: Build a Canary Deployment
- Step 8: Deploy and Review
- Next Steps
This quickstart shows you how to deploy a publicly available Docker image to your Kubernetes cluster using Helm charts and a Canary Deployment strategy in Harness.
Objectives
You'll learn how to:
- Install and launch a Harness Kubernetes Delegate in your target cluster.
- Connect Harness to your Kubernetes cluster, and Docker and Help Repository Artifact Server.
- Add your remote Helm chart to Harness.
- Create an Infrastructure Definition that targets your cluster and namespace.
- Create a Kubernetes Canary Workflow, using a Canary and Primary (rollout) phase.
- Deploy your Kubernetes Canary Workflow to your target cluster.
Once you have the prerequisites set up, the tutorial should only take about 10 minutes.
Kubernetes or Helm?
Harness includes both Kubernetes with Helm and standalone Helm deployments, and you can use Helm charts in both. Here's the difference:
- Kubernetes with Helm: Harness Kubernetes Deployments allow you to use your own Kubernetes manifests or a Helm chart (remote or local), and Harness executes the Kubernetes kubectl calls to build everything without Helm and Tiller needing to be installed in the target cluster.
- Native Helm: For Harness native Helm Deployments, you must always have Helm and Tiller running on one pod in your target cluster Tiller makes the API calls to Kubernetes in these cases.
In this tutorial, we will perform a Kubernetes with Helm deployment using Helm charts and not the a native Helm deployment requiring Tiller. Harness recommends you use this method.
Native Helm 3 Blog
While this tutorial covers the preferred method of using Harness Kubernetes with Helm charts, the following blog post walks you through creating a native Helm 3 deployment from scratch using Harness, including a video walkthrough:
Welcome to the Harness Family, Helm
Before You Begin
Review Harness Key Concepts to establish a general understanding of Harness.
Set up Your Kubernetes Cluster
Ensure you have a Kubernetes cluster you can use for this tutorial. Your Kubernetes cluster will host the Harness Kubernetes Delegate in one pod and a simple Todolist Docker container in the other pods.
This tutorial is vendor-agnostic. You can use any Kubernetes vendor, such as Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS), or Azure Kubernetes Service (AKS).
If you have a cluster that meets the following requirements, then you can jump to Step 1: Install and Launch the Kubernetes Delegate:
- Number of nodes: 3.
- Machine type: 4vCPU
- Memory: 12GB RAM and 6GB Disk Space. 8GB RAM is for the Delegate. The remaining memory is for Kubernetes and the Docker container.
- Networking: Outbound HTTPS for the Harness connection, and to connect to Docker Hub. Allow TCP port 22 for SSH.
Need a cluster? Follow steps from these vendors and ensure your cluster meets the requirements above:
- Quickstart: Deploy an Azure Kubernetes Service cluster using the Azure CLI (node VM size minimum: Standard_DS3_v2)
- Creating a cluster from Google Kubernetes Engine (GKE) (machine type minimum: n1-standard-4)
- Creating an Amazon EKS Cluster (node type minimum: m5.xlarge)
Visual Summary
Once you've completed this tutorial, you'll deploy a Docker image to your Kubernetes cluster using a Harness Canary Workflow. Here's what your deployment will look like:

Interested? You're only a few minutes away from doing it yourself. Let's get started.
Step 1: Install and Launch the Kubernetes Delegate
In this section, we'll download a new Harness Kubernetes Delegate and install and launch it in your target cluster. Running the Delegate as a pod in the same cluster used to deploy the your application is the recommended practice.
For this tutorial, we are using a Kubernetes Delegate, but Harness also includes a Helm Delegate that can be installed in your cluster using Helm or Rancher. See Using the Helm Delegate.
- Download the Delegate:
- Log into Harness.
- In the Harness Manager, click Setup. Setup is where you configure your microservices, their deployment pipelines, and all the building blocks and resources for those pipelines.
- Click Harness Delegates.
- Click Download Delegate and then click Kubernetes YAML. The Delegate Setup settings appear.
- In Name, enter the name k8s-delegate exactly.
- In Profile, select the Primary Profile.
- Click Download. The YAML file for the Kubernetes Delegate, and its README, will download to your computer as an archive.
- Open a terminal and navigate to where the Delegate file is located.
- Extract the YAML file's folder from the download and then navigate to the Harness Delegate folder that you extracted:
tar -zxvf harness-delegate-kubernetes.tar.gz
cd harness-delegate-kubernetes
You will connect to your cluster using the terminal so you can simply copy the YAML file over.
- Install and Launch the Delegate.
- Log into your Kubernetes cluster. For example, if your Kubernetes cluster is in Google Cloud Platform, select the cluster, click Connect, and from the resulting Connect to the cluster setting, copy the Command-line access command.
- In the terminal you used to navigate to the harness-delegate folder, paste the command and press Enter.
You are now connected to the Kubernetes cluster. If the connection is unsuccessful, ensure that the GCE firewall is not blocking port 22 to your VMs. For more information, see SSH troubleshooting from Kubernetes. - Let's quickly confirm that the cluster you created can connect to the Harness platform. Enter the following command:
wget -p https://app.harness.io/ -O /dev/null
A successful connection will display the following:HTTP request sent, awaiting response... 200 OK
- Next, install the Harness Delegate using the harness-delegate.yaml file you just downloaded. In the terminal connected to your cluster, run this command:
kubectl apply -f harness-delegate.yaml
If you are not using your terminal to connect to your cluster, just copy the harness-delegate.yaml file to the cluster and run the command. - Run this command to verify that the Delegate pod was created:
kubectl get pods -n harness-delegate
It will take a moment for the Delegate to appear in Harness' Installations page.
Now you're ready to connect Harness to your artifact server and cluster. After those quick steps, you'll begin creating your deployment.
Step 2: Add a Kubernetes Cluster Cloud Provider
A Harness Cloud Provider represents your infrastructure, such as a Kubernetes cluster, AWS account, Google service account, Azure subscription, data center, etc.
The Kubernetes Cluster Cloud Provider you will add now will connect Harness with your Kubernetes cluster using the Delegate you installed.
- In Harness Manager, click Setup.
- Click Cloud Providers. On the Cloud Providers page, click Add Cloud Provider. The Cloud Provider appears.
- Enter the following settings:
![]() |
|
- Click Test. Verify that the
The test was successful message
appears, and then click Submit.
Your Kubernetes Cloud Provider is set up. Now let's add an Artifact Server for pulling the Docker image.
Step 3: Add a Docker Registry Artifact Server
Harness integrates with many different types of repositories and providers. For this tutorial, you will connect to Docker Hub anonymously.
- In Setup, click Connectors.
- Click Artifact Servers, and then click Add Artifact Server. The Artifact Server settings appear.
- Enter the following settings:
![]() |
|
- Click Test, and then click the SUBMIT button.
Step 4: Add a Helm Repo Artifact Server
You can add a Helm chart repository as a Harness Artifact Server and then use it in Harness Kubernetes and Helm Services.
A Helm chart repository is an HTTP server that houses an index.yaml file and, if needed, packaged charts. For details, see The Chart Repository Guide from Helm.
For this tutorial, we will use a public Helm Repo from Bitnami.
- In Setup, click Connectors.
- Click Artifact Servers, and then click Add Artifact Server. The Artifact Server settings appear.
- Enter the following settings:
![]() |
|
- Click Test, and then click the SUBMIT button.
Now Harness is connected to the Helm repo. We don't need any other connectors for this tutorial. Next, we'll add the Docker Image artifact and Helm chart.
Step 5: Add Your Artifact and Helm Chart
Now that all your connections are set up, you can start adding the manifests for your Kubernetes workloads.
First, we'll create a Harness Application and Service, and look at manifests.
- In Setup, click Add Application. The Application settings appear.
- Enter the name Helm Tutorial and click Submit.

The Application is created.

We won't cover all of the Application entities in this tutorial. We assume you've read Harness Key Concepts.
To add your Docker image and Helm chart, you create a Harness Service. Services represent your microservices/apps. You define the sources of app artifacts for those microservices, and you add your Helm charts.
- Click Services.
- In Services, click Add Service. The Add Service settings appear.
- Enter the following settings:
![]() |
|
Click Submit. The new Service page appears.

First, we'll add a Docker image using the Artifact Server you created and then look at manifests.
- Click Add Artifact Source and then click Docker Registry. The Artifact Source - Docker Registry settings appear.
- Enter the following settings:
![]() |
|
- Click Submit. The artifact source is added.
Now that the artifact source is added, you can add your Helm chart.
When you create a Service for your Harness application, you can link to your manifests in a source repo or a Helm chart in a source or Helm repo.
![]() |
|
Our artifact is added and the Helm chart is ready. Next, we can define our target cluster and namespace for deployment.
Step 6: Define Your Target Kubernetes Cluster
Harness uses Environments to represent one or more of your deployment infrastructures, such as Dev, QA, Stage, Production, etc.
In each Environment, you define Infrastructure Definitions to describe your deployment infrastructures. A single Infrastructure Definition can be used by multiple Services, pulling unique Kubernetes namespace values from each Service during deployment.
- Use the breadcrumb navigation to jump to Environments.
- In Environments, click Add Environment. The Environment settings appear.
- Enter the following settings:
![]() |
|
- Click Submit. The Environment is created. Next we will add an Infrastructure Definition to identify the cluster and namespace for our deployment.
- Click Add Infrastructure Definition. The Infrastructure Definition settings appear.
- Enter the following settings:
![]() |
|
- Click Submit. Your target infrastructure is defined. You can now use it and the Harness Service you set up to build your Canary Workflow.
Step 7: Build a Canary Deployment
Now that you have a Docker image, Helm chart, and target cluster and namespace, you can create a Harness Workflow to deploy the image to the cluster.
In this tutorial, we will use the popular Canary Deployment strategy. In Canary, all pods in a single cluster are updated incrementally in small phases, with each phase verified as successful before proceeding to the next phase.
- Use the breadcrumb navigation to jump to Workflows, and then click Add Workflow. The Workflow settings appears.
- Enter the following settings:
![]() |
|
- Click Submit. The Workflow is created.

Next, well add the first phase of our Canary Workflow.
- In Deployment Phases, click Add Phase. The Add Phase settings appear.
- Enter the following settings:
![]() |
|
- Click Submit. The Phase is added to the Workflow.

Harness adds the necessary steps automatically, but you can edit or add more as needed.
Let's take a look at the Canary Deployment step. The Canary Deployment step defines how many pods are deployed for a Canary test of the configuration files in your Harness Service manifests.
- Click the Canary Deployment step.
- Review the following settings:
![]() |
|
For this tutorial, we'll use the default settings.
- Close Canary Deployment.
The Canary Delete step in the Wrap Up section deletes the workloads deployed successfully in this phase. Once the Canary Deployment step is successful, you don't need those workloads. You can move onto to deploying the workloads in a second phase, confident that they will deploy.
Next, we'll add the Primary phase using a Kubernetes rolling update.
- In the breadcrumb navigation, click the name of the Workflow, MyApp Helm Canary. This takes you back to the main Workflow page.
- In Deployment Phases, click Add Phase.
- Enter the following settings:
![]() |
|
- Click Submit. The new phase is added.

Let's take a look at the Rollout Deployment step.
This step performs a standard Kubernetes rolling update, incrementally updating pod instances with new ones. The new pods are scheduled on nodes with available resources. The rolling update Deployment uses the number of pods you specified in the Harness Service Manifests (number of replicas).
- Click Rollout Deployment. The Rollout Deployment settings appear.

There's nothing to configure in this step. Click Submit to exit.
That's it. The Canary Workflow is complete. Next, we'll deploy the Workflow to your cluster.
- In the breadcrumb navigation, click the name of the Workflow, MyApp Helm Canary. This takes you back to the main Workflow page where both phases are visible.

Step 8: Deploy and Review
Now that your Kubernetes Canary Workflow is complete you can deploy it to your cluster.
- If you're not already on the main Workflow page, use the breadcrumb navigation to navigate to MyApp Helm Canary.
- Click the Deploy button. The Deploy settings appear.
- Enter the following settings:
![]() |
|
- Click Submit. The deployment executes.
Here's a example of what the deployment looks like typically, including the link Harness generates to the host running nginx:

Next Steps
In this tutorial, you learned how to:
- Install and launch a Harness Kubernetes Delegate in your target cluster.
- Connect Harness to your Kubernetes cluster, and Docker and Help Repository Artifact Server.
- Add your remote Helm chart to Harness.
- Create an Infrastructure Definition that targets your cluster and namespace.
- Create a Kubernetes Canary Workflow, using a Canary and Primary (rollout) phase.
- Deploy your Kubernetes Canary Workflow to your target cluster.
Read the following related How-tos:
- Kubernetes Deployments Overview will show you how to do more advanced deployments using traffic management and advanced Kubernetes Workflow steps.
- Triggers show you how to automate deployments in response to different events.
- Infrastructure Provisioners Overview will show you how to add provisioning as part of your Workflow.