What Is Argo CD?
Argo CD started at Intuit a few years ago when Intuit acquired a startup named
Applatix and tasked its team with developing a new self-service developer platform to increase agility and innovation, and reduce complexity. Applatix already had Argo Workflows, a workflow orchestration engine, but during the course of building this new platform, we realized there was a need for a continuous deployment product. Based on cloud native and GitOps best practices and principles, Argo CD was then born to fill that need.
The workflow Argo CD enables has existed for a long time, according to Sadeghianfar, but the key change here is applying it actively to cluster configuration.
Developers have used git as a basis for pushing updates to their applications, Sadeghianfar said. Administrators have been using provisioning software to create scripts for deployments, using git as the location from whence to deploy these assets.
But for managing multiple clusters, the GitOps model is particularly effective, not only because the operations model for Argo CD is so simple and devoid of smart logic.
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:
• kustomize applications
• helm charts
• ksonnet applications
• jsonnet files
• Plain directory of YAML/json manifests
• Any custom config management tool configured as a config management plugin
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.
For a quick 10minute overview of Argo CD, check out the demo presented to the Sig Apps community meeting:
• Deploying applications to specified target environments automatically
• Support for multiple configuration management/template tools (Kustomize, Helm, Ksonnet, Jsonnet, plain-YAML)
• Managing and deploying to multiple clusters
• Integration with SSO (OIDC, OAuth2, LDAP, SAML 2.0, GitHub, GitLab, Microsoft, LinkedIn.
• RBAC policies for multi-tenancy and authorization.
• If you commit the configuration of an application in Git, you can rollback/roll anywhere
• Health status analysis of application resources
• Automatic detection and visualization of configuration drift • Automated or manual synchronization of applications to a desired state
• Web UI providing a real-time view of application activity • CLI for automating and integrating Continuous Integration • Integration of Webhooks (GitHub, BitBucket, GitLab) • Automated access tokens
• PreSync, Sync, PostSync hooks to support complex application rollouts (e.g.blue/green & canary upgrades)
• Audit trails for application events and API calls
• Prometheus metrics
• Overriding parameters for ksonnet/helm in Git via parameter overrides