ArgoCD
Declarative GitOps continuous delivery for Kubernetes. ArgoCD continuously monitors Git repositories and automatically syncs application state to match desired configuration.
Quick Start
Install ArgoCD:
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Access UI:
kubectl port-forward svc/argocd-server -n argocd 8080:443
# Get initial admin password
argocd admin initial-password -n argocd
CLI Login:
argocd login localhost:8080 --insecure
Core Concepts
| Concept | Description |
|---|---|
| Application | Kubernetes resource tracking a Git repo path to a cluster/namespace |
| AppProject | Logical grouping with source/destination restrictions and RBAC |
| ApplicationSet | Template for generating multiple Applications from generators |
| Sync | Process of applying Git manifests to cluster |
| Health | Status assessment of deployed resources |
Task Reference
Application Management
- Create, sync, delete Applications → references/applications.md
- App of Apps pattern → references/applications.md
Multi-Cluster & Templating
- ApplicationSets with generators → references/applicationsets.md
- List, Cluster, Git, Matrix generators → references/applicationsets.md
Manifest Tools
- Helm charts, values, OCI registries → references/helm.md
- Kustomize overlays, patches → references/kustomize.md
Sync Configuration
- Sync waves, hooks, phases → references/sync-options.md
- Prune, replace, server-side apply → references/sync-options.md
Operations & Admin
- RBAC policies, roles → references/operations.md
- Projects, health checks, notifications → references/operations.md
Repository Setup
- Private repos, SSH, HTTPS, GitHub App → references/repositories.md
- Credential templates, certificates → references/repositories.md
Troubleshooting
- Common issues, FAQ → references/troubleshooting.md
Common CLI Commands
# Application management
argocd app create <name> --repo <url> --path <path> --dest-server https://kubernetes.default.svc --dest-namespace <ns>
argocd app sync <name>
argocd app get <name>
argocd app delete <name>
argocd app list
# Cluster management
argocd cluster add <context-name>
argocd cluster list
# Repository management
argocd repo add <url> [--ssh-private-key-path | --username/--password]
argocd repo list
# Project management
argocd proj create <name> -d <server>,<namespace> -s <repo-url>
argocd proj list
Minimal Application Example
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: myapp
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/org/repo.git
targetRevision: HEAD
path: manifests
destination:
server: https://kubernetes.default.svc
namespace: myapp
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true