Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



52 Commits

Repository files navigation

Project Title

Implementation of a full stack tool in Kubernetes environment to automate the application of filters on messages using message broker technology


This project was created in the context of the diploma thesis of Emmanouil Zisis-Milis as an electrical & computer engineering student of the Aristotle University of Thessaloniki.

The diploma thesis was supervised by:

who are all members of the Intelligent Systems & Software Engineering Labgroup.

A web platform was created to enable its users to apply message filters to their systems through RabbitMQ message brokers, without having to write any code.

The web app that was produced, is set up in a local Kubernetes environment created by the Minikube tool.

The users' info as well as the messages that are deemed important are saved to a MongoDB Database.

Table of contents


This project was developed in a machine operating on Ubuntu OS, making use of Linux containers. For compatibility reasons it should be run on similar environments.

List of features

  • Through this web app, the user can spin up a personal RabbitMQ message broker through which his messages will be routed.

  • The user gets a local IP address to which he can send messages from his other systems / IoT devices.

  • The user can apply and attach filters to his message broker by specifying the Exchanges and the Queues through which his messages will be routed.

  • The user's messages are routed from the Topic Exchanges to the Queues according to the Routing Key of the messages and the Binding Keyes between Exchanges and Queues.

  • The user can specify sets of conditions, under which the messages received by a filter will be considered important and saved to a Database.

  • The user can observe the overview of the messaging system, either by accessing the management GUI of the RabbitMQ message broker, or by navigating to the built-in Overview tab of the web app.

(Back to top)

Installation directions

  1. Start here to install minikube:

  2. Install docker

  3. This will lead to

  4. Following the steps required will lead to execute those steps

(the Docker start on boot step is optional)

(The "Configure where the Docker daemon listens for connections" step is also optional)

  1. Some optional training resource material:,

(Back to top)

Platform setup

  1. To use this project, first clone the repo on your device using the command below:
git init
git clone
  1. Navigate to the scripts folder of the project structure

  2. a) Run the executable file


(the above will only work if the minikube executable is installed in the location


and the kubectl tool is installed in the location


Otherwise the file needs to be adjusted to reflect the installed locations of the minikube and kubectl executables)

  1. b) If one doesn't wish to alter the file, they can just execute one by one the commands it contains:
# minikube
minikube start --memory 6600 --cpus 4
minikube addons enable dashboard
minikube addons enable metrics-server

# mongodb
kubectl apply -f ../kubernetes/mongo-persistentvolume.yaml
kubectl apply -f ../kubernetes/mongo-persistentvolumeclaim.yaml
kubectl apply -f ../kubernetes/mongo-secret.yaml
kubectl apply -f ../kubernetes/mongo-deployment.yaml

# backend
kubectl apply -f ../kubernetes/mongo-configmap.yaml
kubectl apply -f ../kubernetes/backend-rbac.yaml
kubectl apply -f ../kubernetes/backend-deployment.yaml

# frontend
kubectl apply -f ../kubernetes/frontend-configmap.yaml
kubectl apply -f ../kubernetes/frontend-deployment.yaml
kubectl apply -f ../kubernetes/frontend-service.yaml\

# access to the system from LAN locations
minikube tunnel
  1. Get the public minikube container IP address:
minikube ip
# =>
  1. Use Public Minikube IP Address to Connect from a browser
  • http://{minikube_ip}:31000: 31000 is the Nodeport of the Frontend service

(notice how the protocol used is http and NOT https, otherwise the connection will not succeed)

  1. To get an overview of the running containers, their address and port configurations execute in a terminal the following command:
watch -x kubectl get all -o wide

(Back to top)



(Back to top)


Developing a web tool to manage rabbitmq message brokers over kubernetes






No releases published


No packages published