Skip to content

This project demonstrates how to deploy a simple application to a Kubernetes cluster using ArgoCD and GitOps principles.

Notifications You must be signed in to change notification settings

JawherKl/argocd-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

23 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ ArgoCD App with Kubernetes GitOps

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.


🧰 Tech Stack

  • 🧠 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

πŸ“‚ Repository Structure


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


βœ… Features Implemented

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

πŸ§ͺ Getting Started

πŸ”§ Prerequisites

  • A running Kubernetes cluster (e.g. Minikube, KinD)
  • kubectl and optionally argocd CLI
  • ArgoCD installed on your cluster

πŸ“₯ Install ArgoCD

# 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

🌐 Access ArgoCD UI

# Forward ArgoCD API to localhost:8080
kubectl port-forward svc/argocd-server 8080:443 -n argocd

Navigate to: https://localhost:8080

πŸ”‘ Login Credentials

# 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.


πŸ” How It Works

  1. You push changes to this GitHub repo.
  2. ArgoCD automatically syncs the changes to your Kubernetes cluster.
  3. Changes like Ingress rules, autoscaling, or environment configs are applied without manual kubectl.

πŸ“Έ Screenshots

ArgoCD Dashboard


πŸ“¦ Docker Image Used


πŸ”— Useful Links

Resource Link
Install ArgoCD ArgoCD Installation Docs
Login with CLI Login Docs
Declarative Setup Declarative Config Guide

πŸ› οΈ Next Features To Implement

  • πŸ” 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)

🀝 Contributing

Contributions and ideas are welcome! Feel free to open issues or submit PRs.


πŸ“„ License

This project is open-source and available under the MIT License.

About

This project demonstrates how to deploy a simple application to a Kubernetes cluster using ArgoCD and GitOps principles.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published