DEV Community

Cover image for Deploying a Python Microservices App on AWS with EKS, Docker, Helm, and RabbitMQ
Ngozi
Ngozi

Posted on

Deploying a Python Microservices App on AWS with EKS, Docker, Helm, and RabbitMQ

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

Confirm that all needed are installed


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.

Cluster created and active


Node group created/Instances 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.

MongoDB, PostgreSQL, and RabbitMQ deployed


Queues created in RabbitMQ after accessing RabbitMQ via port 30004


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

All 4 images built and pushed to DockerHub


6. Deploying Microservices with Helm

After building the images, I created Helm charts for each microservice and deployed them to the EKS cluster.

Confirmation of all services running


7. Verifying Functionality

  • Received a token from PostgreSQL

Token from PostgreSQL

  • Accessed the email notification

Email notification gotten with mp3 file id

  • Successfully downloaded and played the converted MP3 file

Converted mp3 downloaded


Downloaded mp3 playing same sound as in video


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)