Overview

This document outlines the design and deployment of a production-ready, highly available, fault-tolerant multi-tier web application using Kubernetes. The application was containerized and tested prior to deployment, and the infrastructure provisioning was carried out using kOps on AWS.


Scenario

A containerized web application stack (Tomcat + MySQL + RabbitMQ + Memcached) is to be deployed in a robust and scalable fashion with the following requirements:


Architecture Overview

image.png

Technologies Used

Layer Tool/Service
Containerization Docker (Images on DockerHub)
Orchestration Kubernetes
Infrastructure AWS (EBS, EC2, S3, Route53)
Cluster Provisioning kOps
Routing NGINX Ingress Controller
CI Interface Vagrant (VM for kubectl + kOps CLI)

Application Stack

Component Description
Tomcat (WAR) Main web application (Java)
MySQL Stateful backend database
Memcached Cache layer
RabbitMQ Message broker
NGINX Ingress External traffic routing

Each service runs in its own Kubernetes Deployment. For internal communication, ClusterIP services are configured. External traffic reaches the application through an Ingress controller backed by an AWS ELB.