You will need to install the following tools with the specified minimum versions:
- Git (v2.0.0+)
- Go (version specified in
go.mod- check withgo version) - Docker (v20.10.0+) Or Podman (v3.0.0+)
- Kind (v0.11.0+) Or Minikube (v1.23.0+) Or K3d (v5.7.3+)
Obviously, you will need a git client for pulling source code and pushing back your changes.
https://github.com/git-guides/install-git
You will need a Go SDK and related tools (such as GNU make) installed and working on your development environment.
Install Go with a version equal to or greater than the version listed in go.mod (verify go version with go version).
We will assume that your Go workspace is at ~/go.
Verify: run go version
https://docs.docker.com/engine/install/
You will need a working Docker runtime environment, to be able to build and run images. Argo CD is using multi-stage builds.
Verify: run docker version
https://podman.io/docs/installation
You won't need a fully blown multi-master, multi-node cluster, but you will need something like K3S, K3d, Minikube, Kind or microk8s. You will also need a working Kubernetes client (kubectl) configuration in your development environment. The configuration must reside in ~/.kube/config.
You can use kind to run Kubernetes inside Docker. But pointing to any other development cluster works fine as well as long as Argo CD can reach it.
kind create clusterminikube startOr, if you are using minikube with podman driver:
minikube start --driver=podman- Run
kubectl version
- Fork the Argo CD repository to your personal GitHub Account
- Clone the forked repository:
git clone https://github.com/YOUR-USERNAME/argo-cd.gitPlease note that the local build process uses GOPATH and that path should not be used, unless the Argo CD repository was directly cloned in it.
- While everyone has their own Git workflow, the author of this document recommends to create a remote called
upstreamin your local copy pointing to the original Argo CD repository. This way, you can easily keep your local branches up-to-date by merging in latest changes from the Argo CD repository, i.e. by doing agit pull upstream masterin your locally checked out branch. To create the remote, run:cd argo-cd git remote add upstream https://github.com/argoproj/argo-cd.git
make install-go-tools-local
make install-codegen-tools-localkubectl create namespace argocd &&
kubectl apply -n argocd --server-side --force-conflicts -f https://raw.githubusercontent.com/argoproj/argo-cd/master/manifests/install.yamlSet kubectl config to avoid specifying the namespace in every kubectl command.
kubectl config set-context --current --namespace=argocd