Vasu Patel logoVasu Patel
← Back to projects

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.