This repository contains all Kubernetes configuration files for deploying out SUST Online Judge.
We are in still beta version of this release. Although our alpha version is running as a production version for internal use inside the university
Our project is broken down on several microservices after we delivered the alpha version to the university. And the current version is a voluntary effort from the creators and backers.
- Rafik Farhad @RafikFarhad
- Talat Mursalin @talatmursalin
Begining of this project we started with Laravel 5
as our web end, Python2.7
for our judging system. For the time being, we introduced more technology as we felt necessary for this project. Currently, the project is broken down with these following micro-services.
Repository | Technology | Role |
---|---|---|
judgeMod | Python3 | Judging and Sandboxing |
masterCODE | Laravel 8 | Main API Backend |
doCODE | NuxtJS | Contestant Frontend |
subCODE | Laravel 8 | Judge Interface |
liveCODE | NodeJS | Real time notification provider via WS |
- | Minio | S3 Complient Storage Service |
- | MySQL | Database Service |
- | RabbitMQ | Inter-service messaging service |
- | Redis | Caching Service |
ELK Stack | Logging | |
push-to-gcr-github-action | Github Action | CI/CD |
Currently, our repositories are not public. We will make them public as soon as we are ready to release and tag the projects with proper license
We use continuous deployment process in our project. Everytime we released a version with a git tag
, the github-action
automatically builds an appropriate docker image and pushes the image in docker registry. Currently, we are using Google Cloud Registry
. For this, we released a generic github-action in the marketplace to make this step automated.
In development, we use docker-compose
. You can find the docker-compose
configs file in this repository: sust-oj-compose
A possible serial to follow
- create namespace
- create docker-container-registry-secrets
- create ssl-role, ssl-secrets and run
k8s-nginx-letsencrypt
job - create redis, rabbitmq, mysql with PVC
- create subcode and then migrate DB and
php artisan permission:cache
- create livecode and test real time notification
- create mastercode and test
/api/v1/ping
- create docode
- optional: expose
tcp-services