2020
Containerized Flask API on AWS EKS
Cloud-native microservice with full CI/CD
FlaskDockerKubernetesAWS EKSCodePipelineJWT
Problem
A Flask API needs a deployment path that's reproducible (same container behavior in dev and prod), horizontally scalable under load, and doesn't leak credentials into source control or container images.
Architecture
GitHub → AWS CodePipeline → CodeBuild → EKS. A commit triggers CodeBuild to build and test the Docker image, CodePipeline promotes it, and the Flask API runs as a pod on a Kubernetes cluster on EKS, with JWT handling request authentication and AWS Parameter Store injecting secrets at runtime instead of baking them into the image.
Key decisions
- —Parameter Store over hardcoded env vars or secrets in the image — credentials never touch source control or the container filesystem at rest.
- —EKS over a simpler single-instance deploy — the point of the exercise was learning real orchestration (health checks, load balancing, pod scheduling), not just getting an API online.
- —CodePipeline/CodeBuild triggered directly on GitHub commits — build and deploy stay in lockstep with source, no manual promotion step.
Still being written up
Worth adding: what the health-check and rollback strategy looked like if a bad deploy reached the cluster.