This repo houses the entrypoint of Ubivius's documentation by providing links to every products and putting some context for them. Ubivius is a suite of products made to deploy and manage an online plateform for game development. The projects are split in the following families: microservices, infrastructure, telemetry, and game.
We have three parts linked to microservices: workflows-microservices, microservice-* and shared-*.
This single repository is used to centralize and distribute CI/CD scripts to all microservices. This enables your team to modify it in one place and distribute it with one merge on dev and another one on master when it was successful.
- Here it is: workflows-microservices.
The services are developped in Golang and are mostly independent. There are two parts: core services and feature services.
- There is also a template service to enable your team to develop and deploy your own microservices: microservice-template.
These services must be present in your cluster for basic functionnality of the platform.
- microservice-authentication: A service that allows sign up and sign in of a player/administrator
- microservice-dispatcher: A kubernetes controller that manages game servers' creation/destruction for players
- microservice-user: A service that saves player/administrator related data
Theses services are feature-specific and your team can customize which ones to deploy based on your game's needs.
- microservice-achievements: You can add your achievements' definitions and icon. Your game will be able to give achievements to your players by validating with this service
- microservice-character-data: You can save various characters' metadata for your players
- microservice-friendslist: Save and retrieve your player's friends list
- microservice-text-chat: Chat directly to friends or in-game using this service
Those git repositories are for shared libraries that could be used in any of the microservices.
- shared-authentication: An OIDC library validating JSON Web Token
- pkg-telemetry: Shared telemetry package for the microservices
Infrastructure are components developped by various external teams that are customized to support functions like routing, authentication management, databases and databases content viewers.
- deploy-traefik: A component that acts as a router for incoming requests to the cluster. Uses ingresses to route in the cluster
- deploy-keycloak: A component managing user logins, token generation and user groups for access levels in authentication. Work with microservice-authentication as access API
- deploy-elasticsearch: A database used for telemetry data ingested by jaeger and logstash
- deploy-mongodb: A database used by the microservices' platform
- deploy-kibana: A database viewer for Elastic Search
- deploy-traefik: A router for the Kubernetes cluster
- deploy-cert-manager: A cert manager for the cluster
- deploy-agones: A game server management tool
Telemetry projects are also from external teams and were picked out form the Cloud Native Computing Foundation's(CNCF) landscape page. They are the way administrators can monitor health and state from all deployed components in your Kubernetes cluster.
- telemetry-grafana: A dashboard manager to display all the relevant informations to enable your team to deploy and diagnose the cluster's content
- telemetry-jaeger: A tool that aggregates network traces for the cluster
- telemetry-logstash: A tool that aggregates and structures logs of the cluster's components
- telemetry-prometheus: A tool that scrapes metrics (ex: Cpu, memory and disk usage) from the cluster's components
- telemetry-filebeat: A tool that scrapes the logs from the pods in the cluster
This single repository is used to centralize and distribute CI/CD scripts to all telemetry applications. This enables your team to modify it in one place and distribute it with one merge on dev and another one on master when it was successful.
- Here it is: workflows-telemetry.
Here is our game. Its purpose is to provide an example of the integration of our platform and give an easy way to customize DevOps scripts to create, build and deploy a game server and client package: ubivius-game.