Skip to content

Files

Latest commit

d3a3c51 · Oct 7, 2024

History

History

architecture

Jonline Architecture

Jonline is generally setup to be deployed using Make atop kubectl and jq (and graphviz, if editing architecture diagrams in this directory).

Application Architecture

This is how Jonline works on a client-server, in terms of interaction of the Browser/App, HTTP server, gRPC server, PostgreSQL DB, and MinIO.

Jonline Application Architecture

Deployment Management

Deployment management logic lives in deploys/. Essentially this is some readable Makefile stuff built atop kubectl.

TLS Certificate Generation

Generated certs live in deploys/generated_certs. Generally, if you want to deploy to your own Kubernetes cluster, and secure it with TLS, you should take a look at these docs. Cert-Manager for DigitalOcean with DigitalOcean DNS is done. It should be possible to do this for other hosts with Cert-Manager support.

CI/CD (Continuous Integration and Delivery)

CI/CD logic is defined in .github/workflows/. If you can set up a Kubernetes deployment with the instructions in deploys/, hooking into the Server

The main CI jobs behind Jonline are:

Server CI/CD Badge Proto Consistency Badge

CI For iOS, Android, macOS, Windows, and Linux

Flutter iOS Build Badge Flutter Android Build Badge Flutter macOS Build Badge Flutter Windows Build Badge

Example Kubernetes Cluster Setups

K8s cluster with multiple Kubernetes LoadBalancers (without JBL)

This is how Jonline is currently deployed.

K8s cluster with multiple Kubernetes LoadBalancers

K8s cluster with multiple Jonline servers/deployments behind a single JBL LoadBalancer

Not yet implemented; an ongoing dev effort (that welcomes outside contributions)! See the GitHub issue for more information. System with multiple Kubernetes LoadBalancers