What Is Argo CD and How Is It Used to Deploy Helm Charts?

Kubernetes Helm is a package manager for Kubernetes. A Helm Chart is a YAML configuration, which defines a package of pre-configured resources that can be deployed in a Kubernetes cluster. Helm Charts let you define applications in a declarative manner, which is a primary principle of GitOps.

Argo CD is a GitOps platform that reads environment configurations and deploys them automatically to a Kubernetes cluster. Argo CD provides native support for Helm Charts—you can define your applications using a Helm Chart, provide the Helm Charts to Argo CD, and software agents ensure your applications are automatically synchronized and deployed to your CD pipeline.

We’ll explain how to apply GitOps to your Helm application and demonstrate how to deploy it to your Kubernetes cluster using Argo CD.

Using Helm Charts with GitOps

GitOps is a set of best practices for declaratively observing and describing a system’s operating infrastructure. You can apply the GitOps methodology throughout the application development workflow, using Git as a single source of truth to actively reconcile and declaratively configure an application. The GitOps paradigm offers transparency between the configurations residing in Git and deployed in clusters. 

Argo CD is a GitOps tool that uses this Git-based workflow approach to achieve continuous delivery for Kubernetes. It works as a two-way synchronizing GitOps controller, continuously monitoring running applications, comparing their live state to a desired GitOps configuration, and applying required changes to a cluster. Argo CD also looks for new images in the container registry and updates workload definitions according to your deployment policies.

Before you apply a new or updated Helm chart to a cluster, you must commit it into the repository. Make sure to commit all your YAML workload definitions, Helm charts, and additional resources defining the desired state of a Kubernetes cluster. You can thus ensure a full audit trail of all changes to the cluster and easy rollbacks to any production state in case of issues in your environment.

Argo CD lets you connect your Git repository via HTTPS or SSH, define applications based on Helm charts in your repo, and then automatically synchronize your cluster with the desired state in Git. If your application is OutOfSync, you can resolve this by rolling back or viewing its release history. A successfully synchronized application status will be considered Healthy.

A Healthy application should look like this in the Argo CD user interface:

Argo CD UI Healthy Application

If the application is OutOfSync with your Helm chart, the Helm chart has changed, or its parameters are updated, a new version of the application can be deployed automatically, depending on your deployment strategy. 

In case of any issues, you can instantly roll back the deployment using the following command:

argocd app rollback <argocd_app_name> <history_id>

These controls enable complete end-to-end tracking from your Git repository to your Kubernetes cluster and back.

Quick Tutorial: Deploying an Application via Helm Charts in Argo CD UI

This tutorial will show you how to use the Argo CD UI to set up a Helm repository, create an application based on a Helm chart, and deploy it to a Kubernetes cluster. You can perform the same operations via the CLI.

1. Set Up Helm Repositories in Argo CD

Let’s set up a Helm repository in Argo CD so we can access Helm charts. 

To set up your Helm repository:

  1. Start the Argo CD UI.
  2. Select Settings > Repositories > Connect Repo using… (select the option relevant for your repo—SSH, HTTPS, or GitHub App).
  3. Set Type to Helm and specify a unique Name and Repository URL for your repository. If it is a private repository, add access credentials.

2. Create an Application in Argo CD Defined By a Helm Chart

Now, we’ll create an application entity within Argo CD, and define application structure and configuration by providing a Helm chart. 

To set up an application via Helm chart:

  1. In the Argo CD UI, select Applications and click New App
  2. Fill in a unique Application Name, a Project used to group applications together, and a Sync Policy—for simplicity, leave this as Manual.
  3. Under Repository URL, select the repo you defined earlier.
  4. The Chart field now populates with Helm charts available in your repository. Select a Helm chart.
  5. The Revision field populates with revisions of the Helm chart you selected—choose the revision you want to deploy.
  6. Fill in the details of the destination Kubernetes cluster in which you want to deploy your application—Cluster URL and Namespace (the namespace must already exist in the cluster, or you can auto-create a new namespace).
  7. Click Create—Argo CD confirms the parameters and shows the application, initially with status OutOfSync, because it is not yet deployed to the cluster.

3. Deploy the Application

To deploy the application via the Helm chart you selected:

  1. Select the application tile in the dashboard. 
  2. Select synchronization options—for now, leave them as default, which will synchronize all manifests. To understand advanced options like Pruning and Dry Run, see the documentation.
  3. Click the Synchronize button. Argo CD deploys the application to the Kubernetes cluster.
  4. The dashboard now shows the application, as defined in the Helm chart, running on pods in your Kubernetes cluster. You can also run kubectl get all to see the pods created from the Helm chart.

Important note: When you deploy Helm charts with Argo CD they are no longer recognized as Helm deployments by Kubernetes. Regular Helm commands may not work, because the application is considered by Kubernetes as an Argo CD application, not a Helm deployment.

That’s it! You just set up a new application in Argo CD using a Helm chart and deployed it to a Kubernetes cluster.

Learn More About GitOps and Helm Chart Deployment

Helm can be very helpful as a familiar component that can help teams transition from traditional workflows to GitOps. Here are additional articles that can help you use Helm charts with GitOps:

Codefresh, the Software Delivery Platform powered by Argo

The Codefresh Software Delivery Platform powered by Argo

Realize your true DevOps potential with the premier enterprise Argo software delivery solution.

Check It Out