Required Tools
You’ll need these tools installed with the specified minimum versions:Git
v2.0.0+
Go
Version from go.mod
Docker/Podman
v20.10.0+ / v3.0.0+
Kubernetes Cluster
Kind, Minikube, or K3d
Installation Steps
Install Git
You’ll need a Git client for pulling source code and pushing changes.Git Installation Guide
Official Git installation instructions
Install Go
Download Go SDK
Visit the official Go download page and install Go.
Match go.mod Version
Install Go with a version equal to or greater than the version listed in
go.mod.We assume your Go workspace is at
~/go.Install Docker or Podman
- Docker
- Podman
Install Docker following the official documentation.Argo CD uses multi-stage builds, so you’ll need a working Docker runtime environment.Verify installation:
Install a Local Kubernetes Cluster
You’ll need a local Kubernetes cluster for development. Choose one:- Kind
- Minikube
- K3d
Installation: Kind Quick StartStart the cluster:Kind runs Kubernetes inside Docker containers, making it lightweight and fast.
Fork and Clone the Repository
Fork the Repository
Fork the Argo CD repository to your personal GitHub account.
Install Development Tools
Install required Go tools and code generation tools:Install Argo CD on Your Cluster
Deploy Argo CD to your local cluster:Toolchain Options
Argo CD provides two development toolchains:Virtualized Toolchain
Using Docker Containers
Using Docker Containers
The virtualized toolchain runs builds and tests inside Docker containers using the test tools image. This provides:Using Podman instead of Docker:Test cluster connectivity:
- Same runtime environment as production
- Easy to keep up-to-date
- Repeatable builds
- Your Kubernetes API server must listen on your local machine interface (not
127.0.0.1only) - Your
~/.kube/configmust not uselocalhost,127.0.0.1, or0.0.0.0
Local Toolchain
Running Natively
Running Natively
Next Steps
Running Locally
Start Argo CD services locally
Tilt Development
Use Tilt for rapid development
Architecture
Understand the component architecture
Contributing
Learn how to contribute code
Troubleshooting
Connection refused to Kubernetes API
Connection refused to Kubernetes API
If you see errors like “connection refused to 127.0.0.1:6443”:
- Edit your
~/.kube/config - Replace
127.0.0.1orlocalhostwith your machine’s IP address - For K3d, follow the specific network configuration steps
Docker permission denied
Docker permission denied
If your user lacks Docker privileges:Or export permanently:
Minikube with virtualized toolchain
Minikube with virtualized toolchain
Minikube with the Docker driver is not compatible with the virtualized toolchain because it hard-codes the API server to 127.0.0.1.Start Minikube with embedded certificates: