Argo is a family of Kubernetes-native delivery projects: Argo CD for continuous delivery, Argo Rollouts for progressive deployment, Argo Workflows for container-native pipelines, and Argo Events for triggering them. They share a design principle — everything is a custom resource, reconciled by a controller running inside the cluster, so the cluster itself is the delivery engine rather than something a pipeline pushes into.
Argo CD is the piece most teams meet first. Its unit of work is the Application resource: a source (repository, path, target revision) and a destination (cluster, namespace). Three components do the work — the repo-server renders manifests through Helm, Kustomize, Jsonnet or a config management plugin; the application-controller diffs the rendered output against live cluster state and reconciles; the API server backs the CLI, the web UI, SSO and RBAC. Sync waves and resource hooks order what would otherwise be a single unordered apply, and health assessment — built in for common kinds, extensible with Lua — decides whether a sync actually succeeded.
Around that sit the pieces that make Argo work beyond one team: AppProjects to constrain which repositories, clusters and resource kinds a tenant may touch; ApplicationSets with list, Git, cluster and matrix generators to template hundreds of Applications from one definition; and Argo Rollouts, which replaces the Deployment controller with a Rollout resource that runs canary or blue-green steps and gates promotion on AnalysisRuns against Prometheus, Datadog or a web endpoint.
Why this skill matters now
Push-based deployment gave every CI job cluster-admin credentials and no memory of what it had done. GitOps inverts that: the controller lives in the cluster, pulls from Git, and reconciles continuously — so credentials stay inside the cluster boundary, and manual changes are detected instead of quietly persisting until the next incident.
Argo CD is the most widely deployed implementation of that model, and it is increasingly the interface engineers use to see what is actually running. That makes the skill less about installing a controller and more about the design questions underneath it: repository topology, how environments are promoted, how many Applications a cluster should carry, and where the boundary sits between what Git owns and what a controller or operator owns at runtime.
The operational depth matters too. Teams routinely hit sync loops caused by mutating webhooks, drift they cannot explain because a field is server-populated, secrets that cannot go in Git, and repo-server memory exhaustion at a few hundred Applications. Those are the problems that separate a working demo from a platform other teams can rely on.