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
namespace/argocd created
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
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
Step 3: Verify all Deployments are running
kubectl -n argocd get deployment
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
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
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
macOS (Homebrew alternative):
brew install argocd
Verify the installation:
argocd version
argocd: v1.7.4+f8cbd6b
BuildDate: 2020-09-05T02:44:27Z
...
FATA[0000] Argo CD server address unspecified
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
argocd-server-cf8dbb7bd-n5zrv
⚠️ 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
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
argocd-server ClusterIP 172.27.8.59 <none> 80/TCP,443/TCP 26m
Log In via CLI
argocd login 172.27.8.59
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
The TLS warning is expected for a fresh install with a self-signed certificate. For production, configure a proper TLS certificate or use
--insecureflag.
Verify the connection by running argocd version again — this time you should see both client and server versions:
argocd version
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
Both client and server responding = installation successful. ✅
Change the Admin Password
Change the default password immediately after first login:
argocd account update-password
*** Enter current password:
*** Enter new password:
*** Confirm new password:
Password updated
Context '172.27.8.59' updated
By default, only the
adminuser 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"}}'
service/argocd-server patched
Wait for an external IP to be assigned:
kubectl get svc argocd-server -n argocd
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"}}'
Access via https://<NODE-IP>:<NODE-PORT>.
Option C: Port-forward (Local development)
kubectl port-forward svc/argocd-server -n argocd 8080:443
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
This removes all Argo CD resources including CRDs, RBAC, Secrets, and the namespace itself.
⚠️ Warning: Deleting the
argocdnamespace 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 ✅
| 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)