Automated Cloud-Native Microservice Deployment with Terraform & Kubernetes
DevOps
Project details
Description
This project is a microservice application which uses Terraform to provision cloud
resources and Kubernetes for container orchestration.
It consists of three main microservices:
Auth Service: A user management and authentication service that uses a MySQL database.
Course Service: Manages courses, lessons, and related data using a PostgreSQL database.
Payment Service: Handles payments and transactions using a PostgreSQL database.
Auth Service: A user management and authentication service that uses a MySQL database.
Course Service: Manages courses, lessons, and related data using a PostgreSQL database.
Payment Service: Handles payments and transactions using a PostgreSQL database.
The Terraform project provisions AWS EKS and three RDS instances, as well as the
supporting networking, IAM and Helm configurations needed to run the microservices.
The Kubernetes project isolates each service with its own deployment and database
connection, and provides a clusterIP for internal communication between services. To make the
services available externally, the kubernetes project was separated into two environments:
development and production. The development environment uses Nginx Ingress to route traffic to the
correct services, and the production environment uses AWS ALB for external exposure.
Achievements
- A fully automated AWS infrastructure deployment pipeline for a scalable, secure Kubernetes cluster, ready for production workloads.
- A production-style, cloud-native application stack with clear separation of concerns, fault tolerance, and secure, scalable routing.
- Secure Communication — Shared JWT token for inter-service authentication.
Tools Used
- Kubernetes
- Terraform
- Amazon Web Services (AWS)
- Github Actions
- Nginx
- Helm