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.
- π³ Docker Hub Image
| 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.
