Self Managed ArgoCD: Wait, ArgoCD can manage itself?
The answer is yes, ArgoCD can manage itself. But how? You may ask. Then, read this TeraTip to know how you can setup your ArgoCD to manage itself.
First of all, what is ArgoCD? ArgoCD is a GitOps Continuous Delivery tool for Kubernetes, and it can help you by managing all your cluster resources constantly comparing their state on the cluster against the repositories of those resources.
First of all we will create a Minikube cluster for this PoC
Once we got our cluster running let’s proceed installing ArgoCD on the argocd namespace using Helm and the official helm chart from the Argo project.
helm repo add argo https://argoproj.github.io/argo-helm
helm install argo argo/argo-cd -n argocd
Now, it's time to implement something known as the App of Apps pattern.
The App of Apps pattern consists in having an ArgoCD Application which consists of other ArgoCD Applications. You can take this repository as an example: https://github.com/JuanWigg/self-managed-argo
Basically here we have a main application, which is called applications. This main application will synchronize with our self-managed-argo repo, and, on this repo we have all of our other ArgoCD applications, for example a kube-prometheus stack, core applications, elastic search, and so on, but the most important thing is that we have an application for ArgoCD itself.
The main applications looks something like this: