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.
A containerized web application stack (Tomcat + MySQL + RabbitMQ + Memcached) is to be deployed in a robust and scalable fashion with the following requirements:
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) |
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.