Sin control.
Documentatie over sin control.
Afkortingen
ms = Microservices
bff = Backend For Frontend
dev = Development omgeving
prod = Production omgeving
k8s = Kubernetes
vm = Virtual Machine
Architectuur
In de kubernetes cluster draaien de volgende applicaties.
- Hoofdsite
- Panel
- API gateway
- BFF
- ms database
- ms email
- ms filesystem
- ms health
- ms web
- ms ldap
- vault
- phpMyAdmin
Buiten de k8s draaien er nog enkele vm's.
- ftp/sftp
- mysql
- postgreSQL
- ldap
Hoofdsite
Hoofdsite van sinners is www.sinners.be
Op deze site staat alle informatie over SIN, het team, registratie.
Het team word onderhouden door staff op het control panel van Sin.
Panel
Panel ook wel control panel genoemd is te vinden op panel.sinners.be
Op deze pagina kunnen studenten hun account beheren (wachtwoorden, verlengen, databases maken, domeinen maken).
Staff kan hier meerdere zaken doen opzoeken van gegevens, aanpassingen maken in de instellingen, SIN leden beheren, user roles aanpassen facturen maken,..
API gateway
Wanneer de hoofdsite en het panel wilt communiceren met de backend zal deze eerst paseren door de API gateway. De API gateway doet al de eerste controle op de JWT token om zo al een deel van ongewenste request tegen te houden. Wanneer de JWT token ok is zal de API gateway de request doorsturen naar de BFF.
BFF
BFF ook wel backend for frontend genoemd. Deze microservice communiceert als enigste met de database met alle gegevens in van de gebruikers. Verder stuurt hij ook andere microservices aan om verschillende taken te doen.
ms database
Deze microservice voert query's uit op de database die gebruikt word door de studenten.
- Database gebruiker maken
- Database voor een gebruiker maken
- Database gebruiker verwijderen
- Database databses van een gebruiker verwijderen
- Wachtwoord van database gebruiker wijzigen
ms email
Deze microservice stuurt alle email die worden verstuurd door de backend. Gebruikte mail adres is noreply@sinners.be
- Activeren
- Gebruiker verlengen
- Wachtwoord vergeten
- ...
ms filesystem
Deze microservice staat in verbinding met het filesysteem.
- Nieuwe gebruiker structuur aanmaken
- Mappen voor een nieuw domein aanmaken
- Mappen van een domein verwijderen
- Gebruikers verwijderen
- ...
ms health
Deze microservice kijkt alle domeinen van de SIN gebruikers na op de status code 404. De actie word getriggert door de BFF om het uur. Wanneer de status 404 optreed is er mogelijks iets fout en word staff hier van op de hoogte gebracht in slack.
ms web
Deze microservice staat in verbinding met de kubernetes cluster. Deze microservice onderneemt actie bij het upgraden van alle domeinen na het aanpassen van de instellingen op het panel, wanneer een domein expired is, wanneer een domein niet meer expired is, wanneer er een nieuw domein word gemaakt en wanneer een domein word verwijderd.
- Nieuwe domeinen starten
- Domeinen verwijderen
ms ldap
Deze microservice staat in verbinding met de ldap server. Deze microservice komt in actie als.
- Nieuwe gebruiker word gemaakt (na validatie)
- Wachtwoord word aangepast
- Bij het inloggen
- Verwijderen van een gebruiker
- Bewerken van een gebruiker door staff
Vault
De vault die gebruikt word door sincontrol is van HashiCorp. Extra documentatie kan je dan ook daar vinden. In de vault van sin zitten de wachtwoorden die gebruikt worden door de verschilende applicaties binnen sincontrol. Als het wachtwoord van bijvoorbeeld een database veranderd zal deze in de vault moeten worden aangepast en nadien de bijhorende microservice bijvoorbeeld ms-database herstarten.
phpMyAdmin
phpMyAdmin draait binnen de k8s cluster en is bedoeld voor SIN gebruikers. phpMyAdmin staat in verbinding met de MySql server.
Databases
In SinControl worden 2 databases gebruikt. 1 voor de SIN gebruikers(studenten,docenten,...) en een andere met alle gegevens van de gebruikers.
MySQL database voor de SIN gebruikers.
Deze database wordt alleen gebruikt door de gebruikers van SIN.
Hiervan is poort 3306 open naar de buitenwereld.
postgreSQL database voor SinControl.
Deze database wordt alleen gebruikt om data van de gebruikers bij te houden.
Hiervan is geen poort open naar de buiten wereld.
Locatie code
Alle code die bij dit project hoort staat op gitlab.com.
Ontwikkeling
Sin control draait in 2 omgevingen dev en prod. Dev staat voor development en prod voor production. Dus wanneer er aanpassingen gemaakt worden zou deze eerst worde moeten getest in de dev omgeving. Als alles daar goed gaat kunnen de wijzingen ook worden door gevoerd naar prod.
Code die gepusht word word automatisch gebuild en gedeployt in de dev omgeving. voor naar prod te gaan moet dit manueel gebeuren (meer info hier over staat bij Jenkins).
dev omgeving kan bereikt worden op sindev.be prod omgeving ken bereikt worden op sinners.be
Webserver
Als webserver heeft elke student per domein een eigen webserver. De webserver is een docker image die per subdomein opstart in de kubernetes cluster. Bij het opstarten van de webserver word eerst de mappen structuur nagekenen en herstelt zodat de webserver kan opstarten.
Wanneer de webserver zou moeten worden upgedate moeten er aanpassingen gemaakt worden aan de repo op Gitlab web-server.
Webserver updaten doe je door in het project je aanpassingen doen, vervolgens verhoog je de versie van de docker image in de jenkinsfile en push je je code terug naar Gitlab.
Even later zal de docker image gebuild zijn en kan je deze versie ook aanpassen in de instellingen op het adminpanel panel.sinners.be.
Resource limits
Resource limits slaagt op het max ram geheugen dat er gebruikt word per pod op een subdomein van de student.
Als dit te weinig is of te veel is moet dit worden aangepast in de code van bff.
LET OP locatie kan veranderen.
webDomainFeignRequest.setMemory("75Mi");
DomainService.java:113
DomainService.java:184
DomainService.java:201
Na aanpasingen in de code en via jenkis gedeployt moet je nog op panel.sinners.be gaan update door bij de instellingen op opslaan te klikken.
Gebruikers
Gebruikers bij sin hebben minstens de role van user.
Verder bestaan er nog volgende rolen die als extra worden toegewezen.
- USER
- STAFF
- STUDENT_ASSOCIATION
- ALUMNI
- TEACHER
- JUNIOR
Gegevens van de gebruikers worden bijgehouden in ldap en in de database zelf.
ldap
- CN
- gidNumber
- givenName
- homeDirectory
- loginShell
- objectClass
- password
- sn
- uidNumber
- User Name
database
- id
- creation_date
- expiration_date
- username
- roles