diff --git a/loop-livekit-server/.helmignore b/loop-livekit-server/.helmignore new file mode 100644 index 0000000..f0c1319 --- /dev/null +++ b/loop-livekit-server/.helmignore @@ -0,0 +1,21 @@ +# 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 +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/loop-livekit-server/Chart.lock b/loop-livekit-server/Chart.lock new file mode 100644 index 0000000..a078f54 --- /dev/null +++ b/loop-livekit-server/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: livekit-server + repository: https://helm.livekit.io + version: 1.8.3 +- name: redis + repository: https://raw.githubusercontent.com/bitnami/charts/refs/heads/archive-full-index/bitnami + version: 18.19.4 +digest: sha256:58b79cbc646dffca803116ce91c65d80c2c46f7b14063dd71733c2a2e6aae668 +generated: "2025-07-22T10:50:06.729021298+03:00" diff --git a/loop-livekit-server/Chart.yaml b/loop-livekit-server/Chart.yaml new file mode 100644 index 0000000..1b3f71c --- /dev/null +++ b/loop-livekit-server/Chart.yaml @@ -0,0 +1,19 @@ +apiVersion: v2 +appVersion: v1.8.3 +name: loop-livekit-server +description: Loop-livekit-server for Onprem Loop deployments. +maintainers: +- email: dmitry.aloyan@wilix.org + name: dmitry.aloyan +- email: stuart.armstrong@wilix.org + name: stuart.armstrong +dependencies: + - name: livekit-server + repository: https://helm.livekit.io + version: "1.8.3" + alias: loop-livekit-server + - name: redis + version: "18.19.4" + repository: https://raw.githubusercontent.com/bitnami/charts/refs/heads/archive-full-index/bitnami + condition: redis.enabled +version: 1.0.0 diff --git a/loop-livekit-server/README.md b/loop-livekit-server/README.md new file mode 100644 index 0000000..aa91c7e --- /dev/null +++ b/loop-livekit-server/README.md @@ -0,0 +1,8 @@ +**Loop-livekit-server:** + +The original livekit-server chart has to be deployed on major cloud providers, like AWS, Google etc. This chart can be deployed on other k8s clusters. + +The basic change is in the extra ../templates/livekit-ingress.yaml. This creates a normal k8s ingress, that is not dependent on specific Cloud Provider infrastructure. + +The values.yaml values have been adjusted to not use specific Cloud Provider infrastructure. + diff --git a/loop-livekit-server/templates/livekit-ingress.yaml b/loop-livekit-server/templates/livekit-ingress.yaml new file mode 100644 index 0000000..68aa5ba --- /dev/null +++ b/loop-livekit-server/templates/livekit-ingress.yaml @@ -0,0 +1,26 @@ +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: loop-livekit-server + annotations: + cert-manager.io/cluster-issuer: "" +spec: + ingressClassName: "" + rules: + - host: {{ .Values.ingress_hostname }} + http: + paths: + - pathType: Prefix + path: / + backend: + service: + {{- if index .Values "loop-livekit-server" "nameOverride" }} + name: {{ .Release.Name }}-{{ index .Values "loop-livekit-server" "nameOverride" }} + {{- end }} + port: + number: 80 + tls: + - hosts: + - {{ .Values.ingress_hostname }} + secretName: {{ printf "%s-tls" .Values.ingress_hostname }} diff --git a/loop-livekit-server/values.yaml b/loop-livekit-server/values.yaml new file mode 100644 index 0000000..1d17f73 --- /dev/null +++ b/loop-livekit-server/values.yaml @@ -0,0 +1,68 @@ +loop-livekit-server: + livekit: + port: 8880 + log_level: info + prometheus_port: 9000 + rtc: + tcp_port: 8881 + port_range_start: 50000 + port_range_end: 59990 + # udp_port: 7882 + use_external_ip: true + redis: + address: livekit-redis-master:6379 + db: 0 + # username: redis + password: "" + keys: + IEUaM1cpqRS3Lhgx5X7R6wu46t5xts: "895rOrvTysc1U0MOoujYgrPl1Xh4ferv4ynv5Zyh4kh2JEfOsr" # Important! Generate and use your own keys. + + turn: + enabled: false + # Must match domain of your tls cert + domain: "" + secretName: "" + loadBalancerAnnotations: {} + room: + # auto_create: false + empty_timeout: 300 + departure_timeout: 20 + + replicaCount: 2 + + terminationGracePeriodSeconds: "3600" + + resources: + limits: + cpu: 4000m + memory: 2048Mi + requests: + cpu: 250m + memory: 1024Mi + + nameOverride: livekit-server + + serviceMonitor: + create: true + +ingress_hostname: "" # livekit URL + +redis: + enabled: true + fullnameOverride: livekit-redis + nameOverride: livekit-redis + architecture: replication + image: + debug: true + auth: + enabled: true + password: "" + master: + persistence: + storageClass: longhorn + size: 2Gi + replica: + replicaCount: 2 + persistence: + storageClass: longhorn + size: 2Gi