> For the complete documentation index, see [llms.txt](https://amartyushov.gitbook.io/tech/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://amartyushov.gitbook.io/tech/tools/argo-cd.md).

# Argo CD

![](/files/n0FxAgCCzT9lo4J1WEUL)

![](/files/tzjo8vxS68z65ZzLpf30)

## Install

```
// check preconditions. There should be argocd namespace
kubectl get namespaces

// if absent, create it
kubectl create namespace argocd

// install ArgoCD to the cluster
k apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

// check argocd was installed
kubectl get pods -n argocd

// clean up setup
kubectl delete -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
```

```
// install argoCD CLI
brew install argocd
```

:thumbsup:[Useful article about installation](https://faun.pub/setup-argocd-bootstrap-resources-in-kubernetes-9ef40e16ca6a). :thumbsup:[Official docs](https://argo-cd.readthedocs.io/en/stable/getting_started/#4-login-using-the-cli)

```
// expose ArgoCD UI for local experiments
kubectl port-forward svc/argocd-server -n argocd 8080:443 &

// The user is admin
// get initial password to login to ArgoCD UI
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

// more fresh way to retrieve a password
argocd admin initial-password -n argocd

// how to changet the password
argocd account update-password
```

### GitOps (+Helm)

How does Argo CD know our application is a Helm chart? It looks for a `Chart.yaml` file under `path` in the Git repository

{% hint style="info" %}
Argo CD will not use `helm install` to install charts. It will render the chart with `helm template` and then apply the output with `kubectl`. This means we can’t run `helm list` on a local machine to get all installed releases
{% endhint %}
