Giter VIP home page Giter VIP logo

jitsi-helm's Introduction

P.S. PRs with fixes or improves are welcome ;-)

About

A Jitsi Meet Chart for Kubernetes with 2 replicas of HAproxy in peering. All Jitsi shard are in backend via server-template in configuration.

This chart will install and configure: HAProxy statefulset, Jicofo deployment, JVB statefulset (scalable), web interface, prosody XMPP server.

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 architecture/architecture.md.

Install chart

To download and to install the Jitsi Meet Chart, make sure that you have the Helm CLI (v2+) installed and clone this repository on your machine.

To install the chart, in your terminal, go to the jitsi-helm repository and run the following command:

helm install -n jitsi ./ --wait

If you want to use your own custom watermark, first create configmap from your png file:

kubectl create configmap -n <namespace> watermark --from-file=watermark.png

It assumes that you have a Nginx Ingress controller and you use CertManager along with ACME issuer type for managing the HTTPS certificates.

Because --wait flag, the status will be given once Jisti Meet is ready.

Updating the chart

To update the chart, in your terminal, go to the jitsi-helm repository and run the following command:

helm upgrade jitsi ./ --wait

Delete the chart

To delete the chart, in your terminal, go to the jitsi-helm repository and run the following command:

helm delete --purge jitsi

Configuration

The following table lists the configurable parameters of the Jitsi Meet chart and their default values.

Parameter Description Default
shardCount Number of shards 2
haproxy.image Docker image haproxy:2.1
ingress.enabled Enable ingress true
ingress.hosts List of hosts in this ingress empty
ingress.class Which ingressClassName to use empty
ingress.tls.enabled Enable TLS for ingress true
ingress.tls.secretName Name of the secret storing the TLS certificate and key jitsi-tls
ingress.extraPaths Extra paths to add to the ingress []
jicofo.image Jicofo docker image jitsi/jicofo
jicofo.imagePullPolicy Jicofo image pull policy Always
jicofo.extraEnvs Jicofo extra environment variables []
jvb.image JVB docker image jitsi/jvb
jvb.image.imagePullPolicy JVB image pull policy Always
jvb.replicas JVB replica count 1
jvb.monitoringEnable JVB exporter container true
jvb.hostPort JVB hostPort empty
jvb.nodeportPrefix JVB Node port prefix 30
jvb.extraEnvs JVB extra environment variables []
prosody.image Prosody docker image jitsi/prosody
prosody.image.imagePullPolicy Prosody image pull policy Always
prosody.extraEnvs Extra env var for prosody deployment []
prosody.extraVolumes Additionnal volumes to the prosody deployment []
prosody.extraVolumeMounts Additional volume mounts to the prosody deployment []
prosody.globalModules Additional global modules to enable on prosody []
prosody.globalConfig Additional global config parameters on prosody []
uvs.enable Whether the Matrix User Verification Service should be enabled false
web.image Web docker image jitsi/web
web.image.imagePullPolicy Web image pull policy Always
web.extraEnvs Extra env var for web deployment []
web.extraVolumes Additionnal volumes to the web deployment []
web.extraVolumeMounts Additional volume mounts to the web deployment []
watermark Watermark logo true

Running two jitsi instances inside the same cluster

  1. The second instance should be deployed with specific settings :
  • jvb.nodeportPrefix should use a different value from 30 to avoid ports conflicts or
  • jvb.hostPort that's distinct from other installations

jitsi-helm's People

Contributors

gaelgatelement avatar benbz avatar matmaul avatar arkaniad avatar krakazyabra avatar linosgian avatar guillaumevillemont avatar jessebot avatar

Stargazers

 avatar Lucas Gen avatar Adrien Brignon avatar  avatar  avatar  avatar Péter Vámos avatar Mia avatar Tim Beermann avatar Sandeep avatar Alex Negulescu avatar Konstantin Mokhnatkin avatar Harish R avatar Marc Carran avatar Mic Szillat avatar DevOps avatar

Watchers

Neustradamus avatar James Cloos avatar  avatar Lucas Gen avatar  avatar DevOps avatar

jitsi-helm's Issues

Trying to deploy in Kubeapps: 'Could not get information about the resource ConfigMap "" in namespace..."example": resource name may not be empty'

Describe the bug
From version 0.50.0, cannot update or fresh deploy through Kubeapps, setting or not custom configmaps.
Is there any configmap not listed in default yaml that must be defined? In previous versions runs perfectly.

To Reproduce
Steps to reproduce the behavior:

  1. Deploy/update on Kubeapps.
  2. Fill/change yaml definitions as you need, or maintain if you are updating.
  3. Press "deploy 0.50.X" button
  4. Kubeapps show error:
    "An error occurred: Unable to create the installed package for the package "vector-im/jitsi" using the plugin "helm.packages": rpc error: code = Internal desc = Unable to create helm release "appname" in the namespace "example": Release "appname" failed and has been uninstalled: rendered manifests contain a resource that already exists. Unable to continue with install: could not get information about the resource ConfigMap "" in namespace "example": resource name may not be empty"

Expected behavior
It should be deployed with no errors as in previous versions.

Screenshots
image

Desktop (please complete the following information):

  • OS: OSX 13.4
  • Browser: Safari

Additional context
Deploying onto k8s 1.25 and 1.26 with same error.

Improve secret handling

Currently we have

createSecret: true
JICOFO_AUTH_PASSWORD: ""
JICOFO_COMPONENT_SECRET: ""
JVB_AUTH_PASSWORD: ""

With either requires an external secret to be created/managed or those 3 values to be provided with secrets. #6 did this because we were getting in situations where the secrets were changing every deploy but only some deployables were being restarted (and so picking up the new secret values) leading to situations where the running deployables were using different password values.

Look at https://helm.sh/docs/topics/charts_hooks/ to see if that will help with secret generation inside the chart again. But more generally we should look at specifying a secret name & key that contains these values, e.g. the Bitnami redis chart has:

Value Description Default
auth.password Redis® password ""
auth.existingSecret The name of an existing secret with Redis® credentials ""
auth.existingSecretPasswordKey Password key to be retrieved from existing secret ""

Using the above scheme we could generate a password on initial install only if neither of the top 2 is set

This will be important if we want to do #29 or #30.

Restart web pods on custom config changes

Making changes to web's custom config should force a restart of the web pods.

Requiring a helm command to be run (e.g. config hash label/annotation) rather than running a reloader sidecar is acceptable

Proper releases

  • Proper versioning in Chart.yaml for the chart and Jitsi itself
  • Create tags for releases rather than referring to individual commits
  • Automation to turn a tag/release into a Helm chart repo
  • Generate changelog and upgrade notes

INSTALLATION FAILED

Error: INSTALLATION FAILED: execution error at (jitsi/templates/web-deployment.yaml:8:23): One of PUBLIC_URL or ingress.hosts must be provided

some igress host error

please help me anybody

Jibri support

Support managing a fleet of Jibris with this chart

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.