Name | Position |
---|---|
Scheduler2000 | Main Developer |
Name | Description |
---|---|
code |
All the backend code |
code/src |
Folder containing the impl of the user API with CRUD operations |
code/tests |
Folder containing tests related to the above REST API |
infra |
All the docker logic, Kubernetes base setup and MySql script |
infra/IaC |
All files related to Infrastructure as Code (Vagrant, Ansible) |
infra/docker |
docker related things : dockerfile, docker-compose configuration files |
infra/docker/volumes |
Folder containing severals docker volumes for dockerize the app with a state |
infra/kubernetes |
Kubernetes related things: deployment, configmap, service |
infra/kubernetes/api |
Kubernetes configuration files related to the User API |
infra/kubernetes/database |
Kubernetes configuration files related to the MySql database |
infra/kubernetes/elk |
Kubernetes configuration files related to the elk suite (kibana, elasticsearch) |
infra/kubernetes/database |
Sql script for set up project-devops database with empty tables |
docs |
All the business, architecture and guideline information |
docs/image |
Images used in the markdown files of the root description. |
/ |
git hook for ensuring the good format of git commit for the changelog generation |
/ |
configuration files related to semantic-release |
Name | Description |
---|---|
master |
main branch |
- Build artefacts out of code compilation
- Every commit to every branch, and pull requests
- Run unit and integration tests
- Every commit to every branch, and pull requests
- Build artefacts and push into a docker registry
- Every commit to every branch, and pull requests
User API implementation using MVC Architecture, Dapper as a micro-orm, MySQL as a Server Provider and Open API, including following features:
- CRUD operations using MVC Approach.NET 6.0 and Mysql
- Health Checks implementation for kubernetes probes
- Open API - Support for Swagger
- Monitoring with Serilog and kibana coupled with elasticsearch
- Jetbrains Rider
- DataGrip
- .NET 6.0 SDK
- Mysql Connector
- Dotnet CLI
- NPM
To build and run the project using the command line:
- Install npm packages with
npm install
in root folder. - Install packages dependencies using
dotnet restore
in root folder. - Create the database with DataGrip or via CLI and execute
ìnfra/sql/database.sql
- Run the project with
dotnet run
- Point your browser to here
- NB : In this case the logs will be output only on the output console, if you want logs on kibana you have to up kibana and elasticsearch containers via docker or docker-compose
If you don't have all tools mentioned above in Development Environment,
you can run the project using the following command : docker-compose up
in the following folder : infra/docker
.
NB: If you ran into this error max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
Here is the solution :
- Make sure docker daemon is running
- Open a terminal in adminstrator
- wsl -d docker-desktop (only for Windows users)
- sysctl -w vm.max_map_count=262144
You can also run the project using kubernetes instead of Docker Compose :
- Start local kubernetes cluster with
minikube start
- Make sure you're on minikube context :
- Apply kubernetes configuration files with
kubectl apply -f kubernetes/ --recursive
ininfra
folder - Verify that the ConfigMaps are created
kubectl get configmap
- Check list of up and running pods
kubectl get pods
- Verify that Services are running
kubectl get services
- Get the IP Address of the kibana and user api
minikube service list
- For Cleaning up :
kubectl delete -f kubernetes/ --recursive
ininfra
folder.
Subject | Code | Max. grade |
---|---|---|
Enriched web application with automated tests | APP | +1 |
Continuous Integration and Continuous Delivery (and Deployment) - Docker Registry | CICD | +3 |
Containerisation with Docker | D | +1 |
Orchestration with Docker Compose | DC | +2 |
Orchestration with Kubernetes | KUB | +3 |
Monitoring Kibana/Elasticsearch | MON | +2 |
Infrastructure as code using Ansible and Vagrant (partially) | MON | +2 |
Accurate project documentation in README.md file + Schema | DOC | +3 |
Bonus Tasks : C#, Mysql, Swagger, | BNS | +1 |
Bonus Tasks : conventional commits, git hooks, changelog gen | BNS | +1 |
Tasnim Bennacer
[email protected]
Student at ECE Paris