From 566941c263f32ad5aba954278dc9f8760f1f716c Mon Sep 17 00:00:00 2001 From: Paul Tiedtke Date: Wed, 31 Mar 2021 03:54:27 +0200 Subject: [PATCH] refactor: move chart into root --- examples/helm/.helmignore => .helmignore | 0 examples/helm/Chart.lock => Chart.lock | 0 examples/helm/Chart.yaml => Chart.yaml | 0 README.md | 122 +++++++++++++++++- examples/helm/README.md | 120 ----------------- .../charts/prosody => prosody}/.helmignore | 0 .../charts/prosody => prosody}/Chart.yaml | 0 .../prosody => prosody}/templates/NOTES.txt | 0 .../templates/_helpers.tpl | 0 .../templates/envs-configmap.yaml | 0 .../templates/envs-secret.yaml | 0 .../templates/ingress.yaml | 0 .../templates/service.yaml | 0 .../templates/serviceaccount.yaml | 0 .../templates/statefulset.yaml | 0 .../templates/tests/test-connection.yaml | 0 .../charts/prosody => prosody}/values.yaml | 0 .../helm/templates => templates}/NOTES.txt | 0 .../helm/templates => templates}/_helpers.tpl | 0 .../common-configmap.yaml | 0 .../helm/templates => templates}/ingress.yaml | 0 .../jicofo/_helper.tpl | 0 .../jicofo/configmap.yaml | 0 .../jicofo/deployment.yaml | 0 .../jicofo/xmpp-secret.yaml | 0 .../templates => templates}/jvb/_helper.tpl | 0 .../jvb/configmap.yaml | 0 .../jvb/deployment.yaml | 0 .../templates => templates}/jvb/service.yaml | 0 .../jvb/xmpp-secret.yaml | 0 .../serviceaccount.yaml | 0 .../tests/test-connection.yaml | 0 .../templates => templates}/web/_helper.tpl | 0 .../web/configmap.yaml | 0 .../web/deployment.yaml | 0 .../templates => templates}/web/service.yaml | 0 examples/helm/values.yaml => values.yaml | 0 37 files changed, 120 insertions(+), 122 deletions(-) rename examples/helm/.helmignore => .helmignore (100%) rename examples/helm/Chart.lock => Chart.lock (100%) rename examples/helm/Chart.yaml => Chart.yaml (100%) delete mode 100644 examples/helm/README.md rename {examples/helm/charts/prosody => prosody}/.helmignore (100%) rename {examples/helm/charts/prosody => prosody}/Chart.yaml (100%) rename {examples/helm/charts/prosody => prosody}/templates/NOTES.txt (100%) rename {examples/helm/charts/prosody => prosody}/templates/_helpers.tpl (100%) rename {examples/helm/charts/prosody => prosody}/templates/envs-configmap.yaml (100%) rename {examples/helm/charts/prosody => prosody}/templates/envs-secret.yaml (100%) rename {examples/helm/charts/prosody => prosody}/templates/ingress.yaml (100%) rename {examples/helm/charts/prosody => prosody}/templates/service.yaml (100%) rename {examples/helm/charts/prosody => prosody}/templates/serviceaccount.yaml (100%) rename {examples/helm/charts/prosody => prosody}/templates/statefulset.yaml (100%) rename {examples/helm/charts/prosody => prosody}/templates/tests/test-connection.yaml (100%) rename {examples/helm/charts/prosody => prosody}/values.yaml (100%) rename {examples/helm/templates => templates}/NOTES.txt (100%) rename {examples/helm/templates => templates}/_helpers.tpl (100%) rename {examples/helm/templates => templates}/common-configmap.yaml (100%) rename {examples/helm/templates => templates}/ingress.yaml (100%) rename {examples/helm/templates => templates}/jicofo/_helper.tpl (100%) rename {examples/helm/templates => templates}/jicofo/configmap.yaml (100%) rename {examples/helm/templates => templates}/jicofo/deployment.yaml (100%) rename {examples/helm/templates => templates}/jicofo/xmpp-secret.yaml (100%) rename {examples/helm/templates => templates}/jvb/_helper.tpl (100%) rename {examples/helm/templates => templates}/jvb/configmap.yaml (100%) rename {examples/helm/templates => templates}/jvb/deployment.yaml (100%) rename {examples/helm/templates => templates}/jvb/service.yaml (100%) rename {examples/helm/templates => templates}/jvb/xmpp-secret.yaml (100%) rename {examples/helm/templates => templates}/serviceaccount.yaml (100%) rename {examples/helm/templates => templates}/tests/test-connection.yaml (100%) rename {examples/helm/templates => templates}/web/_helper.tpl (100%) rename {examples/helm/templates => templates}/web/configmap.yaml (100%) rename {examples/helm/templates => templates}/web/deployment.yaml (100%) rename {examples/helm/templates => templates}/web/service.yaml (100%) rename examples/helm/values.yaml => values.yaml (100%) diff --git a/examples/helm/.helmignore b/.helmignore similarity index 100% rename from examples/helm/.helmignore rename to .helmignore diff --git a/examples/helm/Chart.lock b/Chart.lock similarity index 100% rename from examples/helm/Chart.lock rename to Chart.lock diff --git a/examples/helm/Chart.yaml b/Chart.yaml similarity index 100% rename from examples/helm/Chart.yaml rename to Chart.yaml diff --git a/README.md b/README.md index b2382ce..2134f40 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,120 @@ -# helm -A helm chart to deploy Jitsi to Kubernetes +# jitsi-meet + +[jitsi-meet](https://jitsi.org/jitsi-meet/) Secure, Simple and Scalable Video Conferences that you use as a standalone app or embed in your web application. + +## TL;DR; + +```console +$ git clone https://github.com/jitsi/docker-jitsi-meet +$ helm install ./docker-jitsi-meet/examples/helm +``` + +## Introduction + +This chart bootstraps a jitsi-meet deployment, like the official [one](https://meet.jit.si). + +## Different topology + +To be able to do video conferencing with other people, the jvb component should be reachable by all participants (eg: a public IP). +Thus the default behaviour of advertised the internal IP of jvb, is not really suitable in many cases. +Kubernetes offers multiple possibilities to work around the problem. Not all options are available depending on the Kubernetes cluster setup. +The chart tries to make all options available without enforcing one. + +### Option 1: service of type `LoadBalancer` + +This requires a cloud setup that enables a Loadbalancer attachement. +This could be enabled via values: + +```yaml +jvb: + service: + type: LoadBalancer + + # Depending on the cloud, publicIP cannot be know in advance, so deploy first, without the next option. + # Next: redeploy with the following option set to the public IP you retrieved from the API. + publicIP: 1.2.3.4 +``` + +In this case you're not allowed to change the `jvb.replicaCount` to more than `1`, UDP packets will be routed to random `jvb`, which would not allow for a working video setup. + +### Option 2: NodePort and node with Public IP or external loadbalancer + +```yaml +jvb: + service: + type: NodePort + # It may be required to change the default port to a value allowed by Kubernetes (30000-32768) + UDPPort: 30000 + TCPPort: 30443 + + # Use public IP of one of your node, or the public IP of a loadbalancer in front of the nodes + publicIP: 1.2.3.4 +``` + +In this case you're not allowed to change the `jvb.replicaCount` to more than `1`, UDP packets will be routed to random `jvb`, which would not allow for a working video setup. + +### Option 3: hostPort and node with Public IP + +Assuming that the node knows the PublicIP it holds, you can enable this setup: + +```yaml +jvb: + useHostPort: true + # This option requires kubernetes >= 1.17 + useNodeIP: true +``` + +In this case you can have more the one `jvb` but you're putting you cluster at risk by having it directly exposed on the Internet. + +### Option 4: Use ingress TCP/UDP forward capabilities + +In case of an ingress capable of doing tcp/udp forwarding (like nginx-ingress), it can be setup to forward the video streams. + +```yaml +# Don't forget to configure the ingress properly (separate configuration) +jvb: + # 1.2.3.4 being one of the IP of the ingress controller + publicIP: 1.2.3.4 + +``` + +Again in this case, only one jvb will work in this case. + +### Option 5: Bring your own setup + +There are multiple other possibilities combining the available parameters, depending of your cluster/network setup. + + + +## Configuration + +The following table lists the configurable parameters of the jisti-meet chart and their default values. + +Parameter | Description | Default +--- | --- | --- +`imagePullSecrets` | List of names of secrets resources containing private registry credentials | `[]` +`enableAuth` | Enable authentication | `false` +`enableGuests` | Enable guest access | `true` +`jicofo.replicaCount` | Number of replica of the jicofo pods | `1` +`jicofo.image.repository` | Name of the image to use for the jicofo pods | `jitsi/jicofo` +`jicofo.extraEnvs` | Map containing additional environment variables for jicofo | '{}' +`jicofo.livenessProbe` | Map that holds the liveness probe, you can add parameters such as timeout or retries following the Kubernetes spec | A livenessProbe map +`jicofo.readinessProbe` | Map that holds the liveness probe, you can add parameters such as timeout or retries following the Kubernetes spec | A readinessProbe map +`jicofo.xmpp.user` | Name of the XMPP user used by jicofo to authenticate | `focus` +`jicofo.xmpp.password` | Password used by jicofo to authenticate on the XMPP service | 10 random chars +`jicofo.xmpp.componentSecret` | Values of the secret used by jicofo for the xmpp-component | 10 random chars +`jvb.service.enabled` | Boolean to enable os disable the jvb service creation | `false` if `jvb.useHostPort` is `true` otherwise `true` +`jvb.service.type` | Type of the jvb service | `ClusterIP` +`jvb.UDPPort` | UDP port used by jvb, also affects port of service, and hostPort | `10000` +`jvb.TCPPort` | TCP port used by jvb, also affects port of service, and hostPort | `4443` +`jvb.extraEnvs` | Map containing additional environment variables to jvb | '{}' +`jvb.xmpp.user` | Name of the XMPP user used by jvb to authenticate | `jvb` +`jvb.xmpp.password` | Password used by jvb to authenticate on the XMPP service | 10 random chars +`jvb.livenessProbe` | Map that holds the liveness probe, you can add parameters such as timeout or retries following the Kubernetes spec | A livenessProbe map +`jvb.readinessProbe` | Map that holds the liveness probe, you can add parameters such as timeout or retries following the Kubernetes spec | A readinessProbe map +`web.httpsEnabled` | Boolean that enabled tls-termination on the web pods. Useful if you expose the UI via a `Loadbalancer` IP instead of an ingress | `false` +`web.httpRedirect` | Boolean that enabled http-to-https redirection. Useful for ingress that don't support this feature (ex: GKE ingress) | `false` +`web.extraEnvs` | Map containing additional environment variable to web pods | '{}' +`web.livenessProbe` | Map that holds the liveness probe, you can add parameters such as timeout or retries following the Kubernetes spec | A livenessProbe map +`web.readinessProbe` | Map that holds the liveness probe, you can add parameters such as timeout or retries following the Kubernetes spec | A readinessProbe map +`tz` | System Time Zone | `Europe/Amsterdam` diff --git a/examples/helm/README.md b/examples/helm/README.md deleted file mode 100644 index 2134f40..0000000 --- a/examples/helm/README.md +++ /dev/null @@ -1,120 +0,0 @@ -# jitsi-meet - -[jitsi-meet](https://jitsi.org/jitsi-meet/) Secure, Simple and Scalable Video Conferences that you use as a standalone app or embed in your web application. - -## TL;DR; - -```console -$ git clone https://github.com/jitsi/docker-jitsi-meet -$ helm install ./docker-jitsi-meet/examples/helm -``` - -## Introduction - -This chart bootstraps a jitsi-meet deployment, like the official [one](https://meet.jit.si). - -## Different topology - -To be able to do video conferencing with other people, the jvb component should be reachable by all participants (eg: a public IP). -Thus the default behaviour of advertised the internal IP of jvb, is not really suitable in many cases. -Kubernetes offers multiple possibilities to work around the problem. Not all options are available depending on the Kubernetes cluster setup. -The chart tries to make all options available without enforcing one. - -### Option 1: service of type `LoadBalancer` - -This requires a cloud setup that enables a Loadbalancer attachement. -This could be enabled via values: - -```yaml -jvb: - service: - type: LoadBalancer - - # Depending on the cloud, publicIP cannot be know in advance, so deploy first, without the next option. - # Next: redeploy with the following option set to the public IP you retrieved from the API. - publicIP: 1.2.3.4 -``` - -In this case you're not allowed to change the `jvb.replicaCount` to more than `1`, UDP packets will be routed to random `jvb`, which would not allow for a working video setup. - -### Option 2: NodePort and node with Public IP or external loadbalancer - -```yaml -jvb: - service: - type: NodePort - # It may be required to change the default port to a value allowed by Kubernetes (30000-32768) - UDPPort: 30000 - TCPPort: 30443 - - # Use public IP of one of your node, or the public IP of a loadbalancer in front of the nodes - publicIP: 1.2.3.4 -``` - -In this case you're not allowed to change the `jvb.replicaCount` to more than `1`, UDP packets will be routed to random `jvb`, which would not allow for a working video setup. - -### Option 3: hostPort and node with Public IP - -Assuming that the node knows the PublicIP it holds, you can enable this setup: - -```yaml -jvb: - useHostPort: true - # This option requires kubernetes >= 1.17 - useNodeIP: true -``` - -In this case you can have more the one `jvb` but you're putting you cluster at risk by having it directly exposed on the Internet. - -### Option 4: Use ingress TCP/UDP forward capabilities - -In case of an ingress capable of doing tcp/udp forwarding (like nginx-ingress), it can be setup to forward the video streams. - -```yaml -# Don't forget to configure the ingress properly (separate configuration) -jvb: - # 1.2.3.4 being one of the IP of the ingress controller - publicIP: 1.2.3.4 - -``` - -Again in this case, only one jvb will work in this case. - -### Option 5: Bring your own setup - -There are multiple other possibilities combining the available parameters, depending of your cluster/network setup. - - - -## Configuration - -The following table lists the configurable parameters of the jisti-meet chart and their default values. - -Parameter | Description | Default ---- | --- | --- -`imagePullSecrets` | List of names of secrets resources containing private registry credentials | `[]` -`enableAuth` | Enable authentication | `false` -`enableGuests` | Enable guest access | `true` -`jicofo.replicaCount` | Number of replica of the jicofo pods | `1` -`jicofo.image.repository` | Name of the image to use for the jicofo pods | `jitsi/jicofo` -`jicofo.extraEnvs` | Map containing additional environment variables for jicofo | '{}' -`jicofo.livenessProbe` | Map that holds the liveness probe, you can add parameters such as timeout or retries following the Kubernetes spec | A livenessProbe map -`jicofo.readinessProbe` | Map that holds the liveness probe, you can add parameters such as timeout or retries following the Kubernetes spec | A readinessProbe map -`jicofo.xmpp.user` | Name of the XMPP user used by jicofo to authenticate | `focus` -`jicofo.xmpp.password` | Password used by jicofo to authenticate on the XMPP service | 10 random chars -`jicofo.xmpp.componentSecret` | Values of the secret used by jicofo for the xmpp-component | 10 random chars -`jvb.service.enabled` | Boolean to enable os disable the jvb service creation | `false` if `jvb.useHostPort` is `true` otherwise `true` -`jvb.service.type` | Type of the jvb service | `ClusterIP` -`jvb.UDPPort` | UDP port used by jvb, also affects port of service, and hostPort | `10000` -`jvb.TCPPort` | TCP port used by jvb, also affects port of service, and hostPort | `4443` -`jvb.extraEnvs` | Map containing additional environment variables to jvb | '{}' -`jvb.xmpp.user` | Name of the XMPP user used by jvb to authenticate | `jvb` -`jvb.xmpp.password` | Password used by jvb to authenticate on the XMPP service | 10 random chars -`jvb.livenessProbe` | Map that holds the liveness probe, you can add parameters such as timeout or retries following the Kubernetes spec | A livenessProbe map -`jvb.readinessProbe` | Map that holds the liveness probe, you can add parameters such as timeout or retries following the Kubernetes spec | A readinessProbe map -`web.httpsEnabled` | Boolean that enabled tls-termination on the web pods. Useful if you expose the UI via a `Loadbalancer` IP instead of an ingress | `false` -`web.httpRedirect` | Boolean that enabled http-to-https redirection. Useful for ingress that don't support this feature (ex: GKE ingress) | `false` -`web.extraEnvs` | Map containing additional environment variable to web pods | '{}' -`web.livenessProbe` | Map that holds the liveness probe, you can add parameters such as timeout or retries following the Kubernetes spec | A livenessProbe map -`web.readinessProbe` | Map that holds the liveness probe, you can add parameters such as timeout or retries following the Kubernetes spec | A readinessProbe map -`tz` | System Time Zone | `Europe/Amsterdam` diff --git a/examples/helm/charts/prosody/.helmignore b/prosody/.helmignore similarity index 100% rename from examples/helm/charts/prosody/.helmignore rename to prosody/.helmignore diff --git a/examples/helm/charts/prosody/Chart.yaml b/prosody/Chart.yaml similarity index 100% rename from examples/helm/charts/prosody/Chart.yaml rename to prosody/Chart.yaml diff --git a/examples/helm/charts/prosody/templates/NOTES.txt b/prosody/templates/NOTES.txt similarity index 100% rename from examples/helm/charts/prosody/templates/NOTES.txt rename to prosody/templates/NOTES.txt diff --git a/examples/helm/charts/prosody/templates/_helpers.tpl b/prosody/templates/_helpers.tpl similarity index 100% rename from examples/helm/charts/prosody/templates/_helpers.tpl rename to prosody/templates/_helpers.tpl diff --git a/examples/helm/charts/prosody/templates/envs-configmap.yaml b/prosody/templates/envs-configmap.yaml similarity index 100% rename from examples/helm/charts/prosody/templates/envs-configmap.yaml rename to prosody/templates/envs-configmap.yaml diff --git a/examples/helm/charts/prosody/templates/envs-secret.yaml b/prosody/templates/envs-secret.yaml similarity index 100% rename from examples/helm/charts/prosody/templates/envs-secret.yaml rename to prosody/templates/envs-secret.yaml diff --git a/examples/helm/charts/prosody/templates/ingress.yaml b/prosody/templates/ingress.yaml similarity index 100% rename from examples/helm/charts/prosody/templates/ingress.yaml rename to prosody/templates/ingress.yaml diff --git a/examples/helm/charts/prosody/templates/service.yaml b/prosody/templates/service.yaml similarity index 100% rename from examples/helm/charts/prosody/templates/service.yaml rename to prosody/templates/service.yaml diff --git a/examples/helm/charts/prosody/templates/serviceaccount.yaml b/prosody/templates/serviceaccount.yaml similarity index 100% rename from examples/helm/charts/prosody/templates/serviceaccount.yaml rename to prosody/templates/serviceaccount.yaml diff --git a/examples/helm/charts/prosody/templates/statefulset.yaml b/prosody/templates/statefulset.yaml similarity index 100% rename from examples/helm/charts/prosody/templates/statefulset.yaml rename to prosody/templates/statefulset.yaml diff --git a/examples/helm/charts/prosody/templates/tests/test-connection.yaml b/prosody/templates/tests/test-connection.yaml similarity index 100% rename from examples/helm/charts/prosody/templates/tests/test-connection.yaml rename to prosody/templates/tests/test-connection.yaml diff --git a/examples/helm/charts/prosody/values.yaml b/prosody/values.yaml similarity index 100% rename from examples/helm/charts/prosody/values.yaml rename to prosody/values.yaml diff --git a/examples/helm/templates/NOTES.txt b/templates/NOTES.txt similarity index 100% rename from examples/helm/templates/NOTES.txt rename to templates/NOTES.txt diff --git a/examples/helm/templates/_helpers.tpl b/templates/_helpers.tpl similarity index 100% rename from examples/helm/templates/_helpers.tpl rename to templates/_helpers.tpl diff --git a/examples/helm/templates/common-configmap.yaml b/templates/common-configmap.yaml similarity index 100% rename from examples/helm/templates/common-configmap.yaml rename to templates/common-configmap.yaml diff --git a/examples/helm/templates/ingress.yaml b/templates/ingress.yaml similarity index 100% rename from examples/helm/templates/ingress.yaml rename to templates/ingress.yaml diff --git a/examples/helm/templates/jicofo/_helper.tpl b/templates/jicofo/_helper.tpl similarity index 100% rename from examples/helm/templates/jicofo/_helper.tpl rename to templates/jicofo/_helper.tpl diff --git a/examples/helm/templates/jicofo/configmap.yaml b/templates/jicofo/configmap.yaml similarity index 100% rename from examples/helm/templates/jicofo/configmap.yaml rename to templates/jicofo/configmap.yaml diff --git a/examples/helm/templates/jicofo/deployment.yaml b/templates/jicofo/deployment.yaml similarity index 100% rename from examples/helm/templates/jicofo/deployment.yaml rename to templates/jicofo/deployment.yaml diff --git a/examples/helm/templates/jicofo/xmpp-secret.yaml b/templates/jicofo/xmpp-secret.yaml similarity index 100% rename from examples/helm/templates/jicofo/xmpp-secret.yaml rename to templates/jicofo/xmpp-secret.yaml diff --git a/examples/helm/templates/jvb/_helper.tpl b/templates/jvb/_helper.tpl similarity index 100% rename from examples/helm/templates/jvb/_helper.tpl rename to templates/jvb/_helper.tpl diff --git a/examples/helm/templates/jvb/configmap.yaml b/templates/jvb/configmap.yaml similarity index 100% rename from examples/helm/templates/jvb/configmap.yaml rename to templates/jvb/configmap.yaml diff --git a/examples/helm/templates/jvb/deployment.yaml b/templates/jvb/deployment.yaml similarity index 100% rename from examples/helm/templates/jvb/deployment.yaml rename to templates/jvb/deployment.yaml diff --git a/examples/helm/templates/jvb/service.yaml b/templates/jvb/service.yaml similarity index 100% rename from examples/helm/templates/jvb/service.yaml rename to templates/jvb/service.yaml diff --git a/examples/helm/templates/jvb/xmpp-secret.yaml b/templates/jvb/xmpp-secret.yaml similarity index 100% rename from examples/helm/templates/jvb/xmpp-secret.yaml rename to templates/jvb/xmpp-secret.yaml diff --git a/examples/helm/templates/serviceaccount.yaml b/templates/serviceaccount.yaml similarity index 100% rename from examples/helm/templates/serviceaccount.yaml rename to templates/serviceaccount.yaml diff --git a/examples/helm/templates/tests/test-connection.yaml b/templates/tests/test-connection.yaml similarity index 100% rename from examples/helm/templates/tests/test-connection.yaml rename to templates/tests/test-connection.yaml diff --git a/examples/helm/templates/web/_helper.tpl b/templates/web/_helper.tpl similarity index 100% rename from examples/helm/templates/web/_helper.tpl rename to templates/web/_helper.tpl diff --git a/examples/helm/templates/web/configmap.yaml b/templates/web/configmap.yaml similarity index 100% rename from examples/helm/templates/web/configmap.yaml rename to templates/web/configmap.yaml diff --git a/examples/helm/templates/web/deployment.yaml b/templates/web/deployment.yaml similarity index 100% rename from examples/helm/templates/web/deployment.yaml rename to templates/web/deployment.yaml diff --git a/examples/helm/templates/web/service.yaml b/templates/web/service.yaml similarity index 100% rename from examples/helm/templates/web/service.yaml rename to templates/web/service.yaml diff --git a/examples/helm/values.yaml b/values.yaml similarity index 100% rename from examples/helm/values.yaml rename to values.yaml