Skip to content

muralikoduri21/devops_task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DevOps and Cloud Engineer Task

A full-stack application platform deployed on AWS using Docker, Terraform, Kubernetes, and GitHub Actions CI/CD pipeline.


🏗️ Architecture

  • Frontend → React.js (Dockerized, served via Nginx)
  • Backend → Node.js REST API (Dockerized)
  • Database → PostgreSQL (Kubernetes StatefulSet)
  • Infrastructure → AWS EKS via Terraform
  • CI/CD → GitHub Actions

🛠️ Tech Stack

Technology Purpose
React.js Frontend UI
Node.js + Express Backend API
PostgreSQL Database
Docker Containerization
Terraform Infrastructure as Code
AWS EKS Kubernetes Cluster
AWS VPC Networking
GitHub Actions CI/CD Pipeline
Kubernetes Container Orchestration

📁 Project Structure

project/
├── .github/
│   └── workflows/
│       └── deploy.yml       # CI/CD Pipeline
├── frontend/
│   ├── Dockerfile
│   ├── package.json
│   └── src/
├── backend/
│   ├── Dockerfile
│   ├── package.json
│   └── server.js
├── k8s/
│   ├── namespace.yaml
│   ├── frontend-deployment.yaml
│   ├── backend-deployment.yaml
│   ├── postgres-statefulset.yaml
│   ├── persistent-volume.yaml
│   └── ingress.yaml
└── terraform/
    ├── main.tf
    ├── vpc.tf
    ├── eks.tf
    ├── iam.tf
    └── variables.tf

🚀 CI/CD Pipeline

Pipeline runs automatically on every push to main branch:

Push to main
     ↓
Job 1: Build & Push Docker Images
     ↓
Job 2: Terraform Apply (AWS Infrastructure)
     ↓
Job 3: Deploy to Kubernetes

☁️ AWS Infrastructure

  • VPC with 2 public subnets in different AZs
  • EKS Cluster with worker nodes
  • Security Groups for network access
  • IAM Roles for EKS permissions

🐳 Docker

Multi-stage builds for both frontend and backend:

  • Frontend → Node builder + Nginx server
  • Backend → Node.js production image

⚙️ Kubernetes

Resource Description
Namespace app-prod
Deployments Frontend + Backend
StatefulSet PostgreSQL
Services ClusterIP for all apps
Ingress NGINX routing
PersistentVolume PostgreSQL storage

🔐 GitHub Secrets Required

Secret Description
DOCKER_USERNAME Docker Hub username
DOCKER_PASSWORD Docker Hub access token
DOCKER_REGISTRY Docker Hub registry URL
AWS_ACCESS_KEY_ID AWS access key
AWS_SECRET_ACCESS_KEY AWS secret key

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors