Preyash Yadav
Back to projects
Project 04Platform2025

ProdPreview

Designed a GitOps pull-request preview pipeline for a multi-service monorepo using GitHub Actions, Docker, Argo CD, Terraform, and Helm to provision isolated EKS namespaces with SHA-pinned images before merge.

Views
ProdPreview pipeline preview
Built with
  • Kubernetes
  • Argo CD
  • Terraform
  • Helm
  • Docker
  • AWS EKS
  • GitHub Actions

Overview

Production-like preview environments for every PR. This repo deploys a React frontend, Node.js API, and Python worker into per-PR Kubernetes namespaces using Argo CD + GitHub Actions.

Core idea: PR opens → build/push images tagged by PR head SHA → Argo CD deploys pr- namespace → review in a production-like cluster → merge to main.

How It Works

Terraform creates your AWS network, database, and EKS cluster. (infra/terraform/)

Docker builds images for each service and pushes to Docker Hub.

Argo CD deploys per-PR environments using the umbrella chart in deploy/helm/app.

Repo Layout

services/api/ Node.js + Express API

services/frontend/ React + Vite UI + Express server (/health.json)

services/worker/ Python worker that polls the API

deploy/helm/services/ Source Helm charts for each service

deploy/helm/app/ Umbrella chart used by Argo CD (vendored subcharts in charts/)

deploy/argocd/ Argo CD ApplicationSet for PR previews

infra/terraform/ AWS VPC + EKS + RDS

sync-helm-charts.sh Sync service charts into the umbrella chart vendored under deploy/helm/app/charts/

Written up in preyashyadav/ProdPreview