ArgoCD
Workflows and Pipelines
Container native workflow engine for Kubernetes supporting both DAG and step based workflows
Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. Argo Workflows is implemented as a Kubernetes CRD.
- Define workflows where each step in the workflow is a container.
- Model multi-step workflows as a sequence of tasks or capture the dependencies between tasks using a graph (DAG).
- Easily run compute intensive jobs for machine learning or data processing in a fraction of the time using Argo Workflows on Kubernetes.
- Run CI/CD pipelines natively on Kubernetes without configuring complex software development products.
Continuous Delivery
Declarative Continuous Delivery following Gitops
Application definitions, configurations, and environments should be declarative and version controlled. Application deployment and lifecycle management should be automated, auditable, and easy to understand.
Advanced Deployment Controller
Additional Kubernetes deployment strategies such as Blue-Green and Canary
Events
Event based dependency manager for Kubernetes
What Argo does differently is how they manage the actual CI/CD. It is specifically developed for Kubernetes and integrates with it through CRD's (Custom Resource Definitions). It defines a new CRD which is the 'Workflow'. In this workflow you define what needs to happen by laying out steps in a yaml format. Each step runs inits own Docker containeron your own Kubernetes cluster.
Others
- GitHub - argoproj/argo-workflows: Workflow Engine for Kubernetes · GitHub ⭐ 17k
- Home | Argo
- https://argoproj.github.io/argo-rollouts
- https://argoproj.github.io/argo-events/setup/kafka
Overview
ArgoCD is a declarative, GitOps continuous delivery tool for Kubernetes. It automatically syncs your K8s cluster state with Git repository configurations.
Type: Continuous Delivery (GitOps)
Key Features:
- Declarative GitOps-based continuous delivery
- Automated deployment and lifecycle management
- Multi-cluster, multi-tenant support
- Visual UI for application state and diff
- Automated drift detection and self-healing
- SSO integration (SAML, OIDC, LDAP)
- RBAC for multi-team environments
- Webhook integrations
Architecture: Kubernetes-native, runs as K8s controllers
Core Concepts
GitOps Workflow
[Git Repository]
↓ (Git commit/push)
[ArgoCD detects change]
↓ (Compare desired vs actual)
[Sync if different]
↓ (Apply manifests)
[Kubernetes Cluster]
Principles:
- Git as single source of truth - All desired state in Git
- Declarative - Kubernetes manifests describe desired state
- Automated - Automatic sync from Git to cluster
- Auditable - Full history in Git
- Self-healing - Detect and correct drift
Components
ArgoCD Server:
- API server + Web UI
- Application management
- Repository/cluster management
- RBAC enforcement
Repository Server:
- Maintains local cache of Git repositories
- Generates Kubernetes manifests
- Supports Helm, Kustomize, Jsonnet
Application Controller:
- Monitors applications
- Compares desired state (Git) vs actual state (K8s)
- Triggers sync operations
Dex (Optional):
- SSO/OIDC provider integration
- User authentication
Redis:
- Caching layer
- Temporary data storage
Installation
Quick Start (Non-HA)
# Create namespace
kubectl create namespace argocd
# Install ArgoCD
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# Wait for pods
kubectl wait --for=condition=Ready pods --all -n argocd --timeout=300s
# Get initial admin password
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
# Port forward to access UI
kubectl port-forward svc/argocd-server -n argocd 8080:443
# Access at https://localhost:8080
# Username: admin
# Password: (from above command)