Native Helm Deployments Overview
This topic describes the concept of a Harness Native Helm deployment by describing the high-level steps involved.
For a quick tutorial on using Helm with a Harness Kubernetes deployment, see the Helm Quickstart.
Before You Begin
Before learning about Harness Helm-based Kubernetes deployments, you should have an understanding of Harness Key Concepts.
Native Helm or Kubernetes Deployments?
When you use Helm with a Harness Kubernetes Service deployments, you can take advantage of Harness advanced Kubernetes features.
The main difference is that the Native Helm deployments performed using the Harness Helm Service use Tiller. If you use Harness Kubernetes Service for deployment, you do not need to use Tiller.
For information on add a Helm chart to a Harness Kubernetes Service, see Link Resource Files or Helm Charts in Git Repos.
What Does Harness Need Before You Start?
A Harness Native Helm deployment requires the following:
- Artifact: For example, a Docker image of NGINX from Docker Hub.
- Kubernetes cluster: You will need a target cluster for the Harness Delegate, your application, and your Kubernetes workloads. A Kubernetes Delegate requires at least 8GB RAM, and so your cluster should have enough RAM to host the Delegate and your applications and workloads.
- Helm and Tiller: Helm and Tiller installed and running on one pod in the cluster.
- Helm chart: For example, a Bitnami Helm chart for NGINX from their Github repo.
What Does Harness Deploy?
Harness takes the artifacts and Helm chart and version you provide and deploys the artifact to the target Kubernetes cluster.
What Does a Harness Helm Deployment Involve?
The following list describes the major steps of a Harness Helm deployment:
Description and Links
Install the Harness Kubernetes or Helm Delegate.
Typically, the Kubernetes or Helm Delegate is installed in the target cluster where you will deploy your application(s).
You can also install the Helm Delegate using Rancher.
Add a Harness Artifact Server.
Add a Harness Artifact Server. For example, a Docker Registry Artifact Server that connects to the Docker registry where your Docker images are located, or the public Docker Hub.
Add a Helm Chart or Source Repository.
Add your Helm chart using a Helm Chart or Source Repository.
Add a Cloud Provider.
A Cloud Provider is a connection to your Kubernetes cluster.
You can add a Kubernetes Cluster Cloud Provider (recommended) or a Cloud Provider for the cloud platform where the cluster is hosted, such as a Google Cloud Platform Cloud Provider. A Kubernetes Cluster Cloud Provider will connect to any cluster on any platform.
In you use a Kubernetes Cluster Cloud Provider, you can use the Delegate installed in your cluster for authentication.
Create the Harness Application for your Kubernetes CD Pipeline.
The Harness Application represents a group of microservices/apps, their deployment pipelines, and all the building blocks for those pipelines. Harness represents your release process using a logical group of one or more entities: Services, Environments, Workflows, Pipelines, Triggers, and Infrastructure Provisioners. Applications organize all of the entities and configurations in Harness CD.
Create the Harness Service using the Native Helm Deployment Type.
Add your Helm charts and any config variables and files.
Create the Harness Environment and Infrastructure Definition for your target Kubernetes clusters, and any overrides.
Using the Harness Cloud Provider you set up, you can select the target Kubernetes cluster and namespace for your deployment.
You can also override any Service settings, such as manifest values. This enables you to use a single Service with multiple Harness Environments.
Create the Basic Helm deployment Harness Workflow.
The Workflow deploys the artifact(s) and Kubernetes workloads defined in the Harness Service Helm charts to the cluster and namespace in the Harness Infrastructure Definition.
Deploy the Workflow.
Once you've deployed a Workflow, learn how to improve your Kubernetes CD:
Read the following topics to build on what you've learned: