Argo CD Overview

Argo CD Overview

Argo CD is one of the subprojects of the Argo project and is a CD (Continuous Delivery) tool that supports GitOps-style deployment for Kubernetes.
It acts as an agent that synchronizes the contents of a Git repository with a Kubernetes cluster, and it is deployed inside the Kubernetes cluster as Pods.

The Argo project, which began in 2017, includes subprojects such as Argo Workflows, Argo CD, Argo Events, and Argo Rollouts, and became a CNCF (Cloud Native Computing Foundation) incubating project in April 2020. The name Argo comes from the ship Argo in Greek mythology, and its mascot is modeled after an octopus with the same name.

As the name “CD” suggests, Argo CD specializes in continuous delivery and does not provide CI (Continuous Integration) features. Therefore, it must be integrated separately with a CI tool or another method.

Argo CD follows the GitOps pattern, using a Git repository as the source (manifest) that defines the desired application state. Kubernetes manifests in Argo CD can be specified in several ways, including standard YAML/JSON, Kustomize, Helm chart, ksonnet, and jsonnet.

Argo CD performs automatic deployment according to the state of the Git repository. Because application configuration is managed in Git, updates to specific branches and tags can be tracked. Also, if there is a problem with a deployed application, you can immediately roll back to a specific commit version.

Argo CD is implemented as a Kubernetes controller that continuously monitors running k8s applications and compares the current state with the state in the Git repository. If there is a difference between the current state and the Git repository state, it visualizes the difference and synchronizes the application automatically or manually.

Key Features of Argo CD

  • Application definitions, configuration, and environments should be declarative and version controlled.
  • Application deployment and lifecycle management are automated and easy to verify.
Feature Description
Automatic deployment Automatically deploys applications to the specified environment
Configuration management/template tool support Supports Kustomize, Helm, Ksonnet, Jsonnet, plain YAML, and more
Multi-cluster support Can manage and deploy to multiple k8s clusters
SSO integration Supports SSO integration with OIDC, OAuth2, LDAP, SAML 2.0, GitHub, GitLab, Microsoft, and LinkedIn
Authorization Supports multi-tenant and RBAC policies
Rollback Can roll back to any point of an application committed in the Git repository
Health checks Can analyze the health status of application resources
Drift detection and visualization Automatically detects and visualizes configuration drift
Application synchronization Can synchronize to the desired state automatically or manually
Web UI Provides application activity in a real-time view
CLI Provides a CLI for automation and CI integration
Webhook integration Supports Webhook integration with GitHub, BitBucket, GitLab, and more
Automation tokens Issues access tokens for automation per project
PreSync/Sync/PostSync hooks Supports PreSync/Sync/PostSync hooks for complex application deployment, such as blue-green deployment and canary releases
Audit trail Can audit application events and API calls
Prometheus support Supports Prometheus metrics by default
Parameter overrides Can override ksonnet/helm parameters from Git

How It Works

  • Argo CD follows the GitOps pattern, using a Git repository as the source for defining the desired application state.
  • Kubernetes manifests can be specified in several ways. The author used Helm charts.
  • Argo CD automates deployment of the desired application state to the specified target environment.

Argo CD Operating Environment

Argo CD runs as a Kubernetes component, so it works in on-premises or cloud Kubernetes environments.

  • Kubernetes environments built independently on-premises or in the cloud
  • Kubernetes environments provided as cloud managed services

OSS with Similar Features

The following open-source CD tools are compatible with Kubernetes/GitOps.

  • Jenkins X
  • FluxCD
  • Spinnaker

Argo CD License

Argo CD is released under the Apache License version 2. Anyone can freely use, modify, and redistribute it for commercial or non-commercial purposes.

References