Container images, configurations and Helm charts for installing Intel CS for WebRTC on Kubernetes.
Images to run a Intel CS for WebRTC MCU for multi-party conferences.
You will create universal MCU components image which can be used as any MCU components like nuve, cluster-manager, portal, so on.
First, download the latest release from here.
Unzip it and copy the MCU package file to docker/conference
folder.
cp CS_WebRTC_Conference_Server_MCU.v<Version>.tgz <Project Root>/docker/conference
To build the image, docker-compose command can be used:
cd docker/conference
docker-compose build
It will create intelcs
image which is universal MCU components image.
This project uses the coturn as a turn server.
To build the image, the create_image.sh
-script in the docker/coturn
folder can be used:
cd docker/coturn
./create_image.sh
It will create coturn
image.
You can also create the peer server image if you want to deploy it.
copy the peer server release package file to docker/peer
folder.
cp CS_WebRTC_Conference_Server_Peer.v<Version>.tgz <Project Root>/docker/peer
To build the image, docker-compose command can be used:
cd docker/peer
docker-compose build
It will create intelcspeer
image.
Push the intelcs, coturn and intelcspeer(option) to the configured registry.
You can run MCU and peer servers on Docker.
Run the MongoDB and the RabbitMQ
cd docker/conference
docker-compose up -d mongo rabbit
Run the other components after the MongoDB and the RabbitMQ initialized
docker-compose up -d
Print log to find the sample service ID and service Key.
docker-compose logs nuve | grep sample
It will display something like this.
nuve_1 | sampleServiceId: <Service ID>
nuve_1 | sampleServiceKey: <Service Key>
Edit the Docker environment file.
cp app.env.sample app.env
vi app.env
Replace _service_ID_
with <Service ID>
and _service_KEY_
with <Service Key>
.
Restart the sample application.
docker-compose restart app
_Note: You only need to restart app first time since the service ID and service Key are stored in DB and won't change.
To check the sample MCU application, access to following URL on your browser.
http://localhost:3001
cd docker/peer
docker-compose up -d
These Helm charts can be used to install a Intel CS for WebRTC cluster consisting of a MCU and a peer server on a Kubernetes cluster.
The following tutorial will show how you deploy a Intel CS for WebRTC on a Kubernetes cluster which was created by kops on AWS.
- Released nginx-ingress with default-ssl-certificate
- Released external-dns
Create two instance groups.
- intelcs
- coturn
The following ports should be open in the firewall for coturn.
- 3478 TCP & UDP
- 49152 - 65535 UDP
Create an additional security group to open those ports.
Add it to the coturn instance group by setting additionalSecurityGroups.
apiVersion: kops/v1alpha2
kind: InstanceGroup
metadata:
labels:
kops.k8s.io/cluster: my-beloved-cluster
name: coturn
spec:
additionalSecurityGroups:
- sg-xxxxxxxx
- sg-xxxxxxxx
Deploy the MongoDB, the RabbitMQ and the coturn.
cd helm
helm install ./mongo \
-n intelcs-mongo \
-f ../supplements/kops/intelcs-mongo.yaml
helm install stable/rabbbitmq \
-n intelcs-rabbit \
-f ../supplements/kops/intelcs-rabbit.yaml
helm install ./coturn \
-n intelcs-coturn \
-f ../supplements/kops/intelcs-coturn.yaml
Deploy the nuve.
cd helm
helm install ./nuve \
-n intelcs-nuve \
-f ../supplements/kops/intelcs-nuve.yaml
kubectl logs -l app=nuve -c nuve | grep sample
It will display something like this.
sampleServiceId: <Service ID>
sampleServiceKey: <Service Key>
kubectl describe node -l kops.k8s.io/instancegroup=coturn | grep ExternalDNS
cd supplements/kops
vi intelcs-app.yaml
Replace value of basicapp.env.SERVICE_ID
in intecs-app.yaml with <Service ID>
.
Replace value of basicapp.env.SERVICE_KEY
in intecs-app.yaml with <Service Key>
.
Replace value of basicapp.env.TURN_HOST
in intecs-app.yaml with public DNS of coturn node.
Replace basicapp.example.com
with your desired host name for sample MCU application URL.
cd supplements/kops
vi intelcs-management-console.yaml
Replace icsconsole.example.com
with your desired host name for Management Console URL.
cd supplements/kops
vi intelcs-portal.yaml
Replace portal.example.com
with your desired host name for portal.
cd supplements/kops
vi intelcs-peer.yaml
Replace peer.example.com
with your desired host name for peer server.
cd helm
helm install ./cluster_manager \
-n intelcs-cluster-manager \
-f ../supplements/kops/intelcs-cluster-manager.yaml
helm install ./portal \
-n intelcs-portal \
-f ../supplements/kops/intelcs-portal.yaml
helm install ./audio \
-n intelcs-audio \
-f ../supplements/kops/intelcs-audio.yaml
helm install ./video \
-n intelcs-video \
-f ../supplements/kops/intelcs-video.yaml
helm install ./conference \
-n intelcs-conference \
-f ../supplements/kops/intelcs-conference.yaml
helm install ./webrtc \
-n intelcs-webrtc \
-f ../supplements/kops/intelcs-webrtc.yaml
helm install ./streaming \
-n intelcs-streaming \
-f ../supplements/kops/intelcs-streaming.yaml
helm install ./recording \
-n intelcs-recording \
-f ../supplements/kops/intelcs-recording.yaml
helm install ./app \
-n intelcs-app \
-f ../supplements/kops/intelcs-app.yaml
helm install ./peer \
-n intelcs-peer \
-f ../supplements/kops/intelcs-peer.yaml
To check the sample MCU application, access to following URL on your browser.
https://<sample MCU application host name>