From 69166eeec2a5cc392959c1173c18dc65c199a736 Mon Sep 17 00:00:00 2001 From: Wei He Date: Mon, 16 May 2022 19:51:50 +0800 Subject: [PATCH] add workflow for 'ct lint' --- .github/workflows/lint-test.yaml | 54 ++++ ct.yaml | 8 + jitsi/Chart.lock | 6 +- jitsi/Chart.yaml | 8 +- jitsi/charts/jitsi-meet-1.2.2.tgz | Bin 16392 -> 0 bytes jitsi/charts/jitsi-meet/.helmignore | 25 ++ jitsi/charts/jitsi-meet/Chart.lock | 6 + jitsi/charts/jitsi-meet/Chart.yaml | 11 + jitsi/charts/jitsi-meet/LICENSE | 21 ++ jitsi/charts/jitsi-meet/README.md | 157 ++++++++++ .../jitsi-meet/charts/prosody/.helmignore | 23 ++ .../jitsi-meet/charts/prosody/Chart.yaml | 6 + .../charts/prosody/templates/NOTES.txt | 21 ++ .../charts/prosody/templates/_helpers.tpl | 63 ++++ .../prosody/templates/envs-configmap.yaml | 12 + .../charts/prosody/templates/envs-secret.yaml | 13 + .../charts/prosody/templates/ingress.yaml | 56 ++++ .../charts/prosody/templates/service.yaml | 26 ++ .../prosody/templates/serviceaccount.yaml | 12 + .../charts/prosody/templates/statefulset.yaml | 130 ++++++++ .../templates/tests/test-connection.yaml | 15 + .../jitsi-meet/charts/prosody/values.yaml | 94 ++++++ jitsi/charts/jitsi-meet/templates/NOTES.txt | 21 ++ .../charts/jitsi-meet/templates/_helpers.tpl | 104 +++++++ .../templates/common-configmap.yaml | 31 ++ .../charts/jitsi-meet/templates/ingress.yaml | 59 ++++ .../jitsi-meet/templates/jibri/_helper.tpl | 18 ++ .../jitsi-meet/templates/jibri/configmap.yaml | 21 ++ .../templates/jibri/deployment.yaml | 93 ++++++ .../jibri/persistentvolumeclaim.yaml | 18 ++ .../jitsi-meet/templates/jibri/service.yaml | 21 ++ .../templates/jibri/xmpp-secret.yaml | 14 + .../jitsi-meet/templates/jicofo/_helper.tpl | 18 ++ .../templates/jicofo/configmap.yaml | 22 ++ .../templates/jicofo/deployment.yaml | 76 +++++ .../templates/jicofo/xmpp-secret.yaml | 11 + .../jitsi-meet/templates/jvb/_helper.tpl | 18 ++ .../jitsi-meet/templates/jvb/configmap.yaml | 28 ++ .../jitsi-meet/templates/jvb/deployment.yaml | 166 ++++++++++ .../templates/jvb/metrics-prometheus.yaml | 27 ++ .../templates/jvb/metrics-service.yaml | 16 + .../jitsi-meet/templates/jvb/service.yaml | 35 +++ .../jitsi-meet/templates/jvb/xmpp-secret.yaml | 10 + .../jitsi-meet/templates/serviceaccount.yaml | 12 + .../templates/tests/test-connection.yaml | 15 + .../jitsi-meet/templates/web/_helper.tpl | 15 + .../jitsi-meet/templates/web/configmap.yaml | 24 ++ .../jitsi-meet/templates/web/deployment.yaml | 84 +++++ .../jitsi-meet/templates/web/service.yaml | 18 ++ jitsi/charts/jitsi-meet/values.yaml | 288 ++++++++++++++++++ jitsi/ci/dummy-values.yaml | 3 + jitsi/values.yaml | 4 +- lintconf.yaml | 7 + 53 files changed, 2054 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/lint-test.yaml create mode 100644 ct.yaml delete mode 100644 jitsi/charts/jitsi-meet-1.2.2.tgz create mode 100644 jitsi/charts/jitsi-meet/.helmignore create mode 100644 jitsi/charts/jitsi-meet/Chart.lock create mode 100644 jitsi/charts/jitsi-meet/Chart.yaml create mode 100644 jitsi/charts/jitsi-meet/LICENSE create mode 100644 jitsi/charts/jitsi-meet/README.md create mode 100644 jitsi/charts/jitsi-meet/charts/prosody/.helmignore create mode 100644 jitsi/charts/jitsi-meet/charts/prosody/Chart.yaml create mode 100644 jitsi/charts/jitsi-meet/charts/prosody/templates/NOTES.txt create mode 100644 jitsi/charts/jitsi-meet/charts/prosody/templates/_helpers.tpl create mode 100644 jitsi/charts/jitsi-meet/charts/prosody/templates/envs-configmap.yaml create mode 100644 jitsi/charts/jitsi-meet/charts/prosody/templates/envs-secret.yaml create mode 100644 jitsi/charts/jitsi-meet/charts/prosody/templates/ingress.yaml create mode 100644 jitsi/charts/jitsi-meet/charts/prosody/templates/service.yaml create mode 100644 jitsi/charts/jitsi-meet/charts/prosody/templates/serviceaccount.yaml create mode 100644 jitsi/charts/jitsi-meet/charts/prosody/templates/statefulset.yaml create mode 100644 jitsi/charts/jitsi-meet/charts/prosody/templates/tests/test-connection.yaml create mode 100644 jitsi/charts/jitsi-meet/charts/prosody/values.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/NOTES.txt create mode 100644 jitsi/charts/jitsi-meet/templates/_helpers.tpl create mode 100644 jitsi/charts/jitsi-meet/templates/common-configmap.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/ingress.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/jibri/_helper.tpl create mode 100644 jitsi/charts/jitsi-meet/templates/jibri/configmap.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/jibri/deployment.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/jibri/persistentvolumeclaim.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/jibri/service.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/jibri/xmpp-secret.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/jicofo/_helper.tpl create mode 100644 jitsi/charts/jitsi-meet/templates/jicofo/configmap.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/jicofo/deployment.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/jicofo/xmpp-secret.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/jvb/_helper.tpl create mode 100644 jitsi/charts/jitsi-meet/templates/jvb/configmap.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/jvb/deployment.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/jvb/metrics-prometheus.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/jvb/metrics-service.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/jvb/service.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/jvb/xmpp-secret.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/serviceaccount.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/tests/test-connection.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/web/_helper.tpl create mode 100644 jitsi/charts/jitsi-meet/templates/web/configmap.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/web/deployment.yaml create mode 100644 jitsi/charts/jitsi-meet/templates/web/service.yaml create mode 100644 jitsi/charts/jitsi-meet/values.yaml create mode 100644 jitsi/ci/dummy-values.yaml create mode 100644 lintconf.yaml diff --git a/.github/workflows/lint-test.yaml b/.github/workflows/lint-test.yaml new file mode 100644 index 0000000..5f10a72 --- /dev/null +++ b/.github/workflows/lint-test.yaml @@ -0,0 +1,54 @@ +name: Lint and Test Charts + +on: pull_request + +jobs: + lint-test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Set up Helm + uses: azure/setup-helm@v1 + with: + version: v3.8.2 + + - uses: actions/setup-python@v3 + with: + python-version: '3.x' + + - name: Set up chart-testing + uses: helm/chart-testing-action@v2.2.1 + with: + version: v3.5.1 + + - name: Run chart-testing (list-changed) + id: list-changed + run: | + changed=$(ct list-changed --config ct.yaml) + if [[ -n "$changed" ]]; then + echo "::set-output name=changed::true" + fi + + - name: Run chart-testing (lint) + run: ct lint --config ct.yaml --lint-conf lintconf.yaml --validate-maintainers=false + + - name: Create k3s cluster + uses: debianmaster/actions-k3s@master + with: + version: 'v1.23.6-k3s1' + if: steps.list-changed.outputs.changed == 'true' + + - name: Wait for traefik + run: | + kubectl -n kube-system wait --for=condition=complete job/helm-install-traefik-crd + kubectl -n kube-system wait --for=condition=complete job/helm-install-traefik + kubectl -n kube-system wait --for=condition=available deploy/traefik + if: steps.list-changed.outputs.changed == 'true' + + - name: Run chart-testing (install) + run: ct install --config ct.yaml --chart-dirs . --charts jitsi + if: steps.list-changed.outputs.changed == 'true' diff --git a/ct.yaml b/ct.yaml new file mode 100644 index 0000000..d57c77f --- /dev/null +++ b/ct.yaml @@ -0,0 +1,8 @@ +# See https://github.com/helm/chart-testing#configuration +remote: origin +target-branch: main +chart-dirs: + - . +chart-repos: + - jitsi=https://jitsi-contrib.github.io/jitsi-helm +helm-extra-args: --timeout 600s diff --git a/jitsi/Chart.lock b/jitsi/Chart.lock index f582b6c..27180af 100644 --- a/jitsi/Chart.lock +++ b/jitsi/Chart.lock @@ -1,6 +1,6 @@ dependencies: - name: jitsi-meet - repository: https://jitsi-contrib.github.io/jitsi-helm + repository: "" version: 1.2.2 -digest: sha256:165664c1a23bc9760177e63740a861360eee007b432d9044ea449e77fba95d94 -generated: "2022-05-02T17:15:02.132446+08:00" +digest: sha256:f27d02481ecd087ba8c56aa5e8f76e97f177ff8488a17b016e4bc1c54c253f23 +generated: "2022-05-20T21:45:04.926228+08:00" diff --git a/jitsi/Chart.yaml b/jitsi/Chart.yaml index 09309a9..18afc62 100644 --- a/jitsi/Chart.yaml +++ b/jitsi/Chart.yaml @@ -1,7 +1,7 @@ +--- apiVersion: v2 name: jitsi-deploy -version: 0.1.0 +version: 0.1.1 dependencies: -- name: jitsi-meet - version: 1.2.2 - repository: "https://jitsi-contrib.github.io/jitsi-helm" + - name: jitsi-meet + version: 1.2.2 diff --git a/jitsi/charts/jitsi-meet-1.2.2.tgz b/jitsi/charts/jitsi-meet-1.2.2.tgz deleted file mode 100644 index 29703ecb9e02b0d4f71811ed29e19ffef168536b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16392 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 diff --git a/jitsi/charts/jitsi-meet/.helmignore b/jitsi/charts/jitsi-meet/.helmignore new file mode 100644 index 0000000..8670119 --- /dev/null +++ b/jitsi/charts/jitsi-meet/.helmignore @@ -0,0 +1,25 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# GitHub Pages +docs/ diff --git a/jitsi/charts/jitsi-meet/Chart.lock b/jitsi/charts/jitsi-meet/Chart.lock new file mode 100644 index 0000000..6832fcd --- /dev/null +++ b/jitsi/charts/jitsi-meet/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: prosody + repository: "" + version: '*' +digest: sha256:fa9f3f9cfe91aefb81520e7b941b3412241dba7e1631a69138f0fe328c3795ff +generated: "2020-07-15T11:12:58.968506151+02:00" diff --git a/jitsi/charts/jitsi-meet/Chart.yaml b/jitsi/charts/jitsi-meet/Chart.yaml new file mode 100644 index 0000000..8157c40 --- /dev/null +++ b/jitsi/charts/jitsi-meet/Chart.yaml @@ -0,0 +1,11 @@ +apiVersion: v2 +appVersion: stable-6865 +dependencies: +- condition: prosody.enabled + name: prosody + repository: "" + version: 1.2.2 +description: A Helm chart for Kubernetes +name: jitsi-meet +type: application +version: 1.2.2 diff --git a/jitsi/charts/jitsi-meet/LICENSE b/jitsi/charts/jitsi-meet/LICENSE new file mode 100644 index 0000000..c119d99 --- /dev/null +++ b/jitsi/charts/jitsi-meet/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 jitsi-contrib + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/jitsi/charts/jitsi-meet/README.md b/jitsi/charts/jitsi-meet/README.md new file mode 100644 index 0000000..95e66a4 --- /dev/null +++ b/jitsi/charts/jitsi-meet/README.md @@ -0,0 +1,157 @@ +# Helm Chart for 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; + +```bash +helm repo add jitsi https://jitsi-contrib.github.io/jitsi-helm/ +helm install myjitsi jitsi/jitsi-meet +``` + +## 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 + + # 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` +`jibri.enabled` | Enable Jibri service | `false` +`jibri.persistence.enabled` | Enable persistent storage for Jibri recordings | `false` +`jibri.persistence.size` | Jibri persistent storage size | `4Gi` +`jibri.persistence.existingClaim` | Use pre-created PVC for Jibri | `(unset)` +`jibri.persistence.storageClassName` | StorageClass to use with Jibri | `(unset)` +`jibri.shm.enabled` | Allocate shared memory to Jibri pod | `false` +`jibri.shm.useHost` | Pass `/dev/shm` from host to Jibri | `false` +`jibri.shm.size` | Jibri shared memory size | `256Mi` +`jibri.replicaCount` | Number of replica of the jibri pods | `1` +`jibri.image.repository` | Name of the image to use for the jibri pods | `jitsi/jibri` +`jibri.extraEnvs` | Map containing additional environment variables for jibri | '{}' +`jibri.livenessProbe` | Map that holds the liveness probe, you can add parameters such as timeout or retries following the Kubernetes spec | A livenessProbe map +`jibri.readinessProbe` | Map that holds the liveness probe, you can add parameters such as timeout or retries following the Kubernetes spec | A readinessProbe map +`jibri.breweryMuc` | Name of the XMPP MUC used by jibri | `jibribrewery` +`jibri.xmpp.user` | Name of the XMPP user used by jibri to authenticate | `jibri` +`jibri.xmpp.password` | Password used by jibri to authenticate on the XMPP service | 10 random chars +`jibri.recorder.user` | Name of the XMPP user used by jibri to record | `recorder` +`jibri.recorder.password` | Password used by jibri to record on the XMPP service | 10 random chars +`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.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 +`jvb.websockets.enabled` | Enable WebSocket support for JVB/Colibri | `false` +`jvb.websockets.serverID` | Set JVB/Colibri WS Server ID | `podIP` (see `values.yaml`) +`jvb.metrics.enabled` | Boolean that control the metrics exporter for jvb. If true the `ServiceMonitor` will also created | `false` +`jvb.metrics.prometheusAnnotations` | Boolean that controls the generation of prometheus annotations, to expose metrics for HPA | `false` +`jvb.metrics.image.repository` | Default image repository for metrics exporter | `docker.io/systemli/prometheus-jitsi-meet-exporter` +`jvb.metrics.image.tag` | Default tag for metrics exporter | `1.1.5` +`jvb.metrics.image.pullPolicy` | ImagePullPolicy for metrics exporter | `IfNotPresent` +`jvb.metrics.serviceMonitor.enabled` | `ServiceMonitor` for Prometheus | `true` +`jvb.metrics.serviceMonitor.selector` | Selector for `ServiceMonitor` | `{ release: prometheus-operator }` +`jvb.metrics.serviceMonitor.interval` | Interval for `ServiceMonitor` | `10s` +`jvb.metrics.serviceMonitor.honorLabels` | Make `ServiceMonitor` honor labels | `false` +`jvb.metrics.resources` | Resources for the metrics container | `{ requests: { cpu: 10m, memory: 16Mi }, limits: { cpu: 20m, memory: 32Mi } }` +`octo.enabled` | Boolean to enable or disable the OCTO mode, for a single region | `false` +`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.resolverIP` | DNS service IP for Web container to use | (unset) +`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` + +## Package + +```bash +helm package . -d docs +helm repo index docs --url https://jitsi-contrib.github.io/jitsi-helm/ +``` diff --git a/jitsi/charts/jitsi-meet/charts/prosody/.helmignore b/jitsi/charts/jitsi-meet/charts/prosody/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/jitsi/charts/jitsi-meet/charts/prosody/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/jitsi/charts/jitsi-meet/charts/prosody/Chart.yaml b/jitsi/charts/jitsi-meet/charts/prosody/Chart.yaml new file mode 100644 index 0000000..9134fef --- /dev/null +++ b/jitsi/charts/jitsi-meet/charts/prosody/Chart.yaml @@ -0,0 +1,6 @@ +apiVersion: v2 +appVersion: 0.11.13 +description: A Helm chart for Kubernetes +name: prosody +type: application +version: 1.2.2 diff --git a/jitsi/charts/jitsi-meet/charts/prosody/templates/NOTES.txt b/jitsi/charts/jitsi-meet/charts/prosody/templates/NOTES.txt new file mode 100644 index 0000000..8df9491 --- /dev/null +++ b/jitsi/charts/jitsi-meet/charts/prosody/templates/NOTES.txt @@ -0,0 +1,21 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ . }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "prosody.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "prosody.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "prosody.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "prosody.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80 +{{- end }} diff --git a/jitsi/charts/jitsi-meet/charts/prosody/templates/_helpers.tpl b/jitsi/charts/jitsi-meet/charts/prosody/templates/_helpers.tpl new file mode 100644 index 0000000..3370472 --- /dev/null +++ b/jitsi/charts/jitsi-meet/charts/prosody/templates/_helpers.tpl @@ -0,0 +1,63 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "prosody.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "prosody.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "prosody.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Common labels +*/}} +{{- define "prosody.labels" -}} +helm.sh/chart: {{ include "prosody.chart" . }} +{{ include "prosody.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end -}} + +{{/* +Selector labels +*/}} +{{- define "prosody.selectorLabels" -}} +app.kubernetes.io/name: {{ include "prosody.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} + +{{/* +Create the name of the service account to use +*/}} +{{- define "prosody.serviceAccountName" -}} +{{- if .Values.serviceAccount.create -}} + {{ default (include "prosody.fullname" .) .Values.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.serviceAccount.name }} +{{- end -}} +{{- end -}} diff --git a/jitsi/charts/jitsi-meet/charts/prosody/templates/envs-configmap.yaml b/jitsi/charts/jitsi-meet/charts/prosody/templates/envs-configmap.yaml new file mode 100644 index 0000000..fc3cd0a --- /dev/null +++ b/jitsi/charts/jitsi-meet/charts/prosody/templates/envs-configmap.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "prosody.fullname" . }} + labels: + {{- include "prosody.labels" . | nindent 4 }} +data: + {{- range $key, $value := .Values.env }} + {{- if not (kindIs "invalid" $value) }} + {{ $key }}: {{ tpl $value $ | quote }} + {{- end }} + {{- end }} diff --git a/jitsi/charts/jitsi-meet/charts/prosody/templates/envs-secret.yaml b/jitsi/charts/jitsi-meet/charts/prosody/templates/envs-secret.yaml new file mode 100644 index 0000000..6c9d059 --- /dev/null +++ b/jitsi/charts/jitsi-meet/charts/prosody/templates/envs-secret.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "prosody.fullname" . }} + labels: + {{- include "prosody.labels" . | nindent 4 }} +type: Opaque +data: + {{- range $key, $value := .Values.secretEnvs }} + {{- if not (kindIs "invalid" $value) }} + {{ $key }}: {{ tpl $value $ | b64enc }} + {{- end }} + {{- end }} diff --git a/jitsi/charts/jitsi-meet/charts/prosody/templates/ingress.yaml b/jitsi/charts/jitsi-meet/charts/prosody/templates/ingress.yaml new file mode 100644 index 0000000..fc9612f --- /dev/null +++ b/jitsi/charts/jitsi-meet/charts/prosody/templates/ingress.yaml @@ -0,0 +1,56 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "prosody.fullname" . -}} +{{- $svcPort := index .Values.service.ports "bosh-insecure" -}} +{{- $kubeVersion := .Capabilities.KubeVersion.GitVersion -}} +{{- if semverCompare ">=1.19-0" $kubeVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" $kubeVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "prosody.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: +{{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} +{{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ . }} + pathType: Prefix + backend: + {{ if semverCompare ">=1.19-0" $kubeVersion }} + service: + name: {{ $fullName }} + port: + {{ if kindIs "float64" $svcPort }} + number: {{ $svcPort }} + {{ else }} + name: {{ $svcPort }} + {{ end }} + {{ else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{ end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/jitsi/charts/jitsi-meet/charts/prosody/templates/service.yaml b/jitsi/charts/jitsi-meet/charts/prosody/templates/service.yaml new file mode 100644 index 0000000..f95c790 --- /dev/null +++ b/jitsi/charts/jitsi-meet/charts/prosody/templates/service.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "prosody.fullname" . }} + labels: + {{- include "prosody.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ index .Values.service.ports "bosh-insecure" }} + protocol: TCP + name: tcp-bosh-insecure + - port: {{ index .Values.service.ports "bosh-secure" }} + protocol: TCP + name: tcp-bosh-secure + - port: {{ index .Values.service.ports "xmpp-component" }} + protocol: TCP + name: tcp-xmpp-component + - port: {{ index .Values.service.ports "xmpp-c2s" }} + protocol: TCP + name: tcp-xmpp-c2 + - port: {{ index .Values.service.ports "xmpp-s2s" }} + protocol: TCP + name: tcp-xmpp-s2 + selector: + {{- include "prosody.selectorLabels" . | nindent 4 }} diff --git a/jitsi/charts/jitsi-meet/charts/prosody/templates/serviceaccount.yaml b/jitsi/charts/jitsi-meet/charts/prosody/templates/serviceaccount.yaml new file mode 100644 index 0000000..c5706a6 --- /dev/null +++ b/jitsi/charts/jitsi-meet/charts/prosody/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "prosody.serviceAccountName" . }} + labels: + {{- include "prosody.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end -}} diff --git a/jitsi/charts/jitsi-meet/charts/prosody/templates/statefulset.yaml b/jitsi/charts/jitsi-meet/charts/prosody/templates/statefulset.yaml new file mode 100644 index 0000000..dbd13db --- /dev/null +++ b/jitsi/charts/jitsi-meet/charts/prosody/templates/statefulset.yaml @@ -0,0 +1,130 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: {{ include "prosody.fullname" . }} + labels: + {{- include "prosody.labels" . | nindent 4 }} + {{- with .Values.annotations }} + annotations: + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + serviceName: "prosody" + replicas: 1 + selector: + matchLabels: + {{- include "prosody.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "prosody.selectorLabels" . | nindent 8 }} + {{- range $label, $value := mergeOverwrite .Values.global.podLabels .Values.podLabels }} + {{ $label }}: {{ $value }} + {{- end }} + {{- with mergeOverwrite .Values.global.podAnnotations .Values.podAnnotations }} + annotations: + {{- range $annotation, $value := . }} + {{ $annotation }}: {{ $value }} + {{- end }} + {{- end }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "prosody.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ tpl (default .Chart.AppVersion .Values.image.tag ) . }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + envFrom: + - configMapRef: + name: {{ include "prosody.fullname" . }} + - secretRef: + name: {{ include "prosody.fullname" . }} + {{- range .Values.extraEnvFrom }} + - {{ tpl (toYaml . ) $ | indent 12 | trim }} + {{- end }} + {{- if .Values.extraEnvs }} + env: + {{- range .Values.extraEnvs }} + - {{ tpl (toYaml . ) $ | indent 12 | trim }} + {{- end }} + {{- end }} + ports: + - name: xmpp-c2s + containerPort: {{ index .Values.service.ports "xmpp-c2s" }} + protocol: TCP + - name: xmpp-s2s + containerPort: {{ index .Values.service.ports "xmpp-s2s" }} + protocol: TCP + - name: xmpp-component + containerPort: {{ index .Values.service.ports "xmpp-component" }} + protocol: TCP + - name: bosh-insecure + containerPort: {{ index .Values.service.ports "bosh-insecure" }} + protocol: TCP + - name: bosh-secure + containerPort: {{ index .Values.service.ports "bosh-secure" }} + protocol: TCP + {{- with .Values.livenessProbe }} + livenessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.readinessProbe }} + readinessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + volumeMounts: + - name: prosody-data + mountPath: {{ .Values.dataDir }} + {{- with .Values.extraVolumeMounts }} + {{- toYaml . | nindent 10 }} + {{- end }} + volumes: + - name: prosody-data + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: prosody-data + {{- else }} + emptyDir: {} + {{- end }} + {{- with .Values.extraVolumes }} + {{- toYaml . | nindent 6 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- if or .Values.persistence.enabled .Values.extraVolumeClaimTemplates }} + volumeClaimTemplates: + - metadata: + name: prosody-data + spec: + accessModes: + - ReadWriteOnce + volumeMode: Filesystem + resources: + requests: + storage: {{ .Values.persistence.size }} + {{- with .Values.persistence.storageClassName }} + storageClassName: {{ . | quote }} + {{- end }} + {{- with .Values.extraVolumeClaimTemplates }} + {{- toYaml . | nindent 2 }} + {{- end }} + {{- end }} diff --git a/jitsi/charts/jitsi-meet/charts/prosody/templates/tests/test-connection.yaml b/jitsi/charts/jitsi-meet/charts/prosody/templates/tests/test-connection.yaml new file mode 100644 index 0000000..0da4bb4 --- /dev/null +++ b/jitsi/charts/jitsi-meet/charts/prosody/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "prosody.fullname" . }}-test-connection" + labels: + {{- include "prosody.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test-success +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "prosody.fullname" . }}:{{ index .Values.service.ports "bosh-insecure" }}/http-bind'] + restartPolicy: Never diff --git a/jitsi/charts/jitsi-meet/charts/prosody/values.yaml b/jitsi/charts/jitsi-meet/charts/prosody/values.yaml new file mode 100644 index 0000000..c539053 --- /dev/null +++ b/jitsi/charts/jitsi-meet/charts/prosody/values.yaml @@ -0,0 +1,94 @@ +# Default values for prosody. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +image: + repository: nginx + pullPolicy: IfNotPresent + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +domain: + +dataDir: /config/data +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: + +podLabels: {} +podAnnotations: {} +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + ports: + bosh-insecure: 5280 + bosh-secure: 5281 + xmpp-c2s: 5222 + xmpp-s2s: 5269 + xmpp-component: 5347 + +ingress: + enabled: false + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: [] + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +livenessProbe: + httpGet: + path: /http-bind + port: bosh-insecure +readinessProbe: + httpGet: + path: /http-bind + port: bosh-insecure + +persistence: + enabled: true + size: 3G + storageClassName: + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +extraEnvs: [] +extraEnvFrom: [] +secretEnvs: {} diff --git a/jitsi/charts/jitsi-meet/templates/NOTES.txt b/jitsi/charts/jitsi-meet/templates/NOTES.txt new file mode 100644 index 0000000..c1e2bcc --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/NOTES.txt @@ -0,0 +1,21 @@ +1. Get the application URL by running these commands: +{{- if .Values.web.ingress.enabled }} +{{- range $host := .Values.web.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.web.ingress.tls }}s{{ end }}://{{ $host.host }}{{ . }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.web.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "jitsi-meet.web.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.web.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "jitsi-meet.web.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "jitsi-meet.web.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.web.service.port }} +{{- else if contains "ClusterIP" .Values.web.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "jitsi-meet.name" . }},app.kubernetes.io/component=web,app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80 +{{- end }} diff --git a/jitsi/charts/jitsi-meet/templates/_helpers.tpl b/jitsi/charts/jitsi-meet/templates/_helpers.tpl new file mode 100644 index 0000000..2234537 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/_helpers.tpl @@ -0,0 +1,104 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "jitsi-meet.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "jitsi-meet.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "jitsi-meet.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Common labels +*/}} +{{- define "jitsi-meet.labels" -}} +helm.sh/chart: {{ include "jitsi-meet.chart" . }} +{{ include "jitsi-meet.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end -}} + +{{/* +Selector labels +*/}} +{{- define "jitsi-meet.selectorLabels" -}} +app.kubernetes.io/name: {{ include "jitsi-meet.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} + +{{/* +Create the name of the service account to use +*/}} +{{- define "jitsi-meet.serviceAccountName" -}} +{{- if .Values.serviceAccount.create -}} + {{ default (include "jitsi-meet.fullname" .) .Values.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* + https://github.com/helm/helm/issues/4535 +*/}} +{{- define "call-nested" }} +{{- $dot := index . 0 }} +{{- $subchart := index . 1 }} +{{- $template := index . 2 }} +{{- include $template (dict "Chart" (dict "Name" $subchart) "Values" (index $dot.Values $subchart) "Release" $dot.Release "Capabilities" $dot.Capabilities) }} +{{- end }} + +{{- define "jitsi-meet.xmpp.domain" -}} +{{- if .Values.xmpp.domain -}} + {{ .Values.xmpp.domain }} +{{- else -}} + {{ .Release.Namespace }}.svc +{{- end -}} +{{- end -}} + +{{- define "jitsi-meet.xmpp.server" -}} +{{- if .Values.prosody.server -}} + {{ .Values.prosody.server }} +{{- else -}} + {{ include "call-nested" (list . "prosody" "prosody.fullname") }}.{{ .Release.Namespace }}.svc +{{- end -}} +{{- end -}} + + +{{- define "jitsi-meet.publicURL" -}} +{{- if .Values.publicURL }} +{{- .Values.publicURL -}} +{{- else -}} +{{- if .Values.web.ingress.tls -}}https://{{- else -}}http://{{- end -}} +{{- if .Values.web.ingress.tls -}} +{{- (.Values.web.ingress.tls|first).hosts|first -}} +{{- else if .Values.web.ingress.hosts -}} +{{- (.Values.web.ingress.hosts|first).host -}} +{{ required "You need to define a publicURL or some value for ingress" .Values.publicURL }} +{{- end -}} +{{- end -}} +{{- end -}} diff --git a/jitsi/charts/jitsi-meet/templates/common-configmap.yaml b/jitsi/charts/jitsi-meet/templates/common-configmap.yaml new file mode 100644 index 0000000..e0c2071 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/common-configmap.yaml @@ -0,0 +1,31 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "call-nested" (list . "prosody" "prosody.fullname") }}-common + labels: + {{- include "jitsi-meet.labels" . | nindent 4 }} +data: + ENABLE_AUTH: {{ ternary "1" "0" .Values.enableAuth | quote }} + ENABLE_GUESTS: {{ ternary "1" "0" .Values.enableGuests | quote }} + PUBLIC_URL: {{ include "jitsi-meet.publicURL" . }} + XMPP_DOMAIN: {{ include "jitsi-meet.xmpp.domain" . }} + XMPP_MUC_DOMAIN: {{ .Values.xmpp.mucDomain | default (printf "muc.%s" (include "jitsi-meet.xmpp.domain" .)) }} + XMPP_AUTH_DOMAIN: {{ .Values.xmpp.authDomain | default (printf "auth.%s" (include "jitsi-meet.xmpp.domain" .)) }} + XMPP_GUEST_DOMAIN: {{ .Values.xmpp.guestDomain | default (printf "guest.%s" (include "jitsi-meet.xmpp.domain" .)) }} + XMPP_RECORDER_DOMAIN: {{ .Values.xmpp.recorderDomain | default (printf "recorder.%s" (include "jitsi-meet.xmpp.domain" .)) }} + XMPP_INTERNAL_MUC_DOMAIN: {{ .Values.xmpp.internalMucDomain | default (printf "internal-muc.%s" (include "jitsi-meet.xmpp.domain" .)) }} + {{- if .Values.jibri.enabled }} + ENABLE_RECORDING: "true" + {{- end }} + TZ: '{{ .Values.tz }}' + {{- range $key, $value := .Values.extraCommonEnvs }} + {{- if not (kindIs "invalid" $value) }} + {{ $key }}: {{ tpl $value $ | quote }} + {{- end }} + {{- end }} + {{- if .Values.octo.enabled }} + ENABLE_OCTO: "1" + TESTING_OCTO_PROBABILITY: "1" + DEPLOYMENTINFO_REGION: "all" + DEPLOYMENTINFO_USERREGION: "all" + {{- end }} \ No newline at end of file diff --git a/jitsi/charts/jitsi-meet/templates/ingress.yaml b/jitsi/charts/jitsi-meet/templates/ingress.yaml new file mode 100644 index 0000000..1ac0ab9 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/ingress.yaml @@ -0,0 +1,59 @@ +{{- if .Values.web.ingress.enabled -}} +{{- $fullName := include "jitsi-meet.web.fullname" . -}} +{{- $svcPort := .Values.web.service.port -}} +{{- $kubeVersion := .Capabilities.KubeVersion.GitVersion -}} +{{- if semverCompare ">=1.19-0" $kubeVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" $kubeVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "jitsi-meet.web.labels" . | nindent 4 }} + {{- with .Values.web.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: +{{- if and .Values.web.ingress.ingressClassName (semverCompare ">=1.19-0" $kubeVersion) }} + ingressClassName: {{ .Values.web.ingress.ingressClassName }} +{{- end }} +{{- if .Values.web.ingress.tls }} + tls: + {{- range .Values.web.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} +{{- end }} + rules: + {{- range .Values.web.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ . }} + pathType: Prefix + backend: + {{ if semverCompare ">=1.19-0" $kubeVersion }} + service: + name: {{ $fullName }} + port: + {{ if kindIs "float64" $svcPort }} + number: {{ $svcPort }} + {{ else }} + name: {{ $svcPort }} + {{ end }} + {{ else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{ end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/jitsi/charts/jitsi-meet/templates/jibri/_helper.tpl b/jitsi/charts/jitsi-meet/templates/jibri/_helper.tpl new file mode 100644 index 0000000..30d1bc4 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jibri/_helper.tpl @@ -0,0 +1,18 @@ + +{{- define "jitsi-meet.jibri.fullname" -}} +{{ include "jitsi-meet.fullname" . }}-jibri +{{- end -}} + +{{- define "jitsi-meet.jibri.labels" -}} +{{ include "jitsi-meet.labels" . }} +app.kubernetes.io/component: jibri +{{- end -}} + +{{- define "jitsi-meet.jibri.selectorLabels" -}} +{{ include "jitsi-meet.selectorLabels" . }} +app.kubernetes.io/component: jibri +{{- end -}} + +{{- define "jitsi-meet.jibri.secret" -}} +{{ include "call-nested" (list . "prosody" "prosody.fullname") }}-jibri +{{- end -}} diff --git a/jitsi/charts/jitsi-meet/templates/jibri/configmap.yaml b/jitsi/charts/jitsi-meet/templates/jibri/configmap.yaml new file mode 100644 index 0000000..b19ce11 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jibri/configmap.yaml @@ -0,0 +1,21 @@ +{{- if .Values.jibri.enabled }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "jitsi-meet.jibri.fullname" . }} + labels: + {{- include "jitsi-meet.jibri.labels" . | nindent 4 }} +data: + XMPP_SERVER: '{{ include "jitsi-meet.xmpp.server" . }}' + JIBRI_BREWERY_MUC: '{{ .Values.jibri.breweryMuc }}' + JIBRI_RECORDING_DIR: '{{ .Values.jibri.recordingDir | default "/data/recordings" }}' + JIBRI_FINALIZE_RECORDING_SCRIPT_PATH: "/config/finalize.sh" + JIBRI_STRIP_DOMAIN_JID: muc + JIBRI_LOGS_DIR: "/data/logs" + DISPLAY: ":0" + {{- range $key, $value := .Values.jibri.extraEnvs }} + {{- if not (kindIs "invalid" $value) }} + {{ $key }}: {{ tpl $value $ | quote }} + {{- end }} + {{- end }} +{{- end }} diff --git a/jitsi/charts/jitsi-meet/templates/jibri/deployment.yaml b/jitsi/charts/jitsi-meet/templates/jibri/deployment.yaml new file mode 100644 index 0000000..bb19052 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jibri/deployment.yaml @@ -0,0 +1,93 @@ +{{- if .Values.jibri.enabled }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "jitsi-meet.jibri.fullname" . }} + labels: + {{- include "jitsi-meet.jibri.labels" . | nindent 4 }} + {{- with .Values.jibri.annotations }} + annotations: + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.jibri.replicaCount | default 1 }} + selector: + matchLabels: + {{- include "jitsi-meet.jibri.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "jitsi-meet.jibri.selectorLabels" . | nindent 8 }} + annotations: + checksum/config: {{ include (print $.Template.BasePath "/jibri/configmap.yaml") . | sha256sum }} + checksum/secret: {{ include (print $.Template.BasePath "/jibri/xmpp-secret.yaml") . | sha256sum }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "jitsi-meet.serviceAccountName" . }} + containers: + - name: {{ .Chart.Name }} + securityContext: + privileged: true + image: "{{ .Values.jibri.image.repository }}:{{ default .Chart.AppVersion .Values.jibri.image.tag }}" + imagePullPolicy: {{ pluck "pullPolicy" .Values.jibri.image .Values.image | first }} + ports: + - name: http-internal + containerPort: 3333 + - name: http-api + containerPort: 2222 + {{- with default .Values.jibri.livenessProbe .Values.jibri.livenessProbeOverride }} + livenessProbe: + {{- toYaml . | nindent 10 }} + {{- end }} + {{- with default .Values.jibri.readinessProbe .Values.jibri.readinessProbeOverride }} + readinessProbe: + {{- toYaml . | nindent 10 }} + {{- end }} + + envFrom: + - secretRef: + name: {{ include "call-nested" (list . "prosody" "prosody.fullname") }}-jibri + - configMapRef: + name: {{ include "call-nested" (list . "prosody" "prosody.fullname") }}-common + - configMapRef: + name: {{ include "jitsi-meet.jibri.fullname" . }} + + resources: + {{- toYaml .Values.jibri.resources | nindent 12 }} + + volumeMounts: + - name: jibri-data + mountPath: /data + - name: dev-snd + mountPath: /dev/snd + {{- if .Values.jibri.shm.enabled }} + - name: dev-shm + mountPath: /dev/shm + {{- end }} + + volumes: + - name: jibri-data + {{- if .Values.jibri.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.jibri.persistence.existingClaim | default (include "jitsi-meet.jibri.fullname" .) }} + {{- else }} + emptyDir: {} + {{- end }} + - name: dev-snd + hostPath: + path: /dev/snd + {{- if .Values.jibri.shm.enabled }} + - name: dev-shm + {{- if .Values.jibri.shm.useHost }} + hostPath: + path: /dev/shm + {{- else }} + emptyDir: + medium: Memory + sizeLimit: {{ .Values.jibri.shm.size | default "256Mi" | quote }} + {{- end }} + {{- end }} +{{- end }} diff --git a/jitsi/charts/jitsi-meet/templates/jibri/persistentvolumeclaim.yaml b/jitsi/charts/jitsi-meet/templates/jibri/persistentvolumeclaim.yaml new file mode 100644 index 0000000..7d1aed6 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jibri/persistentvolumeclaim.yaml @@ -0,0 +1,18 @@ +{{- if and .Values.jibri.enabled .Values.jibri.persistence.enabled (not .Values.jibri.persistence.existingClaim)}} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ include "jitsi-meet.jibri.fullname" . }} + labels: + {{- include "jitsi-meet.jibri.labels" . | nindent 4 }} + namespace: {{ .Release.Namespace }} +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.jibri.persistence.size | quote }} + {{- with .Values.jibri.persistence.storageClassName }} + storageClassName: {{ . | quote }} + {{- end }} +{{- end -}} diff --git a/jitsi/charts/jitsi-meet/templates/jibri/service.yaml b/jitsi/charts/jitsi-meet/templates/jibri/service.yaml new file mode 100644 index 0000000..f2cf1d2 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jibri/service.yaml @@ -0,0 +1,21 @@ +{{- if .Values.jibri.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "jitsi-meet.jibri.fullname" . }} + labels: + {{- include "jitsi-meet.jibri.labels" . | nindent 4 }} +spec: + type: ClusterIP + ports: + - name: http-internal + port: 3333 + targetPort: 3333 + protocol: TCP + - name: http-api + port: 2222 + targetPort: 2222 + protocol: TCP + selector: + {{- include "jitsi-meet.jibri.selectorLabels" . | nindent 4 }} +{{- end }} diff --git a/jitsi/charts/jitsi-meet/templates/jibri/xmpp-secret.yaml b/jitsi/charts/jitsi-meet/templates/jibri/xmpp-secret.yaml new file mode 100644 index 0000000..441908f --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jibri/xmpp-secret.yaml @@ -0,0 +1,14 @@ +{{- if .Values.jibri.enabled }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "call-nested" (list . "prosody" "prosody.fullname") }}-jibri + labels: + {{- include "jitsi-meet.jibri.labels" . | nindent 4 }} +type: Opaque +data: + JIBRI_XMPP_USER: '{{ .Values.jibri.xmpp.user | b64enc }}' + JIBRI_XMPP_PASSWORD: '{{ default (randAlphaNum 10) .Values.jibri.xmpp.password | b64enc }}' + JIBRI_RECORDER_USER: '{{ .Values.jibri.recorder.user | b64enc }}' + JIBRI_RECORDER_PASSWORD: '{{ default (randAlphaNum 10) .Values.jibri.recorder.password | b64enc }}' +{{- end }} diff --git a/jitsi/charts/jitsi-meet/templates/jicofo/_helper.tpl b/jitsi/charts/jitsi-meet/templates/jicofo/_helper.tpl new file mode 100644 index 0000000..3a55245 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jicofo/_helper.tpl @@ -0,0 +1,18 @@ + +{{- define "jitsi-meet.jicofo.fullname" -}} +{{ include "jitsi-meet.fullname" . }}-jicofo +{{- end -}} + +{{- define "jitsi-meet.jicofo.labels" -}} +{{ include "jitsi-meet.labels" . }} +app.kubernetes.io/component: jicofo +{{- end -}} + +{{- define "jitsi-meet.jicofo.selectorLabels" -}} +{{ include "jitsi-meet.selectorLabels" . }} +app.kubernetes.io/component: jicofo +{{- end -}} + +{{- define "jitsi-meet.jicofo.secret" -}} +{{ include "call-nested" (list . "prosody" "prosody.fullname") }}-jicofo +{{- end -}} diff --git a/jitsi/charts/jitsi-meet/templates/jicofo/configmap.yaml b/jitsi/charts/jitsi-meet/templates/jicofo/configmap.yaml new file mode 100644 index 0000000..39c9672 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jicofo/configmap.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "jitsi-meet.jicofo.fullname" . }} + labels: + {{- include "jitsi-meet.jicofo.labels" . | nindent 4 }} +data: + JVB_BREWERY_MUC: '{{ .Values.jvb.breweryMuc }}' + XMPP_SERVER: '{{ include "jitsi-meet.xmpp.server" . }}' + {{- if .Values.jibri.enabled }} + JIBRI_BREWERY_MUC: '{{ .Values.jibri.breweryMuc }}' + JIBRI_PENDING_TIMEOUT: '{{ .Values.jibri.timeout }}' + {{- end }} + {{- range $key, $value := .Values.jicofo.extraEnvs }} + {{- if not (kindIs "invalid" $value) }} + {{ $key }}: {{ tpl $value $ | quote }} + {{- end }} + {{- end }} + {{- if .Values.octo.enabled }} + ENABLE_OCTO: "1" + OCTO_BRIDGE_SELECTION_STRATEGY: "SplitBridgeSelectionStrategy" + {{- end }} \ No newline at end of file diff --git a/jitsi/charts/jitsi-meet/templates/jicofo/deployment.yaml b/jitsi/charts/jitsi-meet/templates/jicofo/deployment.yaml new file mode 100644 index 0000000..a0f8187 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jicofo/deployment.yaml @@ -0,0 +1,76 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "jitsi-meet.jicofo.fullname" . }} + labels: + {{- include "jitsi-meet.jicofo.labels" . | nindent 4 }} + {{- with .Values.jicofo.annotations }} + annotations: + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.jicofo.replicaCount }} + selector: + matchLabels: + {{- include "jitsi-meet.jicofo.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "jitsi-meet.jicofo.selectorLabels" . | nindent 8 }} + {{- range $label, $value := mergeOverwrite .Values.global.podLabels .Values.jicofo.podLabels }} + {{ $label }}: {{ $value }} + {{- end }} + annotations: + checksum/config: {{ include (print $.Template.BasePath "/jicofo/configmap.yaml") . | sha256sum }} + checksum/secret: {{ include (print $.Template.BasePath "/jicofo/xmpp-secret.yaml") . | sha256sum }} + {{- range $annotation, $value := mergeOverwrite .Values.global.podAnnotations .Values.jicofo.podAnnotations }} + {{ $annotation }}: {{ $value|quote }} + {{- end }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "jitsi-meet.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.jicofo.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.jicofo.securityContext | nindent 12 }} + image: "{{ .Values.jicofo.image.repository }}:{{ default .Chart.AppVersion .Values.jicofo.image.tag }}" + imagePullPolicy: {{ pluck "pullPolicy" .Values.jicofo.image .Values.image | first }} + envFrom: + - secretRef: + name: {{ include "call-nested" (list . "prosody" "prosody.fullname") }}-jicofo + - configMapRef: + name: {{ include "call-nested" (list . "prosody" "prosody.fullname") }}-common + - configMapRef: + name: {{ include "jitsi-meet.jicofo.fullname" . }} + ports: + - name: http + containerPort: 80 + protocol: TCP + {{- with .Values.jicofo.livenessProbe }} + livenessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.jicofo.readinessProbe }} + readinessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + resources: + {{- toYaml .Values.jicofo.resources | nindent 12 }} + + {{- with .Values.jicofo.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.jicofo.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.jicofo.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/jitsi/charts/jitsi-meet/templates/jicofo/xmpp-secret.yaml b/jitsi/charts/jitsi-meet/templates/jicofo/xmpp-secret.yaml new file mode 100644 index 0000000..de95246 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jicofo/xmpp-secret.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "call-nested" (list . "prosody" "prosody.fullname") }}-jicofo + labels: + {{- include "jitsi-meet.jicofo.labels" . | nindent 4 }} +type: Opaque +data: + JICOFO_AUTH_USER: '{{ .Values.jicofo.xmpp.user | b64enc }}' + JICOFO_AUTH_PASSWORD: '{{ default (randAlphaNum 10) .Values.jicofo.xmpp.password | b64enc }}' + JICOFO_COMPONENT_SECRET: '{{ default (randAlphaNum 10) .Values.jicofo.xmpp.componentSecret | b64enc }}' diff --git a/jitsi/charts/jitsi-meet/templates/jvb/_helper.tpl b/jitsi/charts/jitsi-meet/templates/jvb/_helper.tpl new file mode 100644 index 0000000..5aa1d9b --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jvb/_helper.tpl @@ -0,0 +1,18 @@ + +{{- define "jitsi-meet.jvb.fullname" -}} +{{ include "jitsi-meet.fullname" . }}-jvb +{{- end -}} + +{{- define "jitsi-meet.jvb.labels" -}} +{{ include "jitsi-meet.labels" . }} +app.kubernetes.io/component: jvb +{{- end -}} + +{{- define "jitsi-meet.jvb.selectorLabels" -}} +{{ include "jitsi-meet.selectorLabels" . }} +app.kubernetes.io/component: jvb +{{- end -}} + +{{- define "jitsi-meet.jvb.secret" -}} +{{ include "call-nested" (list . "prosody" "prosody.fullname") }}-jvb +{{- end -}} diff --git a/jitsi/charts/jitsi-meet/templates/jvb/configmap.yaml b/jitsi/charts/jitsi-meet/templates/jvb/configmap.yaml new file mode 100644 index 0000000..12a06c4 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jvb/configmap.yaml @@ -0,0 +1,28 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "jitsi-meet.jvb.fullname" . }} + labels: + {{- include "jitsi-meet.jvb.labels" . | nindent 4 }} +data: + JVB_BREWERY_MUC: '{{ .Values.jvb.breweryMuc }}' + JVB_PORT: '{{ .Values.jvb.UDPPort }}' + JVB_STUN_SERVERS: '{{.Values.jvb.stunServers }}' + JVB_TCP_HARVESTER_DISABLED: '1' + XMPP_SERVER: '{{ include "jitsi-meet.xmpp.server" . }}' + {{- range $key, $value := .Values.jvb.extraEnvs }} + {{- if not (kindIs "invalid" $value) }} + {{ $key }}: {{ tpl $value $ | quote }} + {{- end }} + {{- end }} + COLIBRI_REST_ENABLED: 'true' + {{- if .Values.jvb.websockets.enabled }} + ENABLE_COLIBRI_WEBSOCKET: 'true' + {{- else }} + ENABLE_COLIBRI_WEBSOCKET: 'false' + {{- end }} + {{- if .Values.octo.enabled }} + ENABLE_OCTO: "1" + JVB_OCTO_BIND_PORT: "4096" + JVB_OCTO_REGION: "all" + {{- end }} \ No newline at end of file diff --git a/jitsi/charts/jitsi-meet/templates/jvb/deployment.yaml b/jitsi/charts/jitsi-meet/templates/jvb/deployment.yaml new file mode 100644 index 0000000..7e41d96 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jvb/deployment.yaml @@ -0,0 +1,166 @@ +{{- $serverID := default "podIP" .Values.jvb.websockets.serverID }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "jitsi-meet.jvb.fullname" . }} + labels: + {{- include "jitsi-meet.jvb.labels" . | nindent 4 }} + {{- with .Values.jvb.annotations }} + annotations: + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.jvb.replicaCount }} + selector: + matchLabels: + {{- include "jitsi-meet.jvb.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "jitsi-meet.jvb.selectorLabels" . | nindent 8 }} + {{- range $label, $value := mergeOverwrite .Values.global.podLabels .Values.jvb.podLabels }} + {{ $label }}: {{ $value }} + {{- end }} + annotations: + checksum/config: {{ include (print $.Template.BasePath "/jvb/configmap.yaml") . | sha256sum }} + checksum/secret: {{ include (print $.Template.BasePath "/jvb/xmpp-secret.yaml") . | sha256sum }} + {{- if and .Values.jvb.metrics.enabled .Values.jvb.metrics.prometheusAnnotations }} + prometheus.io/port: "9888" + prometheus.io/scrape: "true" + {{- end }} + {{- range $annotation, $value := mergeOverwrite .Values.global.podAnnotations .Values.jvb.podAnnotations }} + {{ $annotation }}: {{ $value|quote }} + {{- end }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "jitsi-meet.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.jvb.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.jvb.securityContext | nindent 12 }} + image: "{{ .Values.jvb.image.repository }}:{{ default .Chart.AppVersion .Values.jvb.image.tag }}" + imagePullPolicy: {{ pluck "pullPolicy" .Values.jvb.image .Values.image | first }} + envFrom: + - secretRef: + name: {{ include "call-nested" (list . "prosody" "prosody.fullname") }}-jvb + - configMapRef: + name: {{ include "call-nested" (list . "prosody" "prosody.fullname") }}-common + - configMapRef: + name: {{ include "jitsi-meet.jvb.fullname" . }} + env: + {{- if or .Values.jvb.useNodeIP .Values.jvb.publicIP }} + - name: DOCKER_HOST_ADDRESS + {{- if .Values.jvb.publicIP }} + value: {{ .Values.jvb.publicIP }} + {{- else }} + valueFrom: + fieldRef: + fieldPath: status.hostIP + {{- end }} + {{- end }} + {{- if .Values.jvb.websockets.enabled }} + - name: JVB_WS_SERVER_ID + {{- if eq $serverID "service" }} + value: {{ include "jitsi-meet.jvb.fullname" . }}.{{ .Release.Namespace }}.svc + {{- else if eq $serverID "podIP" }} + valueFrom: + fieldRef: + fieldPath: status.podIP + {{- else }} + value: {{ $serverID | quote }} + {{- end }} + {{- end }} + {{- if .Values.octo.enabled }} + - name: JVB_OCTO_BIND_ADDRESS + valueFrom: + fieldRef: + fieldPath: status.hostIP + - name: JVB_OCTO_PUBLIC_ADDRESS + valueFrom: + fieldRef: + fieldPath: status.podIP + {{- end }} + ports: + - name: rtp-udp + containerPort: {{ .Values.jvb.UDPPort }} + {{- if .Values.jvb.useHostPort }} + hostPort: {{ .Values.jvb.UDPPort }} + {{- end }} + protocol: UDP + {{- if .Values.jvb.websockets.enabled }} + - name: colibri-ws-tcp + containerPort: 9090 + protocol: TCP + {{- end }} + {{- with .Values.jvb.livenessProbe }} + livenessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.jvb.readinessProbe }} + readinessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + resources: + {{- toYaml .Values.jvb.resources | nindent 12 }} + {{- with .Values.jvb.extraVolumeMounts }} + volumeMounts: + {{- toYaml . | nindent 10 }} + {{- end }} + + {{- if .Values.jvb.metrics.enabled }} + - name: metrics + image: {{ .Values.jvb.metrics.image.repository }}:{{ .Values.jvb.metrics.image.tag }} + imagePullPolicy: {{ .Values.jvb.metrics.image.pullPolicy }} + securityContext: + runAsUser: 10001 + command: + - /prometheus-jitsi-meet-exporter + - -videobridge-url + - http://localhost:8080/colibri/stats + ports: + - containerPort: 9888 + name: tcp-metrics + protocol: TCP + readinessProbe: + httpGet: + path: /health + port: 9888 + initialDelaySeconds: 3 + periodSeconds: 5 + resources: + {{- toYaml .Values.jvb.metrics.resources | nindent 12 }} + {{- end }} + + {{- with .Values.jvb.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- if or .Values.jvb.useHostPort .Values.jvb.affinity }} + affinity: + {{- if .Values.jvb.affinity }} + {{- toYaml .Values.jvb.affinity | nindent 8 }} + {{- else }} + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/component + operator: In + values: + - jvb + topologyKey: "kubernetes.io/hostname" + {{- end }} + {{- end }} + {{- with .Values.jvb.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.jvb.extraVolumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/jitsi/charts/jitsi-meet/templates/jvb/metrics-prometheus.yaml b/jitsi/charts/jitsi-meet/templates/jvb/metrics-prometheus.yaml new file mode 100644 index 0000000..5c36c2a --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jvb/metrics-prometheus.yaml @@ -0,0 +1,27 @@ +{{- if and (.Values.jvb.metrics.enabled) (.Values.jvb.metrics.serviceMonitor.enabled) }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "jitsi-meet.jvb.fullname" . }} + labels: + {{- include "jitsi-meet.jvb.labels" . | nindent 4 }} + {{- range $key, $value := .Values.jvb.metrics.serviceMonitor.selector }} + {{ $key }}: {{ $value | quote }} + {{- end }} +spec: + endpoints: + - port: tcp-metrics + path: /metrics + {{- if .Values.jvb.metrics.serviceMonitor.honorLabels }} + honorLabels: {{ .Values.jvb.metrics.serviceMonitor.honorLabels }} + {{- end }} + {{- if .Values.jvb.metrics.serviceMonitor.interval }} + interval: {{ .Values.jvb.metrics.serviceMonitor.interval }} + {{- end }} + selector: + matchLabels: + {{- include "jitsi-meet.jvb.labels" . | nindent 6 }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} + {{- end -}} diff --git a/jitsi/charts/jitsi-meet/templates/jvb/metrics-service.yaml b/jitsi/charts/jitsi-meet/templates/jvb/metrics-service.yaml new file mode 100644 index 0000000..c832155 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jvb/metrics-service.yaml @@ -0,0 +1,16 @@ +{{- if .Values.jvb.metrics.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "jitsi-meet.jvb.fullname" . }}-metrics + labels: + {{- include "jitsi-meet.jvb.labels" . | nindent 4 }} +spec: + type: ClusterIP + ports: + - port: 9888 + protocol: TCP + name: tcp-metrics + selector: + {{- include "jitsi-meet.jvb.selectorLabels" . | nindent 4 }} + {{- end }} diff --git a/jitsi/charts/jitsi-meet/templates/jvb/service.yaml b/jitsi/charts/jitsi-meet/templates/jvb/service.yaml new file mode 100644 index 0000000..304eff6 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jvb/service.yaml @@ -0,0 +1,35 @@ +{{- if or (and (kindIs "invalid" .Values.jvb.service.enabled) (not .Values.jvb.useHostPort)) .Values.jvb.service.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "jitsi-meet.jvb.fullname" . }} + annotations: + {{- range $key, $value := .Values.jvb.service.annotations }} + {{ $key }}: {{ $value | quote }} + {{- end }} + labels: + {{- include "jitsi-meet.jvb.labels" . | nindent 4 }} +spec: + type: {{ .Values.jvb.service.type }} + {{- with .Values.jvb.service.LoadbalancerIP }} + loadBalancerIP: {{ . }} + {{- end }} + ports: + - port: {{ default 10000 .Values.jvb.UDPPort }} + {{- if or (eq .Values.jvb.service.type "NodePort") (eq .Values.jvb.service.type "LoadBalancer") }} + nodePort: {{ .Values.jvb.UDPPort }} + {{- end }} + protocol: UDP + name: rtp-udp + {{- if .Values.jvb.websockets.enabled }} + - port: 9090 + protocol: TCP + name: colibri-ws-tcp + {{- end }} + {{- with .Values.jvb.service.externalIPs }} + externalIPs: + {{ toYaml . | indent 2 | trim }} + {{- end }} + selector: + {{- include "jitsi-meet.jvb.selectorLabels" . | nindent 4 }} +{{- end }} diff --git a/jitsi/charts/jitsi-meet/templates/jvb/xmpp-secret.yaml b/jitsi/charts/jitsi-meet/templates/jvb/xmpp-secret.yaml new file mode 100644 index 0000000..4e0a7a4 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/jvb/xmpp-secret.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "call-nested" (list . "prosody" "prosody.fullname") }}-jvb + labels: + {{- include "jitsi-meet.jvb.labels" . | nindent 4 }} +type: Opaque +data: + JVB_AUTH_USER: '{{ .Values.jvb.xmpp.user | b64enc }}' + JVB_AUTH_PASSWORD: '{{ default (randAlphaNum 10) .Values.jvb.xmpp.password | b64enc }}' diff --git a/jitsi/charts/jitsi-meet/templates/serviceaccount.yaml b/jitsi/charts/jitsi-meet/templates/serviceaccount.yaml new file mode 100644 index 0000000..d0b57df --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "jitsi-meet.serviceAccountName" . }} + labels: + {{- include "jitsi-meet.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end -}} diff --git a/jitsi/charts/jitsi-meet/templates/tests/test-connection.yaml b/jitsi/charts/jitsi-meet/templates/tests/test-connection.yaml new file mode 100644 index 0000000..9f523ba --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "jitsi-meet.web.fullname" . }}-test-connection" + labels: + {{- include "jitsi-meet.web.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test-success +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "jitsi-meet.web.fullname" . }}:{{ .Values.web.service.port }}'] + restartPolicy: Never diff --git a/jitsi/charts/jitsi-meet/templates/web/_helper.tpl b/jitsi/charts/jitsi-meet/templates/web/_helper.tpl new file mode 100644 index 0000000..18b1f09 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/web/_helper.tpl @@ -0,0 +1,15 @@ + +{{- define "jitsi-meet.web.fullname" -}} +{{ include "jitsi-meet.fullname" . }}-web +{{- end -}} + +{{- define "jitsi-meet.web.labels" -}} +{{ include "jitsi-meet.labels" . }} +app.kubernetes.io/component: web +{{- end -}} + +{{- define "jitsi-meet.web.selectorLabels" -}} +{{ include "jitsi-meet.selectorLabels" . }} +app.kubernetes.io/component: web +{{- end -}} + diff --git a/jitsi/charts/jitsi-meet/templates/web/configmap.yaml b/jitsi/charts/jitsi-meet/templates/web/configmap.yaml new file mode 100644 index 0000000..718a134 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/web/configmap.yaml @@ -0,0 +1,24 @@ +{{- $serverID := default "podIP" .Values.jvb.websockets.serverID }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "jitsi-meet.web.fullname" . }} + labels: + {{- include "jitsi-meet.web.labels" . | nindent 4 }} +data: + DISABLE_HTTPS: {{ ternary "0" "1" .Values.web.httpsEnabled | quote }} + ENABLE_HTTP_REDIRECT: {{ ternary "1" "0" .Values.web.httpRedirect | quote }} + JICOFO_AUTH_USER: '{{ .Values.jicofo.xmpp.user }}' + XMPP_BOSH_URL_BASE: 'http://{{ include "jitsi-meet.xmpp.server" . }}:{{ index .Values.prosody.service.ports "bosh-insecure" }}' + {{- if and .Values.jvb.websockets.enabled (eq $serverID "service") }} + NGINX_RESOLVER: {{ required "(web.resolverIP) Please set an IP address of your KubeDNS service!" .Values.web.resolverIP }} + {{- end }} + {{- if .Values.jibri.enabled }} + ENABLE_RECORDING: "true" + ENABLE_FILE_RECORDING_SERVICE_SHARING: "true" + {{- end }} + {{- range $key, $value := .Values.web.extraEnvs }} + {{- if not (kindIs "invalid" $value) }} + {{ $key }}: {{ tpl $value $ | quote }} + {{- end }} + {{- end }} diff --git a/jitsi/charts/jitsi-meet/templates/web/deployment.yaml b/jitsi/charts/jitsi-meet/templates/web/deployment.yaml new file mode 100644 index 0000000..2b9c4ae --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/web/deployment.yaml @@ -0,0 +1,84 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "jitsi-meet.web.fullname" . }} + labels: + {{- include "jitsi-meet.web.labels" . | nindent 4 }} + {{- with .Values.web.annotations }} + annotations: + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.web.replicaCount }} + selector: + matchLabels: + {{- include "jitsi-meet.web.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "jitsi-meet.web.selectorLabels" . | nindent 8 }} + {{- range $label, $value := mergeOverwrite .Values.global.podLabels .Values.web.podLabels }} + {{ $label }}: {{ $value }} + {{- end }} + annotations: + checksum/config: {{ include (print $.Template.BasePath "/web/configmap.yaml") . | sha256sum }} + {{- range $annotation, $value := mergeOverwrite .Values.global.podAnnotations .Values.web.podAnnotations }} + {{ $annotation }}: {{ $value|quote }} + {{- end }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "jitsi-meet.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.web.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.web.securityContext | nindent 12 }} + image: "{{ .Values.web.image.repository }}:{{ default .Chart.AppVersion .Values.web.image.tag }}" + imagePullPolicy: {{ pluck "pullPolicy" .Values.web.image .Values.image | first }} + envFrom: + - configMapRef: + name: {{ include "jitsi-meet.web.fullname" . }} + - configMapRef: + name: {{ include "call-nested" (list . "prosody" "prosody.fullname") }}-common + ports: + - name: http + containerPort: 80 + protocol: TCP + - name: https + containerPort: 443 + protocol: TCP + {{- with .Values.web.livenessProbe }} + livenessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.web.readinessProbe }} + readinessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + resources: + {{- toYaml .Values.web.resources | nindent 12 }} + {{- with .Values.web.extraVolumeMounts }} + volumeMounts: + {{- toYaml . | nindent 10 }} + {{- end }} + + {{- with .Values.web.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.web.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.web.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.web.extraVolumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/jitsi/charts/jitsi-meet/templates/web/service.yaml b/jitsi/charts/jitsi-meet/templates/web/service.yaml new file mode 100644 index 0000000..bf890a6 --- /dev/null +++ b/jitsi/charts/jitsi-meet/templates/web/service.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "jitsi-meet.web.fullname" . }} + labels: + {{- include "jitsi-meet.web.labels" . | nindent 4 }} +spec: + type: {{ .Values.web.service.type }} + ports: + - port: {{ .Values.web.service.port }} + protocol: TCP + name: http + {{- with .Values.web.service.externalIPs }} + externalIPs: + {{ toYaml . | indent 2 | trim }} + {{- end }} + selector: + {{- include "jitsi-meet.web.selectorLabels" . | nindent 4 }} diff --git a/jitsi/charts/jitsi-meet/values.yaml b/jitsi/charts/jitsi-meet/values.yaml new file mode 100644 index 0000000..9ab056a --- /dev/null +++ b/jitsi/charts/jitsi-meet/values.yaml @@ -0,0 +1,288 @@ +# Default values for jitsi-meet. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +global: + podLabels: {} + podAnnotations: {} +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +enableAuth: false +enableGuests: true +publicURL: "" + +tz: Europe/Amsterdam + +image: + pullPolicy: IfNotPresent + +web: + replicaCount: 1 + image: + repository: jitsi/web + + extraEnvs: {} + service: + type: ClusterIP + port: 80 + externalIPs: [] + + ingress: + enabled: false + # ingressClassName: "nginx-ingress-0" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: jitsi.local + paths: ['/'] + tls: [] + # - secretName: jitsi-web-certificate + # hosts: + # - jitsi.local + + # Useful for ingresses that don't support http-to-https redirect by themself, (namely: GKE), + httpRedirect: false + + # When tls-termination by the ingress is not wanted, enable this and set web.service.type=Loadbalancer + httpsEnabled: false + + ## Resolver IP for nginx. + ## Set this to ClusterIP of your `kube-dns` service + ## when using websockets and discovering JVB's address + ## via k8s services. + # resolverIP: 10.43.0.10 + + livenessProbe: + httpGet: + path: / + port: 80 + readinessProbe: + httpGet: + path: / + port: 80 + + podLabels: {} + podAnnotations: {} + podSecurityContext: {} + # fsGroup: 2000 + + securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + + resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + + nodeSelector: {} + + tolerations: [] + + affinity: {} + +jicofo: + replicaCount: 1 + image: + repository: jitsi/jicofo + + xmpp: + user: focus + password: + componentSecret: + + livenessProbe: + tcpSocket: + port: 8888 + readinessProbe: + tcpSocket: + port: 8888 + + podLabels: {} + podAnnotations: {} + podSecurityContext: {} + securityContext: {} + resources: {} + nodeSelector: {} + tolerations: [] + affinity: {} + extraEnvs: {} + +jvb: + replicaCount: 1 + image: + repository: jitsi/jvb + + xmpp: + user: jvb + password: + + stunServers: 'meet-jit-si-turnrelay.jitsi.net:443' + useHostPort: false + UDPPort: 10000 + service: + enabled: + type: ClusterIP + externalIPs: [] + ## Annotations to be added to the service (if LoadBalancer is used) + ## + annotations: {} + + breweryMuc: jvbbrewery + + livenessProbe: + httpGet: + path: /about/health + port: 8080 + readinessProbe: + httpGet: + path: /about/health + port: 8080 + + podLabels: {} + podAnnotations: {} + podSecurityContext: {} + securityContext: {} + resources: {} + nodeSelector: {} + tolerations: [] + affinity: {} + extraEnvs: {} + + websockets: + ## Set to 'true' to enable Colibri WebSocket support in JVB: + enabled: false + ## Uncomment this to set JVB server ID manually, + ## Or use one of pre-defined values: + ## * "podIP" will fetch JVB pod's IP address from K8s metadata; + ## * "service" will use JVB service name generated by Helm. + ## + ## Don't forget to set `web.resolverIP` to your cluster's + ## DNS service IP when setting this to "service"! + ## + ## (default is "podIP") + # serverID: podIP + + metrics: + enabled: false + prometheusAnnotations: false + image: + repository: docker.io/systemli/prometheus-jitsi-meet-exporter + tag: 1.1.9 + pullPolicy: IfNotPresent + serviceMonitor: + enabled: true + selector: + release: prometheus-operator + interval: 10s + # honorLabels: false + resources: + requests: + cpu: 10m + memory: 16Mi + limits: + cpu: 20m + memory: 32Mi + +octo: + enabled: false + + +jibri: + ## Enabling Jibri will allow users to record + ## and/or stream their meetings (e.g. to YouTube). + enabled: false + + ## Enable persistent storage for local recordings. + ## If disabled, jibri pod will use a transient + ## emptyDir-backed storage instead. + persistence: + enabled: false + size: 4Gi + ## Set this to existing PVC name if you have one. + existingClaim: + storageClassName: + + shm: + ## Set to true to enable "/dev/shm" mount. + ## May be required by built-in Chromium. + enabled: false + ## If "true", will use host's shared memory dir, + ## and if "false" — an emptyDir mount. + # useHost: false + # size: 256Mi + + image: + repository: jitsi/jibri + + breweryMuc: jibribrewery + timeout: 90 + + ## jibri XMPP user credentials: + xmpp: + user: jibri + password: + + ## recorder XMPP user credentials: + recorder: + user: recorder + password: + + livenessProbe: + exec: + command: ["pgrep", "java"] + + readinessProbe: + exec: + command: ["pgrep", "java"] + + extraEnvs: {} + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: + +xmpp: + domain: meet.jitsi + authDomain: + mucDomain: + internalMucDomain: + guestDomain: + +extraCommonEnvs: {} + +prosody: + enabled: true + server: + extraEnvFrom: + - secretRef: + name: '{{ include "prosody.fullname" . }}-jicofo' + - secretRef: + name: '{{ include "prosody.fullname" . }}-jvb' + - configMapRef: + name: '{{ include "prosody.fullname" . }}-common' + ## Uncomment this if you want to use jibri: + # - secretRef: + # name: '{{ include "prosody.fullname" . }}-jibri' + image: + repository: jitsi/prosody + tag: 'stable-6865' diff --git a/jitsi/ci/dummy-values.yaml b/jitsi/ci/dummy-values.yaml new file mode 100644 index 0000000..58e035d --- /dev/null +++ b/jitsi/ci/dummy-values.yaml @@ -0,0 +1,3 @@ +--- +jitsi-meet: + publicURL: "http://localhost" diff --git a/jitsi/values.yaml b/jitsi/values.yaml index 13bde9c..d309009 100755 --- a/jitsi/values.yaml +++ b/jitsi/values.yaml @@ -1,4 +1,4 @@ - +--- certResolver: le-staging fqdn: "" @@ -29,7 +29,6 @@ jitsi-meet: service: # enabled: true type: NodePort - # It may be required to change the default port to a value allowed by Kubernetes (30000-32768) UDPPort: 30000 livenessProbe: @@ -42,5 +41,4 @@ jitsi-meet: websockets: enabled: true - # Use public IP of one of your node, or the public IP of a loadbalancer in front of the nodes publicIP: "" diff --git a/lintconf.yaml b/lintconf.yaml new file mode 100644 index 0000000..de707d4 --- /dev/null +++ b/lintconf.yaml @@ -0,0 +1,7 @@ +extends: default + +rules: + empty-lines: + max: 3 + max-start: 1 + max-end: 1