In this project, I deployed a Python-based microservices application on AWS using a Kubernetes cluster (EKS), Docker for containerization, and Helm for resource management. The end goal of the application is to convert uploaded video files into MP3 audio format, delivering the output back to the user via a notification system.
The app consists of multiple services such as authentication, file conversion, gateway, and notification — each built and deployed as independent microservices. The project also incorporates MongoDB, PostgreSQL, and RabbitMQ to support key application features like data storage, queue processing, and service communication.
1. Setting up the Prerequisites
Before getting started, I ensured that the following were installed and configured on my local environment:
AWS CLI & IAM credentials
kubectl
Python
Docker
Helm
2. Creating the Kubernetes Cluster (EKS)
I created an EKS cluster and node group. Once active, I confirmed the nodes (EC2 instances) were up and running.
3. Connecting EKS Cluster to CLI
The cluster was then connected to the CLI using aws eks update-kubeconfig, allowing further operations using kubectl.
4. Deploying Databases and Message Queue
The project uses the following backend services:
MongoDB for the auth service
PostgreSQL for token storage
RabbitMQ for messaging between services
All were deployed using Helm charts.
5. Building and Pushing Microservice Images
Each service — auth, converter, gateway, and notification—was containerized using Docker. Images were pushed to Docker Hub.
docker build -t your-image-name .
docker push your-image-name
6. Deploying Microservices with Helm
After building the images, I created Helm charts for each microservice and deployed them to the EKS cluster.
7. Verifying Functionality
- Received a token from PostgreSQL
- Accessed the email notification
- Successfully downloaded and played the converted MP3 file
This project demonstrates how to deploy a full-fledged Python microservices app with scalable architecture using AWS EKS, Docker, and Helm. It covers essential DevOps workflows and can be a great template for production-grade deployments.
Here’s the Repo on GitHub.
Let’s connect on LinkedIn!
Top comments (0)