I've had this idea for awhile...about 1.5 weeks actually. I was at work trying to make the ArgoCD docs work for a certain patter with no luck. I came home and kept trying things and then it just kinda clicked of what to try and then I got mad because it shouldn't have taken so long to fit my problem. Ok I'm jumping ahead. Let's start at the top... ## What is ArgoCD [ArgoCD](https://argo-cd.readthedocs.io/en/stable/) is a GitOps tool (hate the name but important later) to auto deploy apps/services/containers into kubernetes clusters. From my research there is a similar tool called [Flux](https://fluxcd.io/), but there was like a mass migration away from this tool or something of the sort. I'm not too sure why you should choose one over the other so I won't be talking about that at all. ## What went well? Honestly the experience of setting everything up was super easy and I enjoyed it. I don't have enough space in my homelab but I will either replicate my test lab on a new server or build something in the cloud for testing (depends on the funds). The community is also really healthy and doing well which is nice. Argo is a CNCF project so of course people are always looking to improve it. For me I really enjoy that I can find a lot of talks about the tool for different things on Youtube. I think the coolest part for of Argo is how projects and applications/applicationsets are broken up. So a project can be...well the name of your project. Let's use one of my mobile apps as an example to walk this through. Medical Notes is project with 3 pods and an ingress service. This setup results in 2 helm charts going through my pipeline. Now that I have my project setup and connected in Argo I'm going to write the code for an appset. I picked an appset over an application for a few reasons: 1. Appsets seem to be the prefered standard. 2. This creates a clean view in the ui where you can click on web-appset and it breaks down into it's own view with all the k8s resources from our helm charts. You can have Argo go through the folders in your helm charts and deploy things based on your `values.yml`. It looks really nice and clean. Now I've deploy using an application as well. That's cool if you just have something like `nginx-pod.yml` and you are done. That's not the reality of most project though. In the end you get this really clean view of your application broken down by project > appset > internals. I think it gives a really clean view of what's going on for the devs and automation teams on different levels. Lastly because I love security I'll mention here that setting up the security rules weren't too bad. A little weird to figure out how set it up at the project level but once you got it you can create as many layers of separation as your heart desires. ## What didn't go well? I'm going to start this with complaining. Gitops is a stupid name and I get why people made it but gross. Now that I got that off my chest...Gitops is key and not everyone uses Git as a source of truth. Walk with me... Say that your on a team and your team wants to stay "open". You might run similar helm charts or docker containers with different values under the hood. You set those values during your ci/cd pipeline and push them to your favorite repository (artifactory/nexus/gitlab repository/ect). Now you want Argo to see that new helm chart/container and auto deploy it. Well that won't happen and I'll explain why. Argo is truly at it's crispiest when git is your source of truth to pull from not a repository. I learned this the hard way. You might also be wondering what's the difference? Ah great question. To deploy a helm chart you need to have an image name and tag. If you aren't using latest, and you want to auto-update how do you handle that? That's right ladies and gents you now have to go back to your Argo application code and update the tag it's looking for. Kinda defeats the point of automation honestly. At this time I haven't really looked into or figured out a cleaner way because...I have a cert to get. I think there should be a better way to use your repository as the source of truth and git as more of a template storage, but again this isn't an immediate focus of mine. --- I really do hope I can do more to show the connection between Argo cd and other tools over the next few months but right now I need to focus on becoming a kubenetes sme. Anyways thanks for reading my opinions.