Guides
How to Install Argo CD and Deploy Your First App
By Ravindra Bagale, DevOps trainer · LinkedIn · Published: · Last updated:
Install Argo CD, log in, create an Application pointing at a Git path, sync, and wait until Synced and Healthy.
Friends, Argo CD is the sync agent from the GitOps story. Chala mitrano — wait for Synced and Healthy, not just Applied.
मित्रांनो, Argo CD = GitOps मधील sync agent. Chala mitrano — Synced आणि Healthy दोन्ही पाहा.
मित्रों, Argo CD = GitOps वाला sync agent। Chala mitrano — Synced और Healthy दोनों देखें।
Quick answer
Hold this vertical picture:
- Create argocd namespace and install.
- Wait for pods.
- Login; change admin password.
- Apply Application YAML.
- Sync; confirm Synced/Healthy.
Language: English · मराठी · हिंदी
Argo CD first app
Why Argo CD
It is the GitOps controller teams hire for.
Why: Manual kubectl cannot continuously reconcile.
What: Install once; Applications point at Git.
How: UI and CLI both work.
Example 1: Install namespace idea
Type this:
printf '%s\n' 'kubectl create namespace argocd'
You will see:
kubectl create namespace argocd
What it means: Argo CD components live in their own namespace.
Example 2: Install manifests reminder
Type this:
printf '%s\n' 'Apply the official Argo CD install manifests for your version from the project release notes (not a random blog copy)'
You will see:
Apply the official Argo CD install manifests for your version from the project release notes (not a random blog copy)
What it means: Pin the version your platform team approves.
Example 3: Wait for pods
Type this:
printf '%s\n' 'kubectl -n argocd get pods'
You will see:
kubectl -n argocd get pods
What it means: All controllers should become Running/Ready.
Concept 1: Access safely
Password and port-forward for labs.
Why: Default admin left unchanged is an incident.
What: Read initial secret; change it; SSO later.
How: CLI login for scripts.
Example 4: Initial admin password
Type this:
printf '%s\n' 'kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo'
You will see:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
What it means: Change this password after first login — Infosys checklist.
Example 5: Port-forward UI
Type this:
printf '%s\n' 'kubectl -n argocd port-forward svc/argocd-server 8080:443'
You will see:
kubectl -n argocd port-forward svc/argocd-server 8080:443
What it means: Lab access; prod uses Ingress + SSO later.
Example 6: CLI login sketch
Type this:
printf '%s\n' 'argocd login 127.0.0.1:8080 --insecure'
You will see:
argocd login 127.0.0.1:8080 --insecure
What it means: --insecure only for local TLS labs.
Concept 2: Application object
repoURL, path, destination, syncPolicy.
Why: Wrong path syncs nothing useful.
What: apply Application; app get; sync.
How: Private Git URLs.
Example 7: Application YAML
Type this:
mkdir -p /tmp/argo && printf '%s\n' 'apiVersion: argoproj.io/v1alpha1' 'kind: Application' 'metadata: {name: web, namespace: argocd}' 'spec:' ' project: default' ' source:' ' repoURL: https://git.example.internal/demo/web-config.git' ' targetRevision: main' ' path: apps/web' ' destination:' ' server: https://kubernetes.default.svc' ' namespace: demo' ' syncPolicy: {automated: {prune: true, selfHeal: true}}' > /tmp/argo/app.yaml && head -5 /tmp/argo/app.yaml
You will see:
apiVersion: argoproj.io/v1alpha1
What it means: repoURL uses your company Git host — not a banned public host in samples.
Example 8: kubectl apply Application
Type this:
printf '%s\n' 'kubectl apply -f app.yaml && argocd app get web'
You will see:
kubectl apply -f app.yaml && argocd app get web
What it means: Look for Synced and Healthy.
Example 9: Manual sync
Type this:
printf '%s\n' 'argocd app sync web'
You will see:
What it means: Use when automation is off or first sync.
Concept 3: Heal prune RBAC
Automation knobs and who can click.
Why: Open admin UI without RBAC fails audits.
What: selfHeal/prune carefully; map SSO groups.
How: Read Healthy vs Progressing.
Example 10: Self-heal meaning
Type this:
printf '%s\n' 'selfHeal: true → controller reverts manual kubectl drift'
You will see:
selfHeal: true → controller reverts manual kubectl drift
What it means: Matches the GitOps lesson.
Example 11: Prune meaning
Type this:
printf '%s\n' 'prune: true → deletes cluster objects removed from Git'
You will see:
prune: true → deletes cluster objects removed from Git
What it means: Without prune, deleted YAML leaves orphans.
Example 12: RBAC note
Type this:
printf '%s\n' 'Map SSO groups to Argo CD RBAC before opening UI to everyone'
You will see:
Map SSO groups to Argo CD RBAC before opening UI to everyone
What it means: Admin for all is an audit fail at Capgemini.
Argo CD card
1 Install into argocd ns 2 Ready pods 3 Login + change password 4 Application YAML 5 sync 6 Synced+Healthy; RBAC later
Suppose: Progressing forever
Check repo access, path, and destination namespace.
Suppose: Unknown status
Image pull or resource errors — open App details.
Ravindra Bagale's Tip
At TCS platform teams, first app uses a private Git path and automated sync with prune+selfHeal in non-prod only until trust grows.
TCS platform मध्ये पहिली app private Git + automated sync; prune+selfHeal आधी non-prod.
TCS platform में पहली app private Git + automated sync; prune+selfHeal पहले non-prod।
Check yourself (quiz)
Q1. Namespace?
argocd
Q2. Success statuses?
Synced and Healthy
Q3. Application points at?
Git repoURL + path
Q4. selfHeal?
Revert live drift
Q5. prune?
Delete orphans removed from Git
Q6. First password?
Change after login
Reading tracking
Mark this guide when you finish. Your browser remembers it on this device.
install → login → Application → sync → Healthy.
Did you understand? Let us try it once more.
Frequently asked questions
Argo CD vs Flux?
Both GitOps; Argo has a popular UI.
Automated sync in prod?
Many teams enable after trust; start manual.
Where is admin password?
argocd-initial-admin-secret.
Progressing forever?
Repo credentials or bad path.
selfHeal risk?
Fights intentional break-glass edits — use policy.
App of apps?
Root Application managing many children.