Three-Tier Architecture
The infrastructure is divided into three layers, each building on the previous one:Layer 1: Infrastructure
The foundation layer provisions core AWS infrastructure:- VPC & Networking: Virtual Private Cloud, subnets, NAT gateways
- EKS Cluster: Kubernetes cluster and node groups
- Tailscale VPN: Secure network access via subnet router
- Vault Infrastructure: KMS keys and DynamoDB tables for secrets management
Layer 2: Platform
The platform layer deploys essential Kubernetes components:- AWS Load Balancer Controller: Manages ALBs for ingress
- Cert Manager: Automated TLS certificate management
- External Secrets Operator: Syncs secrets from Vault to Kubernetes
- Vault Helm: Deploys Vault server on Kubernetes
Layer 3: Apps
The applications layer deploys user-facing services:- ArgoCD: GitOps continuous delivery
- Traefik: Ingress controller and routing
- Application TLS Certificates: Automated cert provisioning
- Vault Policies: Application-specific access controls
Layer Dependencies
Each layer depends on outputs from the previous layer:Directory Structure
The Terraform code is organized as follows:Deployment Flow
The complete deployment follows this sequence:1
Bootstrap
Create S3 bucket and DynamoDB table for Terraform state management
2
Infrastructure Layer
Deploy VPC, EKS cluster, Tailscale VPN, and Vault infrastructure
3
Platform Layer
Install Kubernetes platform components and initialize Vault
4
Apps Layer
Deploy ArgoCD, Traefik, and application configurations
Next Steps
Prerequisites
Set up required tools and accounts
Bootstrap
Initialize Terraform state backend