Argo CD — Declarative GitOps CD for Kubernetes
In this article we will discuss lots of thing about argocd. why argocd becomes so popular now days, what is argocd, installation (GKE Cluster) we will discuss all things in this article. So let’s get started
What is ArgoCD?
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.
Why ArgoCD?
Application definitions, configurations, and environments should be declarative and version controlled. Application deployment and lifecycle management should be automated, auditable, and easy to understand.
How ArgoCD works?
Argo CD follows the GitOps pattern of using Git repositories as the source of truth for defining the desired application state. Kubernetes manifests file can be specified in different ways: kustomize file, helm charts, ksonnet , jsonnet files and yaml.
Architecture
Components:
ArgoCD WebUI / CLI
Interaction component for preforming any task after installing ArgoCD on Cluster.
GitHub Repository
Repository contained all your Manifests-YAML files.
API Server
- application management and status reporting
- invoking of application operations (e.g. sync, rollback, user-defined actions)
- repository and cluster credential management (stored as K8s secrets)
Repository Server
The repository server is an internal service which maintains a local cache of the Git repository holding the application manifests.
- repository URL
- revision (commit, tag, branch)
- application path
Application Controller
The application controller is a Kubernetes controller which continuously monitors running applications and compares the current, live state against the desired target state (as specified in the repo). It detects OutOfSync
application state and optionally takes corrective action.
Redis & Dex-Server
Redis is only used as a throw-away cache and can be lost and rebuilt without loss of service. The Dex-Server uses an in-memory database, and two or more instances would have inconsistent data.
Installation
- kubectl create namespace argocd
- kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
This will download the pod in argocd namespace. In ArgoCD we have 6 components so we have 6 running pods
Install ArgoCD CLI
VERSION=$(curl --silent "https://api.github.com/repos/argoproj/argo-cd/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/')
sudo curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/$VERSION/argocd-linux-amd64
sudo chmod +x /usr/local/bin/argocd
Access The Argo CD API Server
kubectl patch svc argocd-server -n argocd -p ‘{“spec”: {“type”: “LoadBalancer”}}’
If we don’t want to expose the service we can do port forwarding
kubectl port-forward svc/argocd-server -n argocd 8080:443
Get the public ip by using
kubectl get svc argocd-server -n argocd
or we can use localhost:8080
Access the ArgoCD by GUI
Here username is admin
and password we can retrieve from by this command
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath=”{.data.password}” | base64 -d
After successful login this dashboard came
Now from here we can create the app
After apply this manifests file our app deployed on argocd
If any changes happen in github after some time changes will reflect
That’s all for this time here’s some references that can help!