Argo CD - Declarative Continuous Delivery for Kubernetes
What is Argo CD?
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.
Why Argo CD?
Application definitions, configurations, and environments should be declarative and version controlled. Application deployment and lifecycle management should be automated, auditable, and easy to understand.
kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
How it works
Argo CD follows the GitOps pattern of using git repositories as the source of truth for defining the desired application state. Kubernetes manifests can be specified in several ways:
- ksonnet applications
- kustomize applications
- helm charts
- Plain directory of YAML/json/jsonnet manifests
Argo CD automates the deployment of the desired application states in the specified target environments. Application deployments can track updates to branches, tags, or pinned to a specific version of manifests at a git commit. See tracking strategies for additional details about the different tracking strategies available.
Argo CD is implemented as a kubernetes controller which continuously monitors running applications
and compares the current, live state against the desired target state (as specified in the git repo).
A deployed application whose live state deviates from the target state is considered
Argo CD reports & visualizes the differences, while providing facilities to automatically or
manually sync the live state back to the desired target state. Any modifications made to the desired
target state in the git repo can be automatically applied and reflected in the specified target
For additional details, see architecture overview.
- Automated deployment of applications to specified target environments
- Flexibility in support for multiple config management tools (Ksonnet, Kustomize, Helm, plain-YAML)
- Continuous monitoring of deployed applications
- Automated or manual syncing of applications to its desired state
- Web and CLI based visualization of applications and differences between live vs. desired state
- Rollback/Roll-anywhere to any application state committed in the git repository
- Health assessment statuses on all components of the application
- SSO Integration (OIDC, OAuth2, LDAP, SAML 2.0, GitLab, Microsoft, LinkedIn)
- Webhook Integration (GitHub, BitBucket, GitLab)
- PreSync, Sync, PostSync hooks to support complex application rollouts (e.g.blue/green & canary upgrades)
- Audit trails for application events and API calls
- Parameter overrides for overriding ksonnet/helm parameters in git
- Service account/access key management for CI pipelines
Community Blogs and Presentations
- KubeCon talk: CI/CD in Light Speed with K8s and Argo CD
KubeCon talk: Machine Learning as Code
- Among other things, desribes how Kubeflow uses Argo CD to implement GitOPs for ML
- SIG Apps demo: Argo CD - GitOps Continuous Delivery for Kubernetes
- Argo GitHub: https://github.com/argoproj
- Argo Slack: click here to join
- Argo website: https://argoproj.github.io/
- Argo CD is actively developed and is being used in production to deploy SaaS services at Intuit
- New application controller architecture
- Multi-namespaced applications
- Large application support
- Resource lifecycle hook improvements
- K8s recommended application labels
- External OIDC provider support
- OIDC group claims bindings to Project Roles
- Declarative Argo CD configuration
- Helm repository support
- Support for custom K8S manifest templating engines
- Support for custom health assessments (e.g. CRD health)
- Improved prometheus metrics
- Higher availability
- UI improvements