Skip to content

AhmadProjects-git/ThreeTierAppDeployment-EKS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌟 #ThreeTierAppDeployment-EKS Challenge

🧩 Overview

Welcome to the Three-Tier App Deployment Challenge by @AhmadProjects-git! This repository showcases the deployment of a Three-Tier Web Application built with ReactJS βš›οΈ, NodeJS πŸš€, and MongoDB πŸƒ, deployed on Amazon EKS ☸️ (Elastic Kubernetes Service).

The goal is to demonstrate modern DevOps practices, scalable infrastructure, and end-to-end CI/CD automation using AWS Cloud services.

🎯 Deploy, Enhance, and Learn! Feel free to clone, customize, and extend this setup β€” perfect for portfolio or production-ready Kubernetes projects.


βš™οΈ Prerequisites

Before starting, make sure you have:

  • 🐳 Basic knowledge of Docker, Kubernetes, and AWS
  • ☁️ An AWS account with necessary permissions

🧱 Project Structure

πŸ–₯️ Application Code

Located in the Application-Code directory β€” contains the frontend (ReactJS) and backend (NodeJS) source code for the three-tier application.

πŸ” Jenkins Pipeline Code

In the Jenkins-Pipeline-Code directory β€” includes Jenkins pipeline scripts for CI/CD automation, ensuring smooth build, test, and deploy processes.

🧰 Jenkins Server Terraform

Found in Jenkins-Server-TF β€” Terraform scripts that automate Jenkins server provisioning on AWS, simplifying infrastructure management.

☸️ Kubernetes Manifests Files

In Kubernetes-Manifests-Files β€” YAML manifests for deploying the app on EKS, managing pods, services, and deployments.


🧠 Tools & Technologies Explored

πŸ› οΈ Core Tools:

  • Terraform & AWS CLI for Infrastructure as Code
  • Jenkins, SonarQube, Kubectl, and Helm for CI/CD setup
  • Prometheus, Grafana for Monitoring
  • ArgoCD for GitOps

🚒 Deployment Flow:

  1. IAM user setup & Terraform provisioning 🧩
  2. Jenkins deployment with AWS integration βš™οΈ
  3. EKS cluster creation & load balancer setup ☸️
  4. Secure Docker image storage in ECR 🐳
  5. Helm-based monitoring stack πŸ“Š
  6. ArgoCD for GitOps automation πŸš€

πŸ“ˆ This journey covers everything from infrastructure to continuous delivery β€” the full DevOps lifecycle!


πŸ“˜ Getting Started

For a detailed step-by-step guide, check out my detailed DevSecOps walkthrough.

Step 1: IAM Configuration

# Create a user with AdministratorAccess
aws iam create-user --user-name eks-admin

Generate and configure access keys.

Step 2: EC2 Setup

Launch an Ubuntu instance and SSH into it:

ssh -i "key.pem" ubuntu@<EC2-IP>

Step 3: Install AWS CLI

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
sudo apt install unzip -y
unzip awscliv2.zip
sudo ./aws/install
aws configure

Step 4: Install Docker

sudo apt update
sudo apt install docker.io -y
sudo usermod -aG docker $USER
docker ps

Step 5: Install kubectl

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/kubectl
chmod +x ./kubectl && sudo mv ./kubectl /usr/local/bin
kubectl version --short --client

Step 6: Install eksctl

curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
eksctl version

Step 7: Create an EKS Cluster

eksctl create cluster --name three-tier-cluster --region us-west-2 --node-type t2.medium --nodes-min 2 --nodes-max 2
aws eks update-kubeconfig --region us-west-2 --name three-tier-cluster
kubectl get nodes

Step 8: Deploy Manifests

kubectl create namespace workshop
kubectl apply -f .

Step 9: Setup AWS Load Balancer

curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.5.4/docs/install/iam_policy.json
aws iam create-policy --policy-name AWSLoadBalancerControllerIAMPolicy --policy-document file://iam_policy.json

Step 10: Install Load Balancer Controller

helm repo add eks https://aws.github.io/eks-charts
helm repo update
helm install aws-load-balancer-controller eks/aws-load-balancer-controller -n kube-system --set clusterName=three-tier-cluster --set serviceAccount.create=false --set serviceAccount.name=aws-load-balancer-controller

🧹 Cleanup

eksctl delete cluster --name three-tier-cluster --region us-west-2

Then:

  • Stop or terminate EC2 instances
  • Delete load balancers and security groups to avoid extra costs

🀝 Contribution Guidelines

  1. 🍴 Fork this repository
  2. 🌱 Create your feature branch (git checkout -b feature/amazing-feature)
  3. πŸ’» Commit your changes (git commit -m "Added awesome enhancement")
  4. πŸš€ Push to your branch (git push origin feature/amazing-feature)
  5. πŸ” Open a Pull Request

πŸ† Rewards

🎁 The best implementations or enhancements may be showcased on this repository! Share your creative deployments and GitOps workflows.


πŸ’¬ Support

Having issues or questions? Open an issue here β€” let’s troubleshoot together!


Happy Learning! πŸš€πŸ‘¨β€πŸ’»πŸ‘©β€πŸ’» Maintained by: @AhmadProjects-git


Would you like me to also create a short version for the GitHub β€œAbout” section (the 1–2 line repo description + tags for visibility like #AWS #DevOps #Kubernetes #EKS)?

About

πŸŽ“ Hands-on DevOps project showcasing how to deploy a Three-Tier Web Application on Amazon EKS ☸️ using Docker 🐳, Kubernetes, and AWS Cloud Services ☁️ β€” perfect for learning modern Cloud & DevOps practices πŸš€.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors