All About ArgoCD, A Beginner's Guide

Open Source Enthusiast || DevOps Practitioner || Cloud Computing || Tech Blogger || CNCF Ambassador || AWS Community Builder
Search for a command to run...

Open Source Enthusiast || DevOps Practitioner || Cloud Computing || Tech Blogger || CNCF Ambassador || AWS Community Builder
No comments yet. Be the first to comment.
Kubernetes is an open source container-orchestration tool which is widely used in the industry for automating application deployments, auto-scaling and management. Creating a Kubernetes(k8s) cluster is quite a tedious task. But its not anymore if usi...
Jenkins has been the go-to tool for Continuous Integration (CI) since its inception, a pioneer that made automation a standard practice in software development. It has completely revolutionised the way world thinks of Continuous Integration (CI) and ...

The official Kubernetes Dashboard has been deprecated. With the Kubernetes Dashboard officially deprecated, many teams are reassessing how they manage visibility and operations in Kubernetes environments and for many teams, this didn’t change much da...

Manage the third-party vaults with External Secrets Operator

Kubernetes has been one of the most adopted technologies in the last couple of years. According to the 2021 Cloud Native Survey conducted by “The Cloud Native Computing Foundation” where they received around 3,829 responses overall, around 96% of the...

Building a Helm chart and managing it, are two different aspects of packaging an application for Kubernetes. Helm is efficient enough to package a complex K8s application and deploy it. When it comes down to app management, there are certain challeng...

ArgoCD, being one of their 1st in the market known for having a declarative GitOps based deployment over Kubernetes is one of the most adopted Continuous Delivery tool. It has been known for its excellent application deployment and management over Kubernetes and features such as auto healing clusters, user-access management, status check, etc. It is open-sourced on github under Apache 2.0 License.
There are already hell lots of tools in the market, so why do we need another one? To justify the existence of ArgoCD, let's try to understand the workflow for application deployment before-and-after ArgoCD.
Before the existence of ArgoCD, the pipeline seems something like the image above. A common ci-cd tool is used for both the Continuous Integration and Continuous Deployment.
All these jobs/tasks are being performed by a ci-cd tool. This is how traditional ci-cd workflow works before the existence of ArgoCD. However there are some challenges in this workflow.
After the ArgoCD was launched in the market, the complete workflow has been changed. As you can see in the image, the Continuous Integration and Continuous Deployment has been separated now. ArgoCD uses declarative GitOps based deployment which states that the best practices is to have two different git repositories, one for application source code and another for deployment manifest files.
This is how, the respective ci-cd tool is limited to CI and ArgoCD handles the CD part and thus separating both the operations. There are many different advantages of using this workflow, some of them are -
So, these are some of the major advantages of the Workflow after ArgoCD. Now let's dive into ArgoCD and do some practical stuffs.
As we have seen some background concepts of ArgoCD and its need, let dive into some hands-on part. There are two different ways to install and setup ArgoCD in you cluster,
Let's look into each of these.
[Note: kubectl command must be installed and kubeconfig file should be at the default location(~/.kube/config) before installing argocd]
Just with few commands you can have your ArgoCD installed in your cluster and ready to deploy an application over it. Please execute the below commands for installation -
Create a namespace argocd where all ArgoCD resources will be installed
kubectl create namespace argocd
Install all resources in the created namespace
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
After installation, you need to access the dashboard. There are different methods given in their documentation for accessing the dashboard. We will be using port-forward as we are installing in our local machine. Please execute the command below -
kubectl port-forward svc/argocd-server -n argocd 8080:443
Now your ArgoCD dashboard can be accessed in 127.0.0.1:8080 as you can see in the image below.

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
Congratulation 🥳 You have successfully logged into the argocd dashboard. Now, this was one of the method. It can also be installed using helm chart. Let's see how.
Recently argo-project has launched their official helm-chart support for ArgoCD, which enables us to install it with helm as well. Please execute the following command to install ArgoCD with helm -
Add the helm repository in your system
helm repo add argo https://argoproj.github.io/argo-helm
Now install the ArgoCD helm chart
helm install my-release argo/argo-cd
The advantage of installing with helm chart is that, you can easily provide the configuration as you want during the installation. For details of the parameters support by ArgoCD helm chart, please have a look at this detailed README
After installation, to access the dashboard and credentials, you can follow the same commands as we did earlier.
[Note: Make sure to remove namespace i.e, -n argocd if you have not provided any namespace during the installation from commands to access dashboard & credentials. To provide the namespace, append this with helm install command --create-namespace --namespace argocd]
This is how easily you can install ArgoCD with the two different methods. For detailed documentation of getting started with ArgoCD, please have a look at this. Now, let's deploy a simple application and configure it to manage by ArgoCD.
For any application to be deployed and managed by ArgoCD, we need to create a config file say, application.yaml which will have all the configurations required by ArgoCD containing the repository URL to sync with, Path where all manifests are being stored which needs to be deployed, namespace, and other configs. Here's a demo project which we will deploy in our cluster having all yamls and application.yaml file with bare minimum configs.
Let's deploy our application. Please follow along with the following steps.
kubectl apply -f application.yaml

Now only just by applying the ArgoCD application config file, all other k8s yamls will automatically gets deployed and synced with the cluster. In the below image you can see that, the application, go-app-argo-config is responsible for creating all other resources.

If we want to update the deployment, service or add any other k8s manifests (yamls), we simply need to makes the changes and push in the github repository synced with it and rest will be taken care ArgoCD. So, this was all about ArgoCD which you need to kick-start and play around it. If you have any doubts or suggestions, please feel free to comment it down, I would be happy enough to answer all your queries. For more details about ArgoCD please feel free to check out their Github Repository
As you have seen in the blog, ArgoCD is specifically used for deployment and for other operations you still need other tools. Devtron is an ecosystem of open source tools for Kubernetes. Devtron also uses ArgoCD for GitOps driven deployment along with other industry recognized open source tools like Prometheus and Grafana (for Monitoring), Clair (for image scanning), Casbin (for rbac auth implementation) and many more open source and enterprise level tools all integrated seamlessly in one package.
Currently I am working on another blog, where I will be explaining how Devtron leverages ArgoCD and other tools to provides a seamless experience of the complete Software Delivery lifecycle on Kubernetes.