DEV Community

James Lee
James Lee

Posted on

Argo CD Installation & Configuration: From Zero to Running in 10 Minutes

In the previous article, we covered Argo CD's core concepts and three-component architecture. Now let's get it running. This article walks through a complete Argo CD installation — from namespace creation to CLI login to Web UI access.


1. Install Argo CD

Step 1: Create a dedicated namespace

Argo CD runs in its own namespace. Create it first:

kubectl create namespace argocd
Enter fullscreen mode Exit fullscreen mode
namespace/argocd created
Enter fullscreen mode Exit fullscreen mode

Step 2: Deploy Argo CD

Apply the official stable manifest directly from the Argo CD GitHub repository:

kubectl apply -n argocd -f \
  https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Enter fullscreen mode Exit fullscreen mode

This creates all required resources in one shot — CRDs, ServiceAccounts, RBAC roles, ConfigMaps, Secrets, Services, and Deployments:

customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io created
serviceaccount/argocd-application-controller created
serviceaccount/argocd-dex-server created
serviceaccount/argocd-server created
...
deployment.apps/argocd-application-controller created
deployment.apps/argocd-dex-server created
deployment.apps/argocd-redis created
deployment.apps/argocd-repo-server created
deployment.apps/argocd-server created
Enter fullscreen mode Exit fullscreen mode

Step 3: Verify all Deployments are running

kubectl -n argocd get deployment
Enter fullscreen mode Exit fullscreen mode
NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
argocd-application-controller   1/1     1            1           2m41s
argocd-dex-server               1/1     1            1           2m41s
argocd-redis                    1/1     1            1           2m41s
argocd-repo-server              1/1     1            1           2m41s
argocd-server                   1/1     1            1           2m41s
Enter fullscreen mode Exit fullscreen mode

All 5 Deployments should show 1/1 READY. Here's what each one does:

Deployment Role
argocd-application-controller Application Controller — the GitOps reconciliation engine
argocd-dex-server Dex SSO service — delegates authentication to external identity providers (OIDC, GitHub, LDAP, etc.)
argocd-redis Redis cache — used for temporary state caching. Loss of cache does not affect Argo CD's core functionality
argocd-repo-server Repository Server — fetches and renders manifests from Git
argocd-server API Server — serves the Web UI, CLI, and external API consumers

2. Access Argo CD via CLI

Install the argocd CLI

Linux:

VERSION=$(curl --silent "https://api.github.com/repos/argoproj/argocd/releases/latest" \
  | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/')

curl -sSL -o /usr/local/bin/argocd \
  https://github.com/argoproj/argocd/releases/download/$VERSION/argocd-linux-amd64

chmod +x /usr/local/bin/argocd
Enter fullscreen mode Exit fullscreen mode

macOS:

VERSION=$(curl --silent "https://api.github.com/repos/argoproj/argocd/releases/latest" \
  | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/')

curl -sSL -o /usr/local/bin/argocd \
  https://github.com/argoproj/argocd/releases/download/$VERSION/argocd-darwin-amd64

chmod +x /usr/local/bin/argocd
Enter fullscreen mode Exit fullscreen mode

macOS (Homebrew alternative): brew install argocd

Verify the installation:

argocd version
Enter fullscreen mode Exit fullscreen mode
argocd: v1.7.4+f8cbd6b
  BuildDate: 2020-09-05T02:44:27Z
  ...
FATA[0000] Argo CD server address unspecified
Enter fullscreen mode Exit fullscreen mode

The FATA message is expected at this point — the CLI isn't connected to a server yet.


Get the Initial Admin Password

Argo CD's default admin username is admin. The initial password is the name of the argocd-server Pod:

kubectl get pods -n argocd \
  -l app.kubernetes.io/name=argocd-server \
  -o name | cut -d'/' -f 2
Enter fullscreen mode Exit fullscreen mode
argocd-server-cf8dbb7bd-n5zrv
Enter fullscreen mode Exit fullscreen mode

⚠️ Note: In Argo CD v2.x+, the initial admin password is stored in a Secret instead. Retrieve it with:

kubectl get secret argocd-initial-admin-secret \
  -n argocd -o jsonpath="{.data.password}" | base64 -d

Get the API Server Endpoint

kubectl get svc -n argocd -l app.kubernetes.io/name=argocd-server
Enter fullscreen mode Exit fullscreen mode
NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
argocd-server   ClusterIP   172.27.8.59    <none>        80/TCP,443/TCP   26m
Enter fullscreen mode Exit fullscreen mode

Log In via CLI

argocd login 172.27.8.59
Enter fullscreen mode Exit fullscreen mode
WARNING: server certificate had error: x509: cannot validate certificate for
172.27.8.59 because it doesn't contain any IP SANs. Proceed insecurely (y/n)? y
Username: admin
Password:
'admin' logged in successfully
Context '172.27.8.59' updated
Enter fullscreen mode Exit fullscreen mode

The TLS warning is expected for a fresh install with a self-signed certificate. For production, configure a proper TLS certificate or use --insecure flag.

Verify the connection by running argocd version again — this time you should see both client and server versions:

argocd version
Enter fullscreen mode Exit fullscreen mode
argocd: v1.7.4+f8cbd6b
  ...
argocd-server: v1.7.3+b4c79cc
  ...
  Kustomize Version: kustomize/v3.6.1
  Helm Version: v3.2.0
  Kubectl Version: v1.17.8
Enter fullscreen mode Exit fullscreen mode

Both client and server responding = installation successful. ✅


Change the Admin Password

Change the default password immediately after first login:

argocd account update-password
Enter fullscreen mode Exit fullscreen mode
*** Enter current password:
*** Enter new password:
*** Confirm new password:
Password updated
Context '172.27.8.59' updated
Enter fullscreen mode Exit fullscreen mode

By default, only the admin user exists. For multi-user setups with SSO and RBAC, refer to the Argo CD user management documentation.


3. Access Argo CD via Web UI

By default, the argocd-server Service is of type ClusterIP — only accessible from within the cluster. To expose it externally, you have two options:

Option A: LoadBalancer (Cloud environments)

kubectl patch svc argocd-server -n argocd \
  -p '{"spec": {"type": "LoadBalancer"}}'
Enter fullscreen mode Exit fullscreen mode
service/argocd-server patched
Enter fullscreen mode Exit fullscreen mode

Wait for an external IP to be assigned:

kubectl get svc argocd-server -n argocd
Enter fullscreen mode Exit fullscreen mode

Then open https://<EXTERNAL-IP> in your browser.

Option B: NodePort (On-premise / bare metal)

kubectl patch svc argocd-server -n argocd \
  -p '{"spec": {"type": "NodePort"}}'
Enter fullscreen mode Exit fullscreen mode

Access via https://<NODE-IP>:<NODE-PORT>.

Option C: Port-forward (Local development)

kubectl port-forward svc/argocd-server -n argocd 8080:443
Enter fullscreen mode Exit fullscreen mode

Then open https://localhost:8080 in your browser.


After logging in with admin and your password, you'll land on the Application Dashboard — the central view for managing all your GitOps-managed applications.


4. Uninstall Argo CD

To completely remove Argo CD from your cluster:

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

kubectl delete ns argocd
Enter fullscreen mode Exit fullscreen mode

This removes all Argo CD resources including CRDs, RBAC, Secrets, and the namespace itself.

⚠️ Warning: Deleting the argocd namespace will also delete all Application CRDs and their sync history. Make sure you have your Git configs backed up before uninstalling.


5. Installation Summary

# Full installation sequence

kubectl create namespace argocd
      ↓
kubectl apply -n argocd -f install.yaml
      ↓
kubectl -n argocd get deployment   (verify all 5 are READY)
      ↓
Install argocd CLI
      ↓
Get initial admin password
      ↓
argocd login <CLUSTER-IP>
      ↓
argocd account update-password
      ↓
Expose argocd-server (LoadBalancer / NodePort / port-forward)
      ↓
Access Web UI ✅
Enter fullscreen mode Exit fullscreen mode
Step Command
Create namespace kubectl create namespace argocd
Install kubectl apply -n argocd -f install.yaml
Verify kubectl -n argocd get deployment
Get initial password kubectl get pods -n argocd ... or argocd-initial-admin-secret
CLI login argocd login <IP>
Change password argocd account update-password
Expose Web UI patch svc to LoadBalancer / NodePort
Uninstall kubectl delete -n argocd -f install.yaml && kubectl delete ns argocd

Next in this series: Argo CD Application Management: Connecting Git Repos, Registering Clusters & Deploying Apps (Part 9)


Follow the series — next up we connect Argo CD to a real Git repository and deploy our first Application end-to-end.

Top comments (0)