GitOps deployment project using Argo CD, Kubernetes, Amazon EKS, Docker, and GitHub. The project demonstrates how declarative Kubernetes manifests can drive automated delivery, drift detection, and self-healing in an EKS cluster.
- Provisioning and operating an Amazon EKS cluster for GitOps delivery.
- Deploying Argo CD into Kubernetes.
- Defining an Argo CD
Applicationthat watches this GitHub repository. - Automatically syncing Kubernetes manifests from Git to EKS.
- Using
pruneandselfHealto correct manual drift. - Documenting troubleshooting, screenshots, and AWS cost cleanup.
Developer commits Kubernetes changes
|
v
GitHub repository
|
v
Argo CD watches repo path: k8s/
|
v
Amazon EKS cluster
|
v
Kubernetes deployment and service
|
v
Demo application exposed through LoadBalancer
| Area | Tools |
|---|---|
| Cloud | AWS, Amazon EKS |
| GitOps | Argo CD |
| Orchestration | Kubernetes, kubectl, eksctl |
| Containerization | Docker, Nginx |
| Source control | GitHub |
.
|-- app/
|-- argocd/
|-- docs/
|-- infra/
|-- k8s/
|-- screenshots/
`-- README.md
The Argo CD application lives in:
argocd/application.yaml
Key settings:
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=trueThis means Argo CD:
- Automatically applies Git changes to the cluster.
- Removes resources that no longer exist in Git.
- Restores the desired state when manual changes create drift.
- Creates the target namespace when needed.
| Evidence | Screenshot |
|---|---|
| EKS cluster active | screenshots/01-eks-cluster-active.png |
| Argo CD pods running | screenshots/03-argocd-pods-running.png |
| Argo CD dashboard | screenshots/05-argocd-dashboard.png |
| Application synced and healthy | screenshots/07-argocd-app-synced-healthy.png |
| Version update committed | screenshots/09-github-version-update-commit.png |
| Version 2 synced | screenshots/10-argocd-app-synced-version-2.png |
| Manual drift created | screenshots/12-manual-drift-created.png |
| Self-healing confirmed | screenshots/13-argocd-self-healed.png |
| AWS cleanup confirmed | screenshots/14-aws-cleanup-confirmed.png |
Create the EKS cluster:
eksctl create cluster -f infra/eks-cluster.yamlInstall Argo CD:
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yamlApply the Argo CD application:
kubectl apply -f argocd/application.yamlVerify the application:
kubectl get pods -n gitops-demo
kubectl get svc -n gitops-demo- How Git becomes the source of truth for Kubernetes deployments.
- How Argo CD syncs Kubernetes manifests from a repository path.
- How self-healing restores desired state after manual drift.
- How pruning removes resources that should no longer exist.
- How to document EKS cleanup to avoid unnecessary AWS charges.
This project demonstrates a modern GitOps workflow with Argo CD and EKS, including automated delivery, drift correction, proof screenshots, troubleshooting notes, and cost-control awareness.