/kubeflix

KUBEFLIX - Built to demonstrate a microservices application running on Kubernetes. It is composed of 10 microservices written in different languages that talk to each other over http.

Primary LanguageC#GNU General Public License v3.0GPL-3.0

KUBEFLIX

KUBEFLIX

Built to demonstrate a microservices application running on Kubernetes. It is composed of 10 microservices written in different languages that talk to each other over http.

Movie data powered by

Application architecture

Service Language Description
Frontend Next.js Exposes an HTTP server to serve the website.
Movies Api C# Provides a list of movies.
Basket Api Go Saves basket in Redis.
Recommendation Api Python Recommends other movies
Advertisement Api Go Api to display advertisement on the frontend
Checkout Api C# 1 click-checkout api. Grabs basket from Redis and puts orders message in a queue
Order Processor Go Processes orders. Stores orders in database and emits order processed event
Notification Service Go Listens to Order processed and Shipped events and sends notifications
Shipping Service C# Listens to order processed events, updates database and emits shipped events
Load Testing Python Locust load testing

Platform architecture

Workshop and Tutorials

Workshop and tutorials available here (TODO)

Running the application

Locally with docker-compose

On the root folder of the project you will find the docker-compose.yaml file.

To optionally build from source (you will need a newish version of Docker to do this) use Docker Compose. Optionally edit the .env file to specify an alternative image registry and version tag; see the official documentation for more information.

$ docker-compose build

If you modified the .env file and changed the image registry, you need to push the images to that registry

$ docker-compose push

Kubernetes

To run the simple example on the kubernetes-manifests/simple folder.

On the root folder of the project run kubectl apply -f /src/kubernetes-manifests/simple. Or on the kubernetes-manifests/simple folder run kubectl apply -f .