Skip to content

Latest commit

Β 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ End-to-End DevOps GitOps Platform (AWS + Kubernetes)


πŸ“Œ Overview

This project demonstrates a complete DevOps pipeline from infrastructure provisioning to application deployment using modern DevOps tools.

It follows GitOps principles, where Git is the single source of truth and deployments are automated using Argo CD.


🧠 Architecture Diagram

graph TD

A[Developer Push Code] --> B[GitHub Repository]

B --> C[Argo CD GitOps]
C --> D[Kubernetes EKS Cluster]

D --> E[Helm Deployment]
E --> F[Flask App Pods]

F --> G[Service LoadBalancer]

H[Terraform] --> I[AWS Infrastructure]
I --> D

J[Ansible] --> K[Ubuntu DevOps Server]
K --> D

L[Docker] --> M[DockerHub Image]
M --> E

N[Prometheus] --> D
D --> O[Grafana Dashboard]
Loading

πŸ”„ DevOps Workflow

flowchart LR

Code[Code Change] --> Git[GitHub Push]
Git --> Argo[Argo CD Sync]
Argo --> K8s[Kubernetes Deploy]
K8s --> App[Flask App Running]

App --> Monitor[Prometheus]
Monitor --> Grafana[Grafana Dashboard]
Loading

βš™οΈ Deployment Flow

sequenceDiagram
    participant Dev as Developer
    participant Git as GitHub
    participant Argo as Argo CD
    participant K8s as Kubernetes

    Dev->>Git: Push Code
    Git->>Argo: Notify Change
    Argo->>K8s: Sync Deployment
    K8s->>K8s: Update Pods
Loading

πŸ› οΈ Technologies Used

  • AWS (EC2, EKS)
  • Terraform (Infrastructure as Code)
  • Ansible (Configuration Management)
  • Docker (Containerization)
  • Kubernetes (EKS)
  • Helm (K8s Packaging)
  • Prometheus & Grafana (Monitoring)
  • Argo CD (GitOps)

πŸ“‚ Project Structure

end-to-end-devops-gitops-platform/
β”œβ”€β”€ terraform/
β”œβ”€β”€ ansible/
β”œβ”€β”€ app/
β”œβ”€β”€ helm/
β”‚   └── flask-app/
β”œβ”€β”€ argocd/
β”œβ”€β”€ images/
β”œβ”€β”€ README.md
└── .gitignore

βš™οΈ Step-by-Step Implementation

1️⃣ Infrastructure Provisioning (Terraform)

cd terraform
terraform init
terraform apply

2️⃣ Server Configuration (Ansible)

cd ansible
ansible-playbook -i inventory.ini playbook.yml

3️⃣ Docker Build & Push

docker buildx build \
  --platform linux/amd64 \
  -t minabisa90/devops-gitops-flask:v1 \
  --push .

4️⃣ Create Kubernetes Cluster

eksctl create cluster --name devops-gitops-eks
kubectl get nodes

5️⃣ Deploy Application (Helm)

helm install flask-app helm/flask-app
kubectl get pods

6️⃣ Monitoring Setup

helm install monitoring prometheus-community/kube-prometheus-stack -n monitoring

7️⃣ GitOps Deployment (Argo CD)

kubectl apply -f argocd/application.yaml

πŸ“Έ Screenshots

πŸ—οΈ Terraform Infrastructure

Terraform


βš™οΈ Ansible Configuration

Ansible


🐳 Docker Image (DockerHub)

Docker


☁️ EKS Cluster Nodes

EKS Nodes


πŸ“¦ Kubernetes Pods

Pods


🌐 Service LoadBalancer

Service


πŸš€ Application Running

App


πŸ“Š Grafana Dashboard

Grafana


πŸ” Argo CD GitOps Sync

ArgoCD


πŸ” Best Practices Implemented

  • Infrastructure as Code (Terraform)
  • Configuration Automation (Ansible)
  • Containerization (Docker)
  • Kubernetes Declarative Deployment
  • Helm Chart Packaging
  • Monitoring & Observability
  • GitOps Continuous Deployment

🎯 Key Learnings

  • Built a full DevOps pipeline from scratch
  • Automated infrastructure and deployments
  • Deployed applications on Kubernetes (EKS)
  • Implemented GitOps with Argo CD
  • Integrated monitoring using Prometheus & Grafana

πŸš€ Future Improvements

  • Add CI/CD (GitHub Actions or Jenkins)
  • Add Kubernetes Ingress with AWS Load Balancer
  • Implement auto-scaling (HPA)
  • Secure secrets using AWS Secrets Manager

πŸ‘¨β€πŸ’» Author

Mina Bisa


⭐ Support

If you like this project, give it a ⭐ on GitHub!

About

Cloud-native DevOps platform automating AWS infrastructure, Kubernetes deployment, GitOps delivery, and observability on Amazon EKS.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages