What is ArgoCD?
Argo CD is a declarative continuous delivery tool for Kubernetes applications. It uses the GitOps style to create and manage Kubernetes clusters. When any changes are made to the application configuration in Git, Argo CD will compare it with the configurations of the running application and notify users to bring the desired and live state into sync.
Argo is a graduated CD project of Cloud Native Computing Foundation’s (CNCF). Argo project is used to automate Kubernetes application delivery process. The project includes four products Argo CD, Argo Workflow, Argo Rollouts, and Argo Events. Each solves a particular set of problems in the agile development process and make the Kubernetes application delivery scalable and secure.
Argo CD Features
Use Argo CD to automate your application deployment process into Kubernetes. Argo CD supports deployment into multiple clusters hosted on a public cloud (AWS/GCP/Azure) or on-prem data center.
GitOps style deployment
Achieve GitOps style software delivery with ease. Declare the desired state of an application or any infrastructure resources in Git, and Argo CD will automatically synchronize the application configuration to the currently declared state.
Quickly rollback any applications to any previous versions in Git. You can implement advanced deployment strategies such as Canary and Blue-Green by integrating Argo CD with Argo Rollouts or Spinnaker.
Single sign-on authentication
Easily enable access for your teams to Argo CD with built-in integrations for SSO providers such as OIDC, OAuth2, LDAP, SAML 2.0, GitHub, GitLab, Microsoft, and LinkedIn.
RBAC and Multitenancy
Argo CD provides Role-based access control (RBAC) to manage the authorization of teams to specific services and clusters. For large projects, it is handy for the DevOps team to apply various restrictions (read/write) on Argo CD CRDs.
Extensible and Support
Argo CD supports webhooks integrations with GitLab, GitHub, and BitBucket. It also supports config management and templating tools such as plain YAML, Helm charts, Jsonnet, and Kustomize.
Web user interface and command-line interface (CLI) for configuring and getting real-time activity of application deployments.
How to achieve GitOps using Argo CD?
Every enterprise uses Git as its source code management software to store code. Developers can commit their infrastructure configurations, such as Kubernetes resources definition, in Git to create environments needed for application deployment. Once a developer implements a feature ( with a new application and K8S configurations) and merges with the main branch, the CI process is initiated for generating and testing an image. After the review and approval of the application, the pull request in Git is merged with the main branch. With the help of the GitOps agent, Argo CD will immediately identify the new versions of a configuration that was recently merged and compare it with the running application in the destination environment (it can be pre-prod or prod). In case of a mismatch, it highlights out-of-sync status, and in the backend, Argo CD uses the Kubernetes controller to reconcile the new changes to cluster resources. Once the Kubernetes resources are ready, it informs the user the application is in sync. Argo CD also uses an agent to constantly monitor the end environment and check its status with Git. Argo CD synchronizes the current state with the declared state of configurations and ensures that new configurations are correctly deployed to a Kubernetes cluster.
As all the records of all changes, including all details of the environment, at every stage of the process are stored in Git, Argo CD helps roll back applications to previous states in a single click.
Argo CD architecture overview
Platform engineers and DevOps folks use various techniques to define Kubernetes manifest files such as YAML, Ksonnet, Jsonnet files, Helm charts, and Kustomize. Argo CD application provides the capability to track any type of Kubernetes manifest. It can follow updates to branches, tags or pinned to a specific version of manifests at a Git commit. Argo CD automatically deploys the desired state of an application in a specified target environment. Updates are traceable as tags, branches, or pinned specific versions of a manifest at Git commits.
Argo CD control plane consists of three essential components- Application Controller, API Server, and Repository Service.
The application controller is a Kubernetes controller responsible for monitoring applications in the running environment with the desired state configured in Git. It detects out-of-sync status between the running environment and Git and notifies DevOps engineers.
The repository server of Argo CD is an internal service that maintains a local cache of the Git repo. On providing the input, such as repository URL, Git revisions( branch, tags), application path, and template-specific settings, the server generates Kubernetes manifests.
The API server is the gRPC/REST server, which provides API endpoints to Argo web UI and CLI, and other CI/CD systems. The APIs are primarily used to carry out functionalities such as application deployment and management, executing rollback or any user-defined actions, storing K8S cluster credentials, handling AuthN/Z for security and compliance, etc.
Operations and business benefits of Argo CD
Improve developer productivity
Argo CD provides developers with a self-service environment for application deployment. Software development teams can focus on creativity and writing business logic instead of time and energy on manual and remedial deployments.
Improved software delivery compliance
Allow your developers, Ops, and DevOps teams to use a single platform for infrastructure change management. Apply organizational policies to restrict access to Kubernetes resources and minimize your application downtime and outages.
Increased collaboration in SDLC
While working on Argo CD, every team member can work from the same system to achieve GitOps and understand the status of individual processes. The single Git repository fosters collaboration amongst team members by assigning tasks to individuals and deploying code from each person as necessary.
Argo CD allows teams to perform more rapid deployments into Kubernetes clusters across multi-cloud. Quicker releases of application changes mean shorter time to market and more flexibility in responding to customer demand.
DevOps teams can now collaborate with developers and operations to quickly identify and correct errors within a given time. Each change can be tracked using merge requests, and rollbacks can be easy if new versions don’t work. Argo CD allows teams to roll back to the previous state if newer versions experience errors in production. As a result, teams can reduce the risk of application.
More resource on Argo CD
Keep up to date with OpsMx
Be the first to hear about the latest product releases, collaborations and online exclusive.