Skip to main content
  1. Posts/
  2. Learning ArgoCD/
  3. Getting Started/

Installing ArgoCD on Rancher Desktop (Local)

·654 words·4 mins
Ravi Singh
Author
Ravi Singh
Software engineer with 15+ years building backend systems and cloud platforms across fintech, automotive, and academia. I write about the things I build, debug, and learn — so I don’t forget them.
Learning ArgoCD - This article is part of a series.
Part 1: This Article

Installing ArgoCD on Rancher Desktop (Local)
#

Prerequisites
#

1
2
3
# Confirm you're on the right cluster
kubectl config current-context   # should print: rancher-desktop
kubectl get nodes                # should show lima-rancher-desktop Ready

1. Install ArgoCD
#

1
2
3
4
kubectl create namespace argocd

kubectl apply -n argocd --server-side --force-conflicts \
  -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

--server-side --force-conflicts is required. The ArgoCD install manifest is large enough that a plain kubectl apply (client-side) hits the annotation size limit and silently skips some CRDs - including ApplicationSet. Without it the argocd-applicationset-controller will CrashLoopBackOff immediately after install. --force-conflicts handles any field manager conflicts on re-apply.

Wait for pods to be ready
#

1
kubectl wait --for=condition=Ready pods --all -n argocd --timeout=180s

Verify
#

1
kubectl get pods -n argocd

Expected output - all pods Running:

1
2
3
4
5
6
7
argocd-application-controller-0          1/1     Running
argocd-applicationset-controller-...     1/1     Running
argocd-dex-server-...                    1/1     Running
argocd-notifications-controller-...      1/1     Running
argocd-redis-...                         1/1     Running
argocd-repo-server-...                   1/1     Running
argocd-server-...                        1/1     Running

2. Access the UI
#

Port-forward the ArgoCD server (run in a separate terminal and keep it open):

1
kubectl port-forward svc/argocd-server -n argocd 8080:443

Open: https://localhost:8080 (accept the self-signed cert warning)

Get the initial admin password
#

1
2
kubectl get secret argocd-initial-admin-secret -n argocd \
  -o jsonpath='{.data.password}' | base64 -d && echo

Login with username admin and the password printed above.


3. Install the ArgoCD CLI
#

1
2
brew install argocd
argocd version --client   # verify

Login via CLI
#

1
2
3
4
# With port-forward running on 8080
argocd login localhost:8080 \
  --username admin \
  --insecure

--insecure skips TLS verification for the self-signed cert (fine for local dev).

Verify CLI access
#

1
2
argocd cluster list    # should show the in-cluster entry
argocd app list        # empty for now

4. (Optional) Change the Admin Password
#

1
argocd account update-password

Note for eu-dev-rancher: the admin password is managed declaratively via environments/eu-dev-rancher/argocd/argocd-admin-password.yaml (bcrypt hash committed to git). ArgoCD applies it on wave 3 - argocd account update-password would be overwritten on the next sync. To change it for eu-dev-rancher, regenerate the hash and update the file.


What Was Installed
#

ComponentRole
argocd-serverAPI server + Web UI
argocd-repo-serverClones Git repos, renders manifests (Helm, Kustomize)
argocd-application-controllerReconciles desired state (Git) vs actual state (cluster)
argocd-applicationset-controllerGenerates Applications from templates
argocd-dex-serverOIDC/SSO provider
argocd-redisCache for repo-server and app-controller
argocd-notifications-controllerSends sync/health alerts

Troubleshooting
#

Pod stuck in Pending:

1
2
kubectl describe pod <pod-name> -n argocd
# Look for resource constraints or image pull errors

argocd-applicationset-controller in CrashLoopBackOff:

1
2
kubectl logs -n argocd -l app.kubernetes.io/name=argocd-applicationset-controller --tail=20
# Error: "no matches for kind ApplicationSet in version argoproj.io/v1alpha1"

The ApplicationSet CRD was not installed - this happens when ArgoCD was applied without --server-side, which hits annotation size limits and silently skips CRDs. Fix by re-applying with server-side apply:

1
2
3
4
5
kubectl apply -n argocd --server-side --force-conflicts \
  -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

# Verify the CRD is now present
kubectl get crd applicationsets.argoproj.io

The controller will recover automatically on its next restart.

argocd login times out:

1
2
# Make sure port-forward is still running
kubectl port-forward svc/argocd-server -n argocd 8080:443

k9s can’t find applications.argoproj.io / ArgoCD CRDs not visible: k9s (and kubectl) may show no ArgoCD resources even though ArgoCD is installed. This can happen after a Rancher Desktop restart - the k3s API server comes back up before all CRDs are fully re-registered. Fix: restart Rancher Desktop fully (not just the VM), wait for nodes to be Ready, then re-open k9s.

1
2
kubectl get nodes          # wait until Ready
kubectl get crd | grep argoproj   # confirm CRDs are present

In k9s, navigate with :applications.argoproj.io (the short name :app may be ambiguous).

Forgot admin password:

1
2
3
# Re-read from the secret (valid until you delete it or change the password)
kubectl get secret argocd-initial-admin-secret -n argocd \
  -o jsonpath='{.data.password}' | base64 -d && echo
Learning ArgoCD - This article is part of a series.
Part 1: This Article