Local Workstation
Application code, Docker resources, Helm charts, Kubernetes configuration, Terraform, and frontend changes are developed and validated locally.
End-to-end DevOps project showcasing containerization, orchestration, CI/CD, Infrastructure as Code, monitoring, security, and cloud deployment.
The platform evolved from direct server deployments into a GitOps-driven Kubernetes architecture. GitHub Actions now handles Continuous Integration, while Argo CD continuously reconciles the Kubernetes cluster with the desired state stored in Git.
Application code, Docker resources, Helm charts, Kubernetes configuration, Terraform, and frontend changes are developed and validated locally.
Git stores the application code, Helm desired state, infrastructure configuration, and GitOps definitions.
CI builds the Docker image, performs Trivy security scanning, pushes immutable Git-SHA images to Docker Hub, and updates Helm values in Git.
Stores versioned application images using immutable Git commit tags, providing direct traceability from source commit to running container.
Argo CD watches the Git repository, detects drift, renders the Helm chart, and automatically reconciles Kubernetes with the desired Git state.
Helm templates define reusable Kubernetes resources while values.yaml centralizes image tags, replica counts, networking, resource limits, and deployment metadata.
Terraform provisions the Kubernetes worker node in AWS inside the same VPC as the control-plane EC2 instance.
The two-node K3s cluster runs the Node.js replicas, Redis, Traefik, Prometheus, Grafana, cert-manager, Argo CD, and supporting workloads.
Traefik exposes the application, Grafana, and Argo CD through custom HTTPS endpoints secured using cert-manager and Let's Encrypt.
Public traffic enters through Traefik and is routed to a stable Kubernetes Service, which distributes requests across three healthy Node.js application replicas.
Users access the platform through ipg-devops.online over secure HTTPS.
Routes public requests to the internal Node.js Kubernetes Service based on the configured hostname.
Provides one stable ClusterIP endpoint and distributes traffic across healthy application Pods.
Three Node.js Pods run across the K3s control-plane and worker nodes.
Stores shared visitor analytics, page views, browser visitor identities, and deployment metadata across all replicas.
Collects node, Kubernetes, Deployment, Service, Pod, and cluster health metrics.
Visualizes Prometheus metrics through detailed dashboards and historical resource views.
Automates Let's Encrypt certificate creation and renewal for secure HTTPS access.
GitHub Actions is responsible for Continuous Integration, while Argo CD provides Continuous Delivery. Production no longer requires GitHub Actions to SSH into the Kubernetes control plane.
The project started as a manually deployed static website served by Nginx on an AWS EC2 instance.
The application was containerized using Docker and integrated with GitHub Actions for automated image builds and delivery.
Docker Compose introduced multi-container local orchestration and Redis-backed application state.
Raw Kubernetes manifests replaced Docker Compose for production deployment, introducing Deployments, Services, rolling updates, and Traefik Ingress.
Terraform provisioned a dedicated AWS EC2 worker node inside the same VPC as the control plane, evolving the platform into a two-node Kubernetes cluster.
Full-stack monitoring was added using Prometheus, Grafana, Node Exporter, kube-state-metrics, and live Kubernetes health APIs exposed by the application.
Raw Kubernetes manifests were converted into a Helm chart with centralized values, reusable templates, release history, and configurable deployment metadata.
Deployment ownership moved from SSH-driven GitHub Actions to Argo CD. Git became the source of truth, with automated sync, self-healing, pruning, and immutable Git-SHA container images.
The following capabilities are currently implemented and running in the live AWS-hosted Kubernetes environment.
Introduce Grafana Loki and a Kubernetes log collector to centralize application, Traefik, Kubernetes, and system logs inside Grafana.
Scale application replicas automatically according to CPU, memory, or custom metrics.
Expand Prometheus Alertmanager rules with actionable notifications, runbooks, and incident response flows.
Add NetworkPolicies, stricter RBAC, security contexts, secret management, and stronger workload isolation.
Introduce development, staging, and production environments using separate Helm values and Argo CD Applications.
Introduce canary or blue/green deployments for safer production releases.
Add automated Kubernetes backups and documented recovery procedures.
Open the production application and inspect the live cluster dashboard.
View the live GitOps application state, synchronization status, Kubernetes resource health, and deployment history.
Explore the source code, Kubernetes resources, Terraform infrastructure, and CI/CD workflow.
View detailed Kubernetes, node, Pod, and infrastructure monitoring dashboards.
View my contact information and professional links.
This project continues to evolve as new DevOps, cloud-native, automation, security, and observability technologies are introduced. Every implementation is developed locally, version-controlled in GitHub, validated through CI/CD, and deployed to the live Kubernetes environment.