This project demonstrates how to deploy a simple application to a Kubernetes cluster using ArgoCD and GitOps principles. It integrates advanced Kubernetes features like Ingress, Autoscaling, and Secrets/ConfigMaps, all managed declaratively via Git.
- 🧠 GitOps Tool: ArgoCD
- 📦 Container Platform: Kubernetes
- ⚙️ Manifests Management: Kustomize
- 🌐 Exposure: Ingress Controller (NGINX)
- 📊 Scalability: Horizontal Pod Autoscaler (HPA)
- 🔐 Security: ConfigMap & Secrets
- 🧪 Deployment Strategy: Continuous Delivery with Git sync
argocd-app/
├── dev/ # Kubernetes application manifests
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── ingress.yaml
│ ├── hpa.yaml
│ ├── configmap.yaml
│ ├── secret.yaml
│ └── kustomization.yaml
├── argocd/ # ArgoCD application declaration
│ └── application.yaml
└── README.md
| Feature | Status |
|---|---|
| ArgoCD integration with K8s | ✅ Done |
| Ingress (NGINX) for external access | ✅ Done |
| Horizontal Pod Autoscaling (HPA) | ✅ Done |
| ConfigMap & Secret management | ✅ Done |
| GitOps workflow with Kustomize | ✅ Done |
| ArgoCD UI access with port-forward | ✅ Done |
- A running Kubernetes cluster (e.g. Minikube, KinD)
kubectland optionallyargocdCLI- ArgoCD installed on your cluster
# Create the ArgoCD namespace
kubectl create namespace argocd
# Install ArgoCD components
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml# Forward ArgoCD API to localhost:8080
kubectl port-forward svc/argocd-server 8080:443 -n argocdNavigate to: https://localhost:8080
# Retrieve initial admin password
kubectl -n argocd get secret argocd-initial-admin-secret \
-o jsonpath="{.data.password}" | base64 --decode && echo
⚠️ You can (and should) change this password after first login.
- You push changes to this GitHub repo.
- ArgoCD automatically syncs the changes to your Kubernetes cluster.
- Changes like Ingress rules, autoscaling, or environment configs are applied without manual
kubectl.
| Resource | Link |
|---|---|
| Install ArgoCD | ArgoCD Installation Docs |
| Login with CLI | Login Docs |
| Declarative Setup | Declarative Config Guide |
- 🔐 RBAC configuration per namespace
- 📊 Prometheus + Grafana integration
- 🚀 Canary / Blue-Green Deployments
- 🔁 Application Rollback support
- 🔒 Network Policies for pod communication
- ⚙️ CI/CD with GitHub Actions (build + auto-sync)
Contributions and ideas are welcome! Feel free to open issues or submit PRs.
This project is open-source and available under the MIT License.
