From ec63729747ebfec9f04aa506265d5c33216fd883 Mon Sep 17 00:00:00 2001
From: Diego Sampaio <chinello@gmail.com>
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 0000000000..d21e1d44ab
--- /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 0000000000..f68eb0cca3
--- /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 0000000000..d550783745
--- /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 0000000000..6c78e391a0
--- /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 0000000000..b37ba7d94f
--- /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 0000000000..cf8fdafcf3
--- /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 0000000000..3c2a0ac6e9
--- /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 0000000000..784ae337eb
--- /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 0000000000..9239ce01e4
--- /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 0000000000..323622f023
--- /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 0000000000..d66b7579ed
--- /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 0000000000..5a09cdd532
--- /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 0000000000..fe12f4eb19
--- /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
-- 
GitLab