> ## Content Index
> Fetch the complete content index at: https://trendboxgeek.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# How to Deploy ArgoCD on AWS EKS for GitOps and Self-Healing
- URL: https://trendboxgeek.com/blog/deploy-argocd-eks/
- Published: 2026-08-02T14:21:44.000Z
- Updated: 2026-08-02T14:21:44.000Z
- Author: Pankajbhai Chavda
- Tags: #blog-col

If you followed [How to deploy an AWS EKS cluster using Terraform](https://trendboxgeek.com/blog/aws-eks-cluster-terraform/), you've got a fresh Kubernetes cluster ready to go. If not, spin that up first. Today, we're ditching manual kubectl apply commands and setting up ArgoCD to handle our deployments the GitOps way. We'll install it, deploy a test app, and intentionally break things to watch ArgoCD's self-healing kick in.

## Install ArgoCD on Your Cluster

If your EKS cluster is up and your `kubectl` is authenticated, then installing ArgoCD is straightforward. We just need to create a namespace and apply the official manifests.

Run this command on your terminal.

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

Wait a few minutes. You can watch the pods spin up by running `kubectl get pods -n argocd`. Once everything is running, we are ready to log in.

## Extract the Password and Access the UI

In this step, we generate ArgoCD a random password for the `admin` user. We need to extract that password from the Kubernetes secrets.

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

Copy that password and save it safely. Next, we need to access the ArgoCD web interface. We are not exposing this to the public internet yet; we will use a port-forward.

When we run the below command, this process continuously starts. So, for the below command, we open a new terminal and run the command in the background on it. If you close it, you'll lose access to the UI.

kubectl port-forward svc/argocd-server -n argocd --address 0.0.0.0 8080:443

Open your browser and navigate to:

https://YOUR_SERVER_IP:8080

Open the Home Page as shown in the image below and ignore the SSL warning, log in with the username **admin**, and paste the password you saved earlier.

![Argo's Home Page.](https://trendboxgeek.com/content/images/2026/08/Screenshot-From-2026-07-31-18-14-13--Edited-.png)

## Deploy the Guestbook App

Now, we are going to deploy ArgoCD's official sample app, "Guestbook".

- In the ArgoCD UI, click + New App.
- Application Name: guestbook
- Project: default
- Sync Policy: Automatic (Make sure to check the Self Heal box!)
- Repository URL: [https://github.com/argoproj/argocd-example-apps.git](https://github.com/argoproj/argocd-example-apps.git?ref=trendboxgeek.com)
- Path: guestbook
- Cluster URL: [https://kubernetes.default.svc](https://kubernetes.default.svc/?ref=trendboxgeek.com)
- Namespace: default

Click **Create** at the top. You will instantly see ArgoCD fetch the configuration from GitHub and spin up your pods, services, and deployments in real-time.

To view the app, open another terminal window on your machine and forward its port.

kubectl port-forward svc/guestbook-ui --address 0.0.0.0 8081:80

To watch the Guestbook UI live, open the below link in your browser.

http://YOUR_SERVER_IP:8081

Then, you will see the Guestbook UI live.

## Testing GitOps Self-Healing

ArgoCD doesn't just deploy your app and forget about it; it actively enforces your Git state. Let's test if this actually works. Kill your port-forward with Ctrl+C and nuke the deployment manually.

kubectl delete deployment guestbook-ui

Come back to your ArgoCD dashboard. For a split second, you'll see the app flag as 'Out of Sync'. But because we checked that 'Self Heal' box earlier, ArgoCD instantly notices the missing deployment and spins it right back up to match the Git repo. No manual intervention, no panic—it just fixes it.

## Conclusion

That's it. You've got a working GitOps pipeline on EKS. Moving forward, stop running kubectl apply. Make your changes in Git, push the commit, and let ArgoCD handle the cluster sync.