- k8s-cms master component
- added JWT token authentication for k8s-cms master
- added contest api to import/update/delete contests
- added dockerfile and k8s service & deployment for k8s-cms master
- kcmscli - k8s-cms CLI
- import, export users from CSV files
- import contests into k8s-cms
- get,update,delete contests from k8s-cms
- migrate from helm v2 to helm v3
- checksum configmaps and secrets to restart pods on updates
- Quality of Service
- profiling resource usage for simulated workload (48 particpants/1 submission per 60s)
- limit worker resources to ensure quality of service.
- set limits and requests for pods in kubernetes
- securing k8s-cms:
- HTTPs for RankingWebServer,AdminWebServer,ContestWebServer.
- setup cert manager chart to use lets encrypt to obtain certificates
- HTTPs for RankingWebServer,AdminWebServer,ContestWebServer.
- autoscaling for contest web servers and workers to handle the load
- node taints & selector to to control pod scheduling
- migrate kubernetes yaml to helm v2
- config maps:
- cms-config-env
- cms-config
- secrets
- cms-secrets
- Database service and depolyment
- LogService service and deployment
- ResourceService service and deployment
- ScoringService service and deployment
- EvaluationService service and deployment
- ProxyService service and deployment
- AdminWebServer service and deployment
- PrintingService service and deployment
- RankingWebServer service and deployment
- Checker service and deployment
- ContestWebServer service and deployment
- Worker service and deployment
- config maps:
- remove support for kustomize under k8s/
- fixed issue where cms entrypoint did not drop permssions correctly
- fixed images deployed using kustomize tagged 'latest' instead of 'v0.2.1b'
- fixed missing cms secret key required for contest web server
- fixed missing ranking server credentials required for proxy server to access ranking server
- securing k8s-cms:
- expose only required secrets instead of using envfrom exposing everything
- run cms pods with cms-services service account, with automount token disable.
- database dependency - wait for database before starting CMS services
- kubernetes support - write k8s deployment for YAMLs all these:
- Database ✔️
- ResourceService ✔️
- LogService ✔️
- ScoringService ✔️
- EvaluationService ✔️
- ProxyService ✔️
- AdminWebServer ✔️
- PrintingService ✔️
- RankingWebServer ✔️
- Checker ✔️
- ContestWebServer ✔️
- Worker ✔️
- Ingress service to combine ranking, contest and admin web servers.
-
make cms docker images source cms configuration from /etc/
-
split singular env file to config.env for config, .env for secrets
-
securing k8s-cms:
- run all (except db) services as non root user.
- docker containers for CMS services ✔️
- Database ✔️
- ResourceService ✔️
- LogService ✔️
- ScoringService ✔️
- ProxyService - with single contest support limitation ✔️
- EvaluationService ✔️
- PrintingService ✔️
- AdminWebServer ✔️
- RankingWebServer ✔️
- Checker ✔️
- ContestWebServer - with single contest limitation ✔️
- Worker - requires language support ✔️
- C C++ Java Pascal Python with zip executable PHP Rust C#
- docker-compose single machine support ✔️