I am currently working on a personal project to better understand Kubernetes and Jitsi, and I could use some help with my setup. I am not a member of any organization, so I am turning to the Jitsi community for assistance.
I have attached my YAML files and would appreciate it if someone could review them and let me know if there are any configuration elements that may be missing. I am running this setup on my local machine, using minikube on Ubuntu, which is deployed on a VMware workstation. I have noticed that multiple participants can join and engage in chat via Firefox and Chrome, but they are unable to see or hear each other.
I am new to both Jitsi and Kubernetes, so please excuse any perceived lack of expertise. Any advice or suggestions would be greatly appreciated. Thank you in advance for your help.
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: jvb-pod-scaler
namespace : jitsi
spec:
maxReplicas: 5
minReplicas: 1
scaleTargetRef:
apiVersion: apps/v1
kind: StatefulSet
name: jvb
targetCPUUtilizationPercentage: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: jitsi
labels:
k8s-app: jicofo
name: jicofo
spec:
replicas: 1
selector:
matchLabels:
k8s-app: jicofo
template:
metadata:
labels:
k8s-app: jicofo
spec:
containers:
- name: jicofo
image: jitsi/jicofo:stable-4548-1
imagePullPolicy: Always
env:
- name: XMPP_SERVER
value: prosody
- name: XMPP_DOMAIN
value: meet.jitsi
- name: XMPP_AUTH_DOMAIN
value: auth.meet.jitsi
- name: XMPP_INTERNAL_MUC_DOMAIN
value: internal-muc.meet.jitsi
- name: JICOFO_COMPONENT_SECRET
valueFrom:
secretKeyRef:
name: jitsi-config
key: JICOFO_COMPONENT_SECRET
- name: JICOFO_AUTH_USER
value: focus
- name: JICOFO_AUTH_PASSWORD
valueFrom:
secretKeyRef:
name: jitsi-config
key: JICOFO_AUTH_PASSWORD
- name: TZ
value: America/Los_Angeles
- name: JVB_BREWERY_MUC
value: jvbbrewery
- name: JICOFO_ENABLE_HEALTH_CHECKS
value: "true"
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: jitsi
name: jvb
spec:
serviceName: "jvb"
replicas: 1
selector:
matchLabels:
app: jvb
template:
metadata:
labels:
app: jvb
spec:
containers:
- name: jvb
resources:
limits:
memory: 400Mi
cpu: 400m
requests:
memory: 400Mi
cpu: 400m
image: jitsi/jvb:stable-4548-1
imagePullPolicy: Always
ports:
- name: udp
containerPort: 10000
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: XMPP_SERVER
value: prosody
- name: DOCKER_HOST_ADDRESS
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: XMPP_DOMAIN
value: meet.jitsi
- name: XMPP_AUTH_DOMAIN
value: auth.meet.jitsi
- name: XMPP_INTERNAL_MUC_DOMAIN
value: internal-muc.meet.jitsi
# - name: JVB_STUN_SERVERS
# valueFrom:
# secretKeyRef:
# name: jitsi-config
# key: JVB_STUN_SERVERS
- name: JICOFO_AUTH_USER
value: focus
- name: JVB_TCP_HARVESTER_DISABLED
value: "true"
- name: JVB_ENABLE_APIS
value: colibri,rest
- name: JVB_AUTH_USER
value: jvb
- name: JVB_AUTH_PASSWORD
valueFrom:
secretKeyRef:
name: jitsi-config
key: JVB_AUTH_PASSWORD
- name: JICOFO_AUTH_PASSWORD
valueFrom:
secretKeyRef:
name: jitsi-config
key: JICOFO_AUTH_PASSWORD
- name: JVB_BREWERY_MUC
value: jvbbrewery
- name: TZ
value: America/Los_Angeles
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: jitsi
labels:
k8s-app: prosody
name: prosody
spec:
replicas: 1
selector:
matchLabels:
k8s-app: prosody
template:
metadata:
labels:
k8s-app: prosody
spec:
containers:
- name: prosody
image: jitsi/prosody:stable-4548-1
imagePullPolicy: Always
ports:
- name: metrics
containerPort: 5280
readinessProbe:
exec:
command:
- prosodyctl
- --config
- /config/prosody.cfg.lua
- status
env:
- name: XMPP_DOMAIN
value: meet.jitsi
- name: XMPP_AUTH_DOMAIN
value: auth.meet.jitsi
- name: XMPP_MUC_DOMAIN
value: muc.meet.jitsi
- name: XMPP_INTERNAL_MUC_DOMAIN
value: internal-muc.meet.jitsi
- name: XMPP_MUC_MODULES
value: muc_meeting_id,muc_domain_mapper
- name: JICOFO_COMPONENT_SECRET
valueFrom:
secretKeyRef:
name: jitsi-config
key: JICOFO_COMPONENT_SECRET
- name: JVB_AUTH_USER
value: jvb
- name: JVB_AUTH_PASSWORD
valueFrom:
secretKeyRef:
name: jitsi-config
key: JVB_AUTH_PASSWORD
- name: JICOFO_AUTH_USER
value: focus
- name: JICOFO_AUTH_PASSWORD
valueFrom:
secretKeyRef:
name: jitsi-config
key: JICOFO_AUTH_PASSWORD
- name: TZ
value: America/Los_Angeles
- name: JVB_TCP_HARVESTER_DISABLED
value: "true"
- name: TURNCREDENTIALS_SECRET
valueFrom:
secretKeyRef:
name: jitsi-config
key: TURNCREDENTIALS_SECRET
- name: TURN_HOST
valueFrom:
secretKeyRef:
name: jitsi-config
key: TURN_HOST
# - name: STUN_PORT
# valueFrom:
# secretKeyRef:
# name: jitsi-config
# key: STUN_PORT
- name: TURNS_PORT
valueFrom:
secretKeyRef:
name: jitsi-config
key: TURNS_PORT
---
apiVersion: v1
kind: Service
metadata:
namespace: jitsi
labels:
service: prosody
name: prosody
spec:
ports:
- name: "5222"
port: 5222
targetPort: 5222
- name: "5280"
port: 5280
targetPort: 5280
- name: "5347"
port: 5347
targetPort: 5347
selector:
k8s-app: prosody
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: jitsi
labels:
k8s-app: web
name: web
spec:
replicas: 1
selector:
matchLabels:
k8s-app: web
template:
metadata:
labels:
k8s-app: web
spec:
containers:
- name: web
image: jitsi/web:stable-4548-1
imagePullPolicy: Always
readinessProbe:
httpGet:
port: 80
env:
# - name: DISABLE_HTTPS
# value: "1"
- name: HTTP_PORT
value: "80"
- name: HTTPS_PORT
value: "443"
- name: XMPP_SERVER
value: prosody
- name: JICOFO_AUTH_USER
value: focus
- name: XMPP_DOMAIN
value: meet.jitsi
- name: XMPP_AUTH_DOMAIN
value: auth.meet.jitsi
- name: XMPP_INTERNAL_MUC_DOMAIN
value: internal-muc.meet.jitsi
- name: XMPP_BOSH_URL_BASE
value: http://prosody:5280
- name: XMPP_MUC_DOMAIN
value: muc.meet.jitsi
- name: TZ
value: America/Los_Angeles
- name: JVB_TCP_HARVESTER_DISABLED
value: "true"
---
apiVersion: v1
kind: Namespace
metadata:
name: jitsi
---
apiVersion: v1
kind: Secret
metadata:
namespace: jitsi
name: jitsi-config
type: Opaque
data:
JICOFO_COMPONENT_SECRET: amljaWZvY29tcG9uZW50
JICOFO_AUTH_PASSWORD: amljaWZvY29tcG9uZW50
JVB_AUTH_PASSWORD: amljaWZvY29tcG9uZW50
JVB_STUN_SERVERS: amljaWZvY29tcG9uZW50
TURNCREDENTIALS_SECRET: amljaWZvY29tcG9uZW50
TURN_HOST: amljaWZvY29tcG9uZW50
STUN_PORT: amljaWZvY29tcG9uZW50
TURN_PORT: amljaWZvY29tcG9uZW50
TURNS_PORT: amljaWZvY29tcG9uZW50
---
apiVersion: v1
kind: Service
metadata:
labels:
service: web
namespace: jitsi
name: web
spec:
ports:
- name: "http"
protocol: TCP
port: 80
targetPort: 80
nodePort: 30080
- name: "https"
protocol: TCP
port: 443
targetPort: 443
nodePort: 30443
selector:
k8s-app: web
type: NodePort
---
apiVersion: v1
kind: Service
metadata:
labels:
service: jvb-0
namespace: jitsi
name: jvb-0
spec:
type: NodePort
externalTrafficPolicy: Cluster
ports:
- port: 31000
name: jvb-0
protocol: UDP
targetPort: 31000
nodePort: 31000
selector:
app: jvb
"statefulset.kubernetes.io/pod-name": jvb-0
---
#JVB-1
apiVersion: v1
kind: Service
metadata:
labels:
service: jvb-1
namespace: jitsi
name: jvb-1
spec:
type: NodePort
externalTrafficPolicy: Cluster
ports:
- port: 31001
name: jvb-1
protocol: UDP
targetPort: 31001
nodePort: 31001
selector:
app: jvb
"statefulset.kubernetes.io/pod-name": jvb-1
---
#JVB-2
apiVersion: v1
kind: Service
metadata:
labels:
service: jvb-2
namespace: jitsi
name: jvb-2
spec:
type: NodePort
externalTrafficPolicy: Cluster
ports:
- port: 31002
name: jvb-2
protocol: UDP
targetPort: 31002
nodePort: 31002
selector:
app: jvb
"statefulset.kubernetes.io/pod-name": jvb-2
---
#JVB-3
apiVersion: v1
kind: Service
metadata:
labels:
service: jvb-3
namespace: jitsi
name: jvb-3
spec:
type: NodePort
externalTrafficPolicy: Cluster
ports:
- port: 31003
name: jvb-3
protocol: UDP
targetPort: 31003
nodePort: 31003
selector:
app: jvb
"statefulset.kubernetes.io/pod-name": jvb-3
---
#JVB-4
apiVersion: v1
kind: Service
metadata:
labels:
service: jvb-4
namespace: jitsi
name: jvb-4
spec:
type: NodePort
externalTrafficPolicy: Cluster
ports:
- port: 31004
name: jvb-4
protocol: UDP
targetPort: 31004
nodePort: 31004
selector:
app: jvb
"statefulset.kubernetes.io/pod-name": jvb-4
---
#JVB-5
apiVersion: v1
kind: Service
metadata:
labels:
service: jvb-5
namespace: jitsi
name: jvb-5
spec:
type: NodePort
externalTrafficPolicy: Cluster
ports:
- port: 31005
name: jvb-5
protocol: UDP
targetPort: 31005
nodePort: 31005
selector:
app: jvb
"statefulset.kubernetes.io/pod-name": jvb-5
I attempted to configure jvb, prosody, and jicofo, but none of these configurations have been successful. Despite trying with just one jvb, the system is still failing. I suspect that this may be an issue with the version, and therefore attempted to use the latest Jitsi images. However, I encountered a WebSocket error, which appears to be resolved through the use of a public URL. Unfortunately, I do not have ownership of a domain and am thus unable to test this solution. I kindly request any assistance that may be available.