Argo CD is a new, lighweight Kubernetes-native continuous delivery (CD) system. "Kubernetes-native" means:
- Ideology - Argo CD implements GitOps paradigm for CD. The main point - Git is our single source of true. After we push our app's config changes into the app config repo - argocd syncs the app state with the changes. I.e. our changes are declarative.
- Implementation - Argo CD is built solely from the Kubernetes entities - custom resource definitions (CRD), a controller to process the CRDs, RBAC policies to organize security etc.
Current Argo CD version is 0.12.3 Version 1.0.0-rc3 is available The Argo CD's roadmanp is here
- API server
- application management and status reporting
- invoking of application operations (e.g. sync, rollback, user-defined actions)
- credential management
- auth/authz management
- listener/forwarder for Git webhook events
- Application Controller
- adjusts the application's actual state with the desired target one
- Repository Server
- maintains a local cache of the Git repository
- Argo CD Client
- a CLI application to interact with the argocd server
- SSO adapter
- implements integrations with external SSO providers (Github, Google Cloud, LDAP etc.)
- Cache
- a Redis instance that caches frequently accessed objects
-
Supports both the pull and the push-based GitOps models to sync target environments with desired application state.
-
Multiple manifests template formats: Helm, Kustomize, Ksonnet/Jsonnet or plain YAML manifests.
-
Git branch tracking or tag/commit pinning.
-
App synchronization: manual or automated.
-
Rollback to any application state committed in the git repository.
-
Continuous monitoring of deployed applications.
-
Web console with visualized app's deployment scheme, logs and health statuses.
-
Argo CD is agnostic to your CI system, and provides gRPC/REST/CLI to integrate with your CI of choice.
-
SSO Integration (OIDC, LDAP, GitHub).
-
Webhook integration (GitHub, GitLab, BitBucket).
-
Complex application rollouts (e.g., canary upgrades, blue/green) via PreSync/Sync/PostSync hooks