• Stars
    star
    215
  • Rank 183,925 (Top 4 %)
  • Language
    Shell
  • License
    MIT License
  • Created over 4 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Auto-scalable Jitsi Meet for Kubernetes

Jitsi Meet

Scalable video conferencing on Kubernetes.

Structure

The whole setup is based on Kubernetes YAML files and patches for these files. It makes use of kustomize to customize the raw YAMLs for each environment.

(Almost) every directory in the directory tree (depicted below) contains a kustomize.yaml file which defines resources (and possibly patches).

|-- base
|   |-- jitsi
|   |-- jitsi-shard
|   |   `-- jvb
|   `-- ops
|       |-- cert-manager
|       |-- dashboard
|       |-- ingress-nginx
|       |-- loadbalancer
|       |-- logging
|       |-- metacontroller
|       |-- monitoring
|       `-- reflector
`-- overlays
    |-- development
    |   |-- jitsi-base
    |   |-- ops
    |   |-- shard-0
    |   `-- shard-1
    `-- production
        |-- jitsi-base
        |-- ops
        |-- shard-0
        `-- shard-1

Requirements

Install

To install the full setup go to either overlays/development or overlays/production and run

$ kustomize build . | kubectl apply -f -

This deploys a Jitsi setup consisting of two shards. A shard is a complete replica of a Jitsi setup that is used in parallel to other shards to load-balance and for high availability. More shards can be added following the documentation in docs/architecture/architecture.md. The setup was tested against a managed Kubernetes cluster (v1.17.2) running on IONOS Cloud.

Architecture

The Jitsi Kubernetes namespace has the following architecture:

Architecture Jitsi Meet

The setup shown above contains only a single shard (for visual clarity). Subsequent shards would be attached to the web service. A more detailed explanation of the system architecture with multiple shards can be found in docs/architecture/architecture.md.

Load Testing

Load testing is based on jitsi-meet-torture which is a Java application that connects to a Jitsi instance as a user and shows a predefined video along with an audio stream by using a Selenium Chrome instance. To run multiple test users in multiple conferences a Selenium hub set up with docker-compose is used.

Terraform scripts that set up the test servers with an existing image can be found under loadtest. An init script is used to provision the necessary tools to that image. This image also needs SSH access set up with public key authentication.

After starting a number of load test servers, the load test can be started by using the loadtest/run_loadtest.sh script (locally). Results can be found in docs/loadtests/loadtestresults.md.

Kubernetes Dashboard Access

To access the installed Kubernetes Dashboard execute

$ kubectl proxy

and then go to http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/.

The login token can be received by executing

kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

Kibana Access

Kibana is not accessible from the Internet and must be forwarded to your local machine via kubectl by executing

$ kubectl port-forward -n logging svc/kibana-kb-http 5601:5601

After that you will be able to access Kibana via https://localhost:5601/. The default login password (user elastic) can be received with

$ kubectl get secret -n logging elasticsearch-es-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode; echo

The same procedure can be used to access Prometheus or Alertmanager.

Relationship With Other Projects

The monitoring stack that is set up by this project is currently also used by an affiliated project for Big Blue Button. Therefore, some of the files here contain configurations to monitor that setup. To exclude them delete all files starting with bbb- and remove the file names from the respective kustomization.yaml files.

More Repositories

1

schulcloud-server

Schulcloud-Verbund-Software-Server
TypeScript
73
star
2

gamification

A reusable microservice for gamification.
JavaScript
44
star
3

schulcloud-client

Schulcloud-Verbund-Software-Client
Handlebars
35
star
4

nuxt-client

Schulcloud-Verbund-Software-Nuxt-Client
TypeScript
32
star
5

schulcloud-flutter

Our Flutter based App for Android and iOS.
Dart
20
star
6

edtrio

A rich text editor for easily creating content in schools
JavaScript
16
star
7

bbb-deployment

HCL
12
star
8

schulcloud-mobile-android

Schul-Cloud Android Application
Kotlin
9
star
9

end-to-end-tests

JavaScript
9
star
10

dof_app_deploy

config repo for environments
Jinja
9
star
11

infra-otc-cert-manager-webhook

Cert manager acme dns01 webhook provider for the Open Telekom Cloud (OTC).
Go
7
star
12

superhero-dashboard

JavaScript
7
star
13

libreoffice-online-builder

Makefile
7
star
14

schulcloud-bbb-recorder

Convert BigBlueButton recordings to videos
JavaScript
6
star
15

schulcloud-mobile-ios

The Schul-Cloud iOS App
Swift
6
star
16

cui

A Conversational UI experiment
HTML
6
star
17

schulcloud-calendar

JavaScript
5
star
18

schulcloud-content-editor

Schul-Cloud Content Editor
Vue
5
star
19

filepreview

file preview image as a service
JavaScript
5
star
20

antivirus_check_service

The Antivirus Check Service provides the ability to scan files with a locally installed clamav daemon. In addition, the service offers a URL scan using virustotal.
Python
5
star
21

e2e-system-tests

JavaScript
4
star
22

docker-compose

deprecated, not complied with all services only for e2e test using
Shell
4
star
23

tldraw-client

TypeScript
4
star
24

schulcloud-editor

MicroService for editor documents.
JavaScript
3
star
25

example-educational-app

JavaScript
3
star
26

Learning-Experience-Lab

HCD & Design Thinking Repository of the LX Division of HPI Schul-Cloud
3
star
27

infra-tools

Python
3
star
28

idm_doc

Document for an global IDM interfaces and requirements definition
TeX
3
star
29

schulcloud-documentation

Documentation for the schul-cloud
JavaScript
3
star
30

node-notification-service

Feathers app to provide the Schul-Cloud notification api
TypeScript
3
star
31

resources-api-v1

DEPRECATED
Python
2
star
32

p2p

JavaScript
2
star
33

content-upload

Upload content to Schul-Cloud
CSS
2
star
34

synapse-load-test

Locust based load tests for Synapse
Python
2
star
35

integration_schulcloud

PHP
1
star
36

nexboard-api-js

JavaScript
1
star
37

infra-ansible-collections

Python
1
star
38

bbb_scaler

C#
1
star
39

mail-templates

HTML
1
star
40

lint-configs

All our lint configs in one place
JavaScript
1
star
41

schulcloud-licenses

backend of the schulcloud/rights-editor
JavaScript
1
star
42

tldraw-server

1
star
43

erwin-idm

ErWIn IDM
Dockerfile
1
star
44

inventory-checker

Tool for filtering CVEs by keywords and alerting
Python
1
star
45

ci-tools

Makefile
1
star
46

schulcloud-synapse-synchronization

Synchronizes HPI Schul-Cloud users, classes and team with a matrix based synapse messaging server
JavaScript
1
star
47

example-iphone-app

Example iPhone app for testing LTI1.3 with mobile
Swift
1
star
48

webdav

POC/MVP to have SC files available via WebDav
TypeScript
1
star
49

schulcloud-authorization-server

Shell
1
star
50

schulcloud-nextcloud

Shell
1
star