Skip to content

Provide cluster API clusters to Argo CD.

License

Notifications You must be signed in to change notification settings

superorbital/capargo

Repository files navigation

capargo

Automatically register any Cluster API cluster in your local ArgoCD instance.

The capargo controller (Cluster API for ArgoCD) performs the tedious task of adding a new Cluster API cluster in the ArgoCD installation that's running on the same cluster. This allows for a seamless experience between the creation of a new cluster, and the cluster having all the necessary workloads installed and maintained by ArgoCD.

Installation

The capargo controller can be installed either directly from a YAML manifest or via kustomize templates in the manifests directory. To install the latest released version of the controller from the install.yaml manifest, run the following command:

kubectl apply -f https://github.com/superorbital/capargo/releases/latest/download/install.yaml

Installation instructions for previous releases can be found in capargo releases.

Note

The default installation assumes that ArgoCD is installed in the argocd namespace. This needs to be changed if your cluster's ArgoCD installation is in a different namespace. This is controlled by the --argo-namespace flag on the capargo binary.

Support Matrix

Provider Cluster Control Plane API group/version Supported?
VCluster infrastructure.cluster.x-k8s.io/v1alpha1 Yes
AWSCluster controlplane.cluster.x-k8s.io/v1beta1 Yes

Development

Pre-requisites

You will need the following tools installed in your computer for local development purposes:

For testing your changes, you will additionally need:

Building

To build the binary, simply run:

task build

To build the Docker image, run:

task build-image

Testing

For testing changes, a Kind cluster with all the necessary components can be bootstrapped by running the following task at the root of the repo:

task create-cluster

This will create the Kind cluster, a local container registry, and install ArgoCD and Cluster API + Cluster API Provider vCluster (CAPV).

After this is done, you can retrieve the kubeconfig for the cluster using the command

task get-kubeconfig

which will create a kind-cluster.kubeconfig file that you can use to talk to your cluster.

You will need to push your image of capargo to the local container registry:

docker push localhost:5001/superorbital/capargo:local

After which, you can run the demo script that will create a CAPV cluster for your capargo Pod to interact with.

task install-demo

Cleanup

To clean up the Kind cluster and the local registry:

task cleanup-cluster