From ec63729747ebfec9f04aa506265d5c33216fd883 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Fri, 3 Aug 2018 18:17:53 -0300 Subject: [PATCH] Add k8s --- labs/docker/k8s/bbb-apps-akka.yaml | 45 +++++++++++ labs/docker/k8s/bbb-coturn.yaml | 71 ++++++++++++++++++ labs/docker/k8s/bbb-freeswitch-nginx.yaml | 79 ++++++++++++++++++++ labs/docker/k8s/bbb-freeswitch.yaml | 58 +++++++++++++++ labs/docker/k8s/bbb-fsesl-akka.yaml | 43 +++++++++++ labs/docker/k8s/bbb-html5.yaml | 91 +++++++++++++++++++++++ labs/docker/k8s/bbb-kurento.yaml | 69 +++++++++++++++++ labs/docker/k8s/bbb-web.yaml | 83 +++++++++++++++++++++ labs/docker/k8s/bbb-webhooks.yaml | 81 ++++++++++++++++++++ labs/docker/k8s/bbb-webrtc-sfu.yaml | 87 ++++++++++++++++++++++ labs/docker/k8s/bigbluebutton-ns.yaml | 4 + labs/docker/k8s/mongo.yaml | 55 ++++++++++++++ labs/docker/k8s/redis.yaml | 55 ++++++++++++++ 13 files changed, 821 insertions(+) create mode 100644 labs/docker/k8s/bbb-apps-akka.yaml create mode 100644 labs/docker/k8s/bbb-coturn.yaml create mode 100644 labs/docker/k8s/bbb-freeswitch-nginx.yaml create mode 100644 labs/docker/k8s/bbb-freeswitch.yaml create mode 100644 labs/docker/k8s/bbb-fsesl-akka.yaml create mode 100644 labs/docker/k8s/bbb-html5.yaml create mode 100644 labs/docker/k8s/bbb-kurento.yaml create mode 100644 labs/docker/k8s/bbb-web.yaml create mode 100644 labs/docker/k8s/bbb-webhooks.yaml create mode 100644 labs/docker/k8s/bbb-webrtc-sfu.yaml create mode 100644 labs/docker/k8s/bigbluebutton-ns.yaml create mode 100644 labs/docker/k8s/mongo.yaml create mode 100644 labs/docker/k8s/redis.yaml diff --git a/labs/docker/k8s/bbb-apps-akka.yaml b/labs/docker/k8s/bbb-apps-akka.yaml new file mode 100644 index 000000000000..d21e1d44abe6 --- /dev/null +++ b/labs/docker/k8s/bbb-apps-akka.yaml @@ -0,0 +1,45 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app: bbb-apps-akka + version: latest + name: bbb-apps-akka + namespace: bigbluebutton +spec: + replicas: 1 + selector: + matchLabels: + app: bbb-apps-akka + version: latest + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + app: bbb-apps-akka + version: latest + name: bbb-apps-akka + spec: + containers: + - env: + - name: JAVA_OPTS + value: -Dredis.host=redis + image: fcecagno/bigbluebutton:bbb-apps-akka + imagePullPolicy: Always + name: bbb-apps-akka + ports: + - containerPort: 8080 + protocol: TCP + restartPolicy: Always + terminationGracePeriodSeconds: 30 + nodeSelector: + role: 'bigbluebutton' + tolerations: + - key: role + operator: Equal + value: 'bigbluebutton' + effect: NoSchedule diff --git a/labs/docker/k8s/bbb-coturn.yaml b/labs/docker/k8s/bbb-coturn.yaml new file mode 100644 index 000000000000..f68eb0cca329 --- /dev/null +++ b/labs/docker/k8s/bbb-coturn.yaml @@ -0,0 +1,71 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app: bbb-coturn + version: latest + name: bbb-coturn + namespace: bigbluebutton +spec: + replicas: 1 + selector: + matchLabels: + app: bbb-coturn + version: latest + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + app: bbb-coturn + version: latest + name: bbb-coturn + spec: + containers: + - env: + - name: PORT + value: "3478" + - name: SERVER_DOMAIN + value: bigbluebutton.rocket.chat + - name: SECRET + value: "54321" + - name: EXTERNAL_IP + value: "35.185.19.180" + - name: ENABLE_REST_API + value: "1" + image: fcecagno/bigbluebutton:bbb-coturn + imagePullPolicy: Always + name: bbb-coturn + ports: + - containerPort: 3478 + protocol: TCP + - containerPort: 3478 + protocol: UDP + restartPolicy: Always + terminationGracePeriodSeconds: 30 + nodeSelector: + role: 'bigbluebutton' + tolerations: + - key: role + operator: Equal + value: 'bigbluebutton' + effect: NoSchedule + +--- +apiVersion: v1 +kind: Service +metadata: + name: bbb-coturn + namespace: bigbluebutton + annotations: + traefik.backend.circuitbreaker: "NetworkErrorRatio() > 0.5" +spec: + ports: + - name: http + targetPort: 3478 + port: 3478 + selector: + app: bbb-coturn diff --git a/labs/docker/k8s/bbb-freeswitch-nginx.yaml b/labs/docker/k8s/bbb-freeswitch-nginx.yaml new file mode 100644 index 000000000000..d550783745d6 --- /dev/null +++ b/labs/docker/k8s/bbb-freeswitch-nginx.yaml @@ -0,0 +1,79 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app: bbb-freeswitch-nginx + version: latest + name: bbb-freeswitch-nginx + namespace: bigbluebutton +spec: + replicas: 1 + selector: + matchLabels: + app: bbb-freeswitch-nginx + version: latest + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + app: bbb-freeswitch-nginx + version: latest + name: bbb-freeswitch-nginx + spec: + containers: + - env: + - name: SERVER_DOMAIN + value: bigbluebutton.rocket.chat + image: fcecagno/bigbluebutton:bbb-nginx + imagePullPolicy: Always + name: bbb-freeswitch-nginx + ports: + - containerPort: 80 + protocol: TCP + restartPolicy: Always + terminationGracePeriodSeconds: 30 + nodeSelector: + role: 'bigbluebutton' + tolerations: + - key: role + operator: Equal + value: 'bigbluebutton' + effect: NoSchedule + +--- +apiVersion: v1 +kind: Service +metadata: + name: bbb-freeswitch-nginx + namespace: bigbluebutton + annotations: + traefik.backend.circuitbreaker: "NetworkErrorRatio() > 0.5" +spec: + ports: + - name: http + targetPort: 80 + port: 80 + selector: + app: bbb-freeswitch-nginx + +--- +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: bbb-freeswitch-nginx + namespace: bigbluebutton + annotations: + kubernetes.io/ingress.class: "traefik" +spec: + rules: + - host: bigbluebutton.rocket.chat + http: + paths: + - path: /ws + backend: + serviceName: bbb-freeswitch-nginx + servicePort: 80 diff --git a/labs/docker/k8s/bbb-freeswitch.yaml b/labs/docker/k8s/bbb-freeswitch.yaml new file mode 100644 index 000000000000..6c78e391a021 --- /dev/null +++ b/labs/docker/k8s/bbb-freeswitch.yaml @@ -0,0 +1,58 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app: bbb-freeswitch + version: latest + name: bbb-freeswitch + namespace: bigbluebutton +spec: + replicas: 1 + selector: + matchLabels: + app: bbb-freeswitch + version: latest + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + app: bbb-freeswitch + version: latest + name: bbb-freeswitch + spec: + containers: + - image: fcecagno/bigbluebutton:bbb-freeswitch + imagePullPolicy: Always + name: bbb-freeswitch + ports: + - containerPort: 7443 + protocol: TCP + restartPolicy: Always + terminationGracePeriodSeconds: 30 + nodeSelector: + role: 'bigbluebutton' + tolerations: + - key: role + operator: Equal + value: 'bigbluebutton' + effect: NoSchedule + +--- +apiVersion: v1 +kind: Service +metadata: + name: bbb-freeswitch + namespace: bigbluebutton + annotations: + traefik.backend.circuitbreaker: "NetworkErrorRatio() > 0.5" +spec: + ports: + - name: http + targetPort: 7443 + port: 7443 + selector: + app: bbb-freeswitch diff --git a/labs/docker/k8s/bbb-fsesl-akka.yaml b/labs/docker/k8s/bbb-fsesl-akka.yaml new file mode 100644 index 000000000000..b37ba7d94fee --- /dev/null +++ b/labs/docker/k8s/bbb-fsesl-akka.yaml @@ -0,0 +1,43 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app: bbb-fsesl-akka + version: latest + name: bbb-fsesl-akka + namespace: bigbluebutton +spec: + replicas: 1 + selector: + matchLabels: + app: bbb-fsesl-akka + version: latest + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + app: bbb-fsesl-akka + version: latest + name: bbb-fsesl-akka + spec: + containers: + - env: + - name: JAVA_OPTS + value: -Dredis.host=redis -Dfreeswitch.esl.host=bbb-freeswitch + image: fcecagno/bigbluebutton:bbb-fsesl-akka + imagePullPolicy: Always + name: bbb-fsesl-akka + command: ["wait-for-it.sh", "bbb-freeswitch:8021", "--timeout=60", "--strict", "--", "/usr/share/bbb-fsesl-akka/bin/bbb-fsesl-akka"] + restartPolicy: Always + terminationGracePeriodSeconds: 30 + nodeSelector: + role: 'bigbluebutton' + tolerations: + - key: role + operator: Equal + value: 'bigbluebutton' + effect: NoSchedule diff --git a/labs/docker/k8s/bbb-html5.yaml b/labs/docker/k8s/bbb-html5.yaml new file mode 100644 index 000000000000..cf8fdafcf3b0 --- /dev/null +++ b/labs/docker/k8s/bbb-html5.yaml @@ -0,0 +1,91 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app: bbb-html5 + version: latest + name: bbb-html5 + namespace: bigbluebutton +spec: + replicas: 1 + selector: + matchLabels: + app: bbb-html5 + version: latest + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + app: bbb-html5 + version: latest + name: bbb-html5 + spec: + containers: + - env: + - name: MONGO_URL + value: mongodb://mongo:27017/ + - name: MONGO_DB + value: bbbhtml5 + - name: METEOR_SETTINGS_MODIFIER + value: ".public.kurento.wsUrl = \"wss://bigbluebutton.rocket.chat/bbb-webrtc-sfu\" | .public.kurento.enableVideo = true | .public.kurento.enableScreensharing = true | .public.kurento.enableVideoStats = true | .public.kurento.enableListenOnly = true" + - name: REDIS_HOST + value: redis + - name: ROOT_URL + value: http://127.0.0.1/html5client + image: fcecagno/bigbluebutton:bbb-html5 + imagePullPolicy: Always + name: bbb-html5 + ports: + - containerPort: 3000 + protocol: TCP + restartPolicy: Always + terminationGracePeriodSeconds: 30 + nodeSelector: + role: 'bigbluebutton' + tolerations: + - key: role + operator: Equal + value: 'bigbluebutton' + effect: NoSchedule + +--- +apiVersion: v1 +kind: Service +metadata: + name: bbb-html5 + namespace: bigbluebutton + annotations: + traefik.backend.circuitbreaker: "NetworkErrorRatio() > 0.5" +spec: + ports: + - name: http + targetPort: 3000 + port: 3000 + selector: + app: bbb-html5 + +--- +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: bbb-html5 + namespace: bigbluebutton + annotations: + kubernetes.io/ingress.class: "traefik" +spec: + rules: + - host: bigbluebutton.rocket.chat + http: + paths: + - path: /html5client + backend: + serviceName: bbb-html5 + servicePort: 3000 + - path: /_timesync + backend: + serviceName: bbb-html5 + servicePort: 3000 diff --git a/labs/docker/k8s/bbb-kurento.yaml b/labs/docker/k8s/bbb-kurento.yaml new file mode 100644 index 000000000000..3c2a0ac6e9fb --- /dev/null +++ b/labs/docker/k8s/bbb-kurento.yaml @@ -0,0 +1,69 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app: bbb-kurento + version: latest + name: bbb-kurento + namespace: bigbluebutton +spec: + replicas: 1 + selector: + matchLabels: + app: bbb-kurento + version: latest + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + app: bbb-kurento + version: latest + name: bbb-kurento + spec: + containers: + - env: + - name: KMS_STUN_IP + # TODO: how to get this IP? + value: "35.185.19.180" + - name: KMS_STUN_PORT + value: "3478" + image: fcecagno/bigbluebutton:bbb-kurento + imagePullPolicy: Always + name: bbb-kurento + ports: + - containerPort: 8888 + protocol: TCP + restartPolicy: Always + terminationGracePeriodSeconds: 30 + nodeSelector: + role: 'bigbluebutton' + tolerations: + - key: role + operator: Equal + value: 'bigbluebutton' + effect: NoSchedule + +--- +apiVersion: v1 +kind: Service +metadata: + name: bbb-kurento + namespace: bigbluebutton + annotations: + traefik.backend.circuitbreaker: "NetworkErrorRatio() > 0.5" +spec: + ports: + - name: http + targetPort: 8888 + port: 8888 + selector: + app: bbb-kurento + + + # volumes: + # - media-video:/var/kurento/recordings + # - media-screenshare:/var/kurento/screenshare diff --git a/labs/docker/k8s/bbb-web.yaml b/labs/docker/k8s/bbb-web.yaml new file mode 100644 index 000000000000..784ae337eb47 --- /dev/null +++ b/labs/docker/k8s/bbb-web.yaml @@ -0,0 +1,83 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app: bbb-web + version: latest + name: bbb-web + namespace: bigbluebutton +spec: + replicas: 1 + selector: + matchLabels: + app: bbb-web + version: latest + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + app: bbb-web + version: latest + name: bbb-web + spec: + containers: + - env: + - name: SERVER_DOMAIN + value: bigbluebutton.rocket.chat + - name: SHARED_SECRET + value: "12345" + - name: TURN_SECRET + value: "54321" + image: fcecagno/bigbluebutton:bbb-web + imagePullPolicy: Always + name: bbb-web + ports: + - containerPort: 8080 + protocol: TCP + restartPolicy: Always + terminationGracePeriodSeconds: 30 + nodeSelector: + role: 'bigbluebutton' + tolerations: + - key: role + operator: Equal + value: 'bigbluebutton' + effect: NoSchedule + +--- +apiVersion: v1 +kind: Service +metadata: + name: bbb-web + namespace: bigbluebutton + annotations: + traefik.backend.circuitbreaker: "NetworkErrorRatio() > 0.5" +spec: + ports: + - name: http + targetPort: 8080 + port: 8080 + selector: + app: bbb-web + +--- +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: bbb-web + namespace: bigbluebutton + annotations: + kubernetes.io/ingress.class: "traefik" +spec: + rules: + - host: bigbluebutton.rocket.chat + http: + paths: + - path: /bigbluebutton + backend: + serviceName: bbb-web + servicePort: 8080 diff --git a/labs/docker/k8s/bbb-webhooks.yaml b/labs/docker/k8s/bbb-webhooks.yaml new file mode 100644 index 000000000000..9239ce01e438 --- /dev/null +++ b/labs/docker/k8s/bbb-webhooks.yaml @@ -0,0 +1,81 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app: bbb-webhooks + version: latest + name: bbb-webhooks + namespace: bigbluebutton +spec: + replicas: 1 + selector: + matchLabels: + app: bbb-webhooks + version: latest + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + app: bbb-webhooks + version: latest + name: bbb-webhooks + spec: + containers: + - env: + - name: REDIS_HOST + value: redis + - name: SHARED_SECRET + value: "12345" + image: fcecagno/bigbluebutton:bbb-webhooks + imagePullPolicy: Always + name: bbb-webhooks + ports: + - containerPort: 3005 + protocol: TCP + restartPolicy: Always + terminationGracePeriodSeconds: 30 + nodeSelector: + role: 'bigbluebutton' + tolerations: + - key: role + operator: Equal + value: 'bigbluebutton' + effect: NoSchedule + +--- +apiVersion: v1 +kind: Service +metadata: + name: bbb-webhooks + namespace: bigbluebutton + annotations: + traefik.backend.circuitbreaker: "NetworkErrorRatio() > 0.5" +spec: + ports: + - name: http + targetPort: 3005 + port: 3005 + selector: + app: bbb-webhooks + +--- +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: bbb-webhooks + namespace: bigbluebutton + annotations: + kubernetes.io/ingress.class: "traefik" +spec: + rules: + - host: bigbluebutton.rocket.chat + http: + paths: + - path: /bigbluebutton/api/hooks + backend: + serviceName: bbb-webhooks + servicePort: 3005 diff --git a/labs/docker/k8s/bbb-webrtc-sfu.yaml b/labs/docker/k8s/bbb-webrtc-sfu.yaml new file mode 100644 index 000000000000..323622f023a8 --- /dev/null +++ b/labs/docker/k8s/bbb-webrtc-sfu.yaml @@ -0,0 +1,87 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app: bbb-webrtc-sfu + version: latest + name: bbb-webrtc-sfu + namespace: bigbluebutton +spec: + replicas: 1 + selector: + matchLabels: + app: bbb-webrtc-sfu + version: latest + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + app: bbb-webrtc-sfu + version: latest + name: bbb-webrtc-sfu + spec: + containers: + - env: + - name: KURENTO_NAME + value: kurento + - name: KURENTO_URL + value: ws://kurento:8888/kurento + - name: REDIS_HOST + value: redis + - name: FREESWITCH_IP + value: bbb-freeswitch + - name: LOG_LEVEL + value: debug + image: fcecagno/bigbluebutton:bbb-webrtc-sfu + imagePullPolicy: Always + name: bbb-webrtc-sfu + ports: + - containerPort: 3008 + protocol: TCP + restartPolicy: Always + terminationGracePeriodSeconds: 30 + nodeSelector: + role: 'bigbluebutton' + tolerations: + - key: role + operator: Equal + value: 'bigbluebutton' + effect: NoSchedule + +--- +apiVersion: v1 +kind: Service +metadata: + name: bbb-webrtc-sfu + namespace: bigbluebutton + annotations: + traefik.backend.circuitbreaker: "NetworkErrorRatio() > 0.5" +spec: + ports: + - name: http + targetPort: 3008 + port: 3008 + selector: + app: bbb-webrtc-sfu + +--- +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: bbb-webrtc-sfu + namespace: bigbluebutton + annotations: + kubernetes.io/ingress.class: "traefik" +spec: + rules: + - host: bigbluebutton.rocket.chat + http: + paths: + - path: /bbb-webrtc-sfu + backend: + serviceName: bbb-webrtc-sfu + servicePort: 3008 diff --git a/labs/docker/k8s/bigbluebutton-ns.yaml b/labs/docker/k8s/bigbluebutton-ns.yaml new file mode 100644 index 000000000000..d66b7579ed4a --- /dev/null +++ b/labs/docker/k8s/bigbluebutton-ns.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: bigbluebutton diff --git a/labs/docker/k8s/mongo.yaml b/labs/docker/k8s/mongo.yaml new file mode 100644 index 000000000000..5a09cdd532b9 --- /dev/null +++ b/labs/docker/k8s/mongo.yaml @@ -0,0 +1,55 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app: mongo + version: latest + name: mongo + namespace: bigbluebutton +spec: + replicas: 1 + selector: + matchLabels: + app: mongo + version: latest + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + app: mongo + version: latest + name: mongo + spec: + containers: + - image: mongo:3.6 + imagePullPolicy: Always + name: mongo + ports: + - containerPort: 27017 + protocol: TCP + restartPolicy: Always + terminationGracePeriodSeconds: 30 + nodeSelector: + role: 'bigbluebutton' + tolerations: + - key: role + operator: Equal + value: 'bigbluebutton' + effect: NoSchedule + +--- +apiVersion: v1 +kind: Service +metadata: + name: mongo + namespace: bigbluebutton +spec: + ports: + - targetPort: 27017 + port: 27017 + selector: + app: mongo diff --git a/labs/docker/k8s/redis.yaml b/labs/docker/k8s/redis.yaml new file mode 100644 index 000000000000..fe12f4eb193a --- /dev/null +++ b/labs/docker/k8s/redis.yaml @@ -0,0 +1,55 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app: redis + version: latest + name: redis + namespace: bigbluebutton +spec: + replicas: 1 + selector: + matchLabels: + app: redis + version: latest + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + app: redis + version: latest + name: redis + spec: + containers: + - image: redis:latest + imagePullPolicy: Always + name: redis + ports: + - containerPort: 6379 + protocol: TCP + restartPolicy: Always + terminationGracePeriodSeconds: 30 + nodeSelector: + role: 'bigbluebutton' + tolerations: + - key: role + operator: Equal + value: 'bigbluebutton' + effect: NoSchedule + +--- +apiVersion: v1 +kind: Service +metadata: + name: redis + namespace: bigbluebutton +spec: + ports: + - targetPort: 6379 + port: 6379 + selector: + app: redis