The Argo Project: Making GitOps Accessible to Everyone

David Gilad Maayan
Published 05/20/2022
Share this on:

The Argo Project - Kubernetes Open SourceWhat Is the Argo Project?


The Cloud Native Computing Foundation (CNCF) launched the Argo project to help build and manage continuous delivery (CD) workflows on Kubernetes. It consists of four projects—Argo CD, Argo Workflows, Argo Rollouts, and Argo Events.

 


 

Want More Tech News? Subscribe to ComputingEdge Newsletter Today!

 


 

Argo CD


Argo CD is a continuous deployment (CD) tool for Kubernetes. It can pull your updated code from Git repositories and then deploy it directly to your Kubernetes resources. Argo CD’s major advantage is that it can help you manage application updates alongside infrastructure configuration via one system.

Argo CD enables you to set up manual and automated application deployment to a Kubernetes cluster. It also allows you to set up automatic synchronization of the application state to the latest version of your declarative configuration. It supports webhooks that trigger actions in GitHub, Bitbucket, and GitLab.

Argo CD provides a command-line interface (CLI) and web user interface, allowing you to visualize deployment issues, and detect and remediate configuration drift. It includes security features such as role-based access control (RBAC) for multi-cluster management and single sign-on (SSO) for GitHub, GitLab, Microsoft, OIDC, OAuth2, LinkedIn, SAML 2.0, and LDAP.

 

Argo Workflows


Argo Workflows is a container-native workflow engine that Argo implements as a Custom Resource Definition (CRD) in Kubernetes. You can use Argo Workflows to orchestrate parallel jobs on Kubernetes. It lets you define workflows that handle each step as a container and natively run CI/CD pipelines on Kubernetes.

You can use Argo Workflows to model a multistep workflow as a series of tasks or capture inter-task dependencies with a DAG graph. It also enables you to easily run compute-intensive jobs for data processing or machine learning (ML).

 

Argo Rollouts


Argo Rollouts works as a Kubernetes controller that provides advanced deployment functionality for Kubernetes, including canary and blue-green deployments, canary analysis, and progressive delivery.

You can integrate Argo Rollouts with a service mesh and ingress controllers. Once integrated, Rollouts can use their traffic directing capabilities to gradually move traffic to new versions during updates. It can also query metrics sourced from integrated providers and interpret them to verify KPIs and implement automatic rollbacks or promotions.

 

Argo Events


Argo Events provides event-based dependency management features for Kubernetes. It can help you define several dependencies from various event sources, including webhook, schedules, s3, and streams.

After successful event dependencies resolution, Argo Events can trigger Kubernetes objects. However, you cannot use Argo Events independently. Rather, you need to integrate this tool with a system running workflow steps, like Argo Workflows.

 

GitOps with Kubernetes


GitOps is a methodology for declarative management of application development workflows. It lets you describe applications and infrastructure declaratively, and represent their desired state using version control systems like Git.

When using GitOps, the version control systems become the single source of truth for your applications. This enables you to easily deploy and roll back to Kubernetes. When a production issue occurs, you can use the version control system to quickly and dependably revert to a previous version of the infrastructure. Instead of complex rollbacks, you could use a simple Git revert to restore a previous application state.

GitOps involves using a software agent that automatically receives the Git state required to match the platform state. Since the state constantly adjusts, changes made in the system should be reflected in Git and vice versa. It eliminates the need to use cluster credentials when making changes to the system.

Software agents can inform you when the desired state is not met and help ensure the system is self-healing. Software agents go beyond handling nodes or pods that fail—Kubernetes handles these tasks—to indicate human error, acting as a feedback and control loop for operations.

 

Why Is Argo an Enabling Technology for GitOps?


Argo offers various capabilities that enable GitOps, including:

 

Continuous monitoring and synchronization

Argo employs Kubernetes manifests to continuously monitor your Git repositories and verify commits. It proactively fetches changes from repositories and synchronizes changes with your cluster’s resources to reconcile your cluster configuration’s state with the state described in Git.

This ability to monitor containers in Kubernetes clusters and synchronize them with Git repositories helps minimize or even eliminate configuration errors and deployment failures. Argo understands the cluster’s deployment history and tracks asynchronous deployments to help avoid these drifts.

 

Efficiency and productivity

Argo provides an efficient workflow that enables developers to use familiar tools and processes for deploying code. It helps avoid inconsistencies, improves the system’s reliability, and provides auto CD features to increase productivity. It also reduces deployment complexity and improves transfer speed.

 

Progressive delivery

Argo offers features that enable progressive delivery capabilities, such as blue/green and canary deployments. It lets developers use automatic rollouts to release new features gradually and iteratively. You can apply GitOps workflows to incremental delivery processes and use Argo to ensure the process is safe and simple.

 

Pull requests

GitOps relies on a pull request process to introduce new configuration versions. It merges these versions with the Git repository’s master branch and deploys new versions automatically. Your Git repository stores the complete history of changes, including details about the environment during each process phase. Argo CD can handle the second half of the GitOps process, verifying that your new configuration was successfully deployed to the cluster.

 

Rollouts

Argo implements rollouts as Kubernetes Custom Resource Definitions (CRDs), acting like a deployment object that offers extended functionality. It integrates with Argo CD to help facilitate deployment strategies using GitOps to run CI/CD pipelines.

 

Conclusion


Argo is a powerful tool that is a natural extension of the Kubernetes environment. Because it is so familiar to existing Kubernetes users, it makes it extremely easy to adopt GitOps. You can leverage Argo to instantly achieve GitOps benefits on existing Kubernetes clusters:

  • Continuous synchronization between Git repository and cluster state
  • Automating software delivery workflows
  • Progressive delivery, enabling patterns like blue/green and canary deployments
  • Using Git pull requests to trigger deployment of new versions

I suggest getting Argo and trying for yourself – it is the quickest way for your team to become the next GitOps unicorn.