> ## Documentation Index
> Fetch the complete documentation index at: https://notes.kodekloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Deploy apps using Helm Chart

> Guide on deploying Helm charts with Argo CD from Git or remote Helm repositories, demonstrating value overrides, CLI and UI workflows, sync, and verifying deployed Kubernetes resources.

This guide demonstrates how to deploy [Helm](https://learn.kodekloud.com/user/courses/helm-for-beginners) charts with [Argo CD](https://learn.kodekloud.com/user/courses/gitops-with-argocd). You will learn two common workflows:

* Deploy a Helm chart stored in a Git repository.
* Deploy a Helm chart from a remote Helm repository (Bitnami).

We’ll show how chart defaults in `values.yaml` are used and how to override those values when creating an [Argo CD](https://learn.kodekloud.com/user/courses/gitops-with-argocd) Application (via the CLI and the UI).

## 1) Deploy a Helm chart from a Git repository

In the demo repo, the Helm chart is located at `helm-chart/` and contains three templates—ConfigMap, Deployment, and Service. The chart uses `values.yaml` to supply defaults such as shape colors and the Service type.

Example chart layout:

```bash theme={null}
> Git Repository
└── helm-chart
    ├── Chart.yaml
    ├── templates
    │   ├── NOTES.txt
    │   ├── _helpers.tpl
    │   ├── configmap.yaml
    │   ├── deployment.yaml
    │   └── service.yaml
    └── values.yaml
```

Important: `values.yaml` provides default values (for example, default shape color `black` and Service type `ClusterIP`). You can override these when creating the Argo CD Application using `--helm-set` flags (CLI) or via the Argo CD UI.

Create the Argo CD application from the Git repo while overriding some chart values:

```bash theme={null}
argocd app create random-shapes \
  --repo https://github.com/sidd-harth/test-cd.git \
  --path helm-chart \
  --helm-set replicaCount=2 \
  --helm-set color.circle=pink \
  --helm-set color.square=green \
  --helm-set service.type=NodePort \
  --dest-namespace default \
  --dest-server https://kubernetes.default.svc
```

Expected response:

```bash theme={null}
application 'random-shapes' created
```

Quick reference: flags used when creating the application

| Flag | Purpose | Example |
| - | - | - |
| `--repo` | Git repository URL that contains the chart | `https://github.com/sidd-harth/test-cd.git` |
| `--path` | Path inside the repo to the chart | `helm-chart` |
| `--helm-set` | Override values from `values.yaml` | `--helm-set color.circle=pink` |
| `--dest-namespace` | Target Kubernetes namespace | `default` |
| `--dest-server` | Target Kubernetes API server | `https://kubernetes.default.svc` |

After creating the Application, it will initially appear as OutOfSync in the Argo CD UI. Synchronize it from the UI or run:

```bash theme={null}
argocd app sync random-shapes
```

Argo CD renders the Helm templates and applies the resulting Kubernetes manifests (ConfigMap, Deployment, Service) into the target namespace. You can inspect the rendered manifests in the UI under App Details → Manifests.

Retrieve application metadata, sync status, and health with:

```bash theme={null}
argocd app get random-shapes
```

Sample excerpted output:

```bash theme={null}
Name:            random-shapes
Project:         default
Server:          https://kubernetes.default.svc
Namespace:       default
Repo:            https://github.com/sidd-harth/test-cd.git
Path:            helm-chart
Sync Status:     Synced
Health Status:   Healthy

GROUP    KIND        NAMESPACE   NAME             STATUS   HEALTH   MESSAGE
core     ConfigMap   default     random-shapes    Synced   Healthy  configmap/... created
apps     Deployment  default     random-shapes    Synced   Healthy  deployment.apps/... created
core     Service     default     random-shapes    Synced   Healthy  service/... created
```

When you access the Service (we used `NodePort` in the example), the chart-rendered page should reflect overridden values—e.g., the circle in pink and the square in green while other shapes use the default `black`.

<Callout icon="lightbulb" color="#1CB2FE">
  [Argo CD](https://learn.kodekloud.com/user/courses/gitops-with-argocd) renders Helm chart templates into plain Kubernetes manifests and applies them directly. Argo CD does not install Helm release metadata into the cluster; therefore `helm ls` will not display releases for Argo CD–managed applications.
</Callout>

## 2) Deploy a Helm chart from a Helm repository (Bitnami)

Argo CD can also use remote Helm repositories (for example, the Bitnami charts index at `https://charts.bitnami.com/bitnami`) as a source for Applications.

Add a Helm repo in the Argo CD UI with these example values:

* Type: `Helm`
* Name: `Bitnami Helm Charts`
* URL: `https://charts.bitnami.com/bitnami`
* (Optional) credentials/TLS if the repo is private

After adding the repo, create a new Application in the Argo CD UI and select the Helm repository. The UI will display available charts and versions from that repository. For this demo, select the `nginx` chart and choose a version such as `12.0.3`. In the chart’s Helm options you can override values (for example, change the Service type to `NodePort` to expose the app on a node port).

CLI example creating an Application that points directly to the Bitnami Helm repo:

```bash theme={null}
argocd app create nginx \
  --repo https://charts.bitnami.com/bitnami \
  --helm-chart nginx \
  --revision 12.0.3 \
  --dest-namespace bitnami \
  --dest-server https://kubernetes.default.svc
```

Expected response:

```bash theme={null}
application 'nginx' created
```

Sync the Application to apply the rendered manifests:

```bash theme={null}
argocd app sync nginx
```

After sync, Argo CD will have applied the chart-rendered manifests (commonly a Deployment and a Service for the nginx chart). To find the assigned NodePort:

```bash theme={null}
kubectl -n bitnami get svc
# Look for PORT(S) such as 80:31640/TCP -> NodePort 31640
```

Then visit the node IP and the NodePort to verify the "Welcome to nginx" page.

Inspect application metadata:

```bash theme={null}
argocd app get nginx
```

Sample excerpt (showing Helm source and applied version):

```bash theme={null}
Name: nginx
Project: default
Server: https://kubernetes.default.svc
Namespace: bitnami
Repo: https://charts.bitnami.com/bitnami
Target: 12.0.3
Sync Status: Synced to 12.0.3
Health Status: Healthy

GROUP   KIND        NAMESPACE   NAME    STATUS  HEALTH  MESSAGE
core    Service     bitnami     nginx   Synced  Healthy service/nginx created
apps    Deployment  bitnami     nginx   Synced  Healthy deployment.apps/nginx created
```

## Quick comparison: Git-hosted chart vs. remote Helm repo

| Source Type | How Argo CD Reads It | Overrides | When to Use |
| - | - | - | - |
| Git repo (chart in repo) | Argo CD uses `--path` to find the chart and renders templates from repository files. | `--helm-set` (CLI) or UI overrides | When you want chart versioning together with application code or custom charts maintained in Git |
| Remote Helm repo (e.g., Bitnami) | Argo CD reads the chart and versions listed by the Helm index at the repo URL. | `--helm-set` (CLI) or UI overrides | When using community charts or centralized chart repositories |

## Recap

* Argo CD can deploy Helm charts located in a Git repository or in remote Helm repositories.
* Use `--helm-set` flags (CLI) or the Argo CD UI to override values from `values.yaml` at Application creation.
* Argo CD renders Helm templates and manages the resulting Kubernetes manifests; the Helm client will not show Argo CD–managed Applications via `helm ls`.
* Use `argocd app get <app-name>` to inspect application metadata, applied resources, sync status, and health.

## Links and References

* [Argo CD — GitOps with Argo CD](https://learn.kodekloud.com/user/courses/gitops-with-argocd)
* [Helm — Helm for Beginners](https://learn.kodekloud.com/user/courses/helm-for-beginners)
* [Bitnami Charts](https://charts.bitnami.com/bitnami)
* [Kubernetes Documentation](https://kubernetes.io/docs/)

That's all for now.

<CardGroup>
  <Card title="Watch Video" icon="video" cta="Learn more" href="https://learn.kodekloud.com/user/courses/gitops-with-argocd/module/7d158b65-58ef-432d-9d26-61e245751bfe/lesson/bf58dc64-f7d3-4cbd-a00b-00d78a27ecf6" />
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.