diff options
author | Christian Pointner <equinox@spreadspace.org> | 2018-02-17 23:51:23 +0100 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2018-02-17 23:51:23 +0100 |
commit | 31f43bbda5f4f43a5af75d784e5b421c4a08e32a (patch) | |
tree | a493ad1ea023c4ef20e2bd34d54ad27decb251f1 | |
parent | nginx streamer for hls and dash work now (diff) |
initial test with sfive-proxy
-rw-r--r-- | src/examples/elevate2018.yml | 8 | ||||
-rwxr-xr-x | src/flufigut.py | 20 | ||||
-rw-r--r-- | templates/default/kubernetes/sfive-proxy-cm.yml.j2 | 12 | ||||
-rw-r--r-- | templates/default/kubernetes/sfive-proxy-deploy.yml.j2 | 52 |
4 files changed, 90 insertions, 2 deletions
diff --git a/src/examples/elevate2018.yml b/src/examples/elevate2018.yml index 717263d..fd7dd07 100644 --- a/src/examples/elevate2018.yml +++ b/src/examples/elevate2018.yml @@ -11,6 +11,11 @@ globals: admin: username: equinox password: change-me + stats: + sfive-proxy: + socket: "/var/run/sfive/pipegram" + duration: 15 + tags: [ "elevate", "2018", "discourse" ] resolutions: 1080p25: { width: 1920, height: 1080, rate: 25/1 } 720p25: { width: 1280, height: 720, rate: 25/1 } @@ -41,7 +46,7 @@ globals: helene: record: "record-*" default: [ "encode-sdi-orig-vp8-*", "encode-sdi-orig-h264-360p25", "mux-*", "http-local1*" ] - emc-stats: "repeat-public*" + emc-00: "repeat-public*" emc-01: "http-public1*" emc-02: "http-public2*" emc-03: "http-public3*" @@ -51,6 +56,7 @@ globals: parameter: flumotion_image_version: 12 nginx_image_version: 4 + sfive_image_version: 2 inputs: sdi-orig: type: decklink diff --git a/src/flufigut.py b/src/flufigut.py index 6d7eaf3..bf043e2 100755 --- a/src/flufigut.py +++ b/src/flufigut.py @@ -32,6 +32,7 @@ import random import os import sys import yaml +import json import jinja2 import crypt import kubernetes @@ -686,7 +687,7 @@ class K8sDeployment: if 'stream' in worker['flags']: stream_name = worker['flags']['stream'] if 'nginx-muxes' in self._desc.streams[stream_name] and len(self._desc.streams[stream_name]['nginx-muxes']) > 0: - needs_nginx = True + needs_nginx = True if not needs_nginx: return @@ -700,6 +701,22 @@ class K8sDeployment: deploy = self.__generate_object(tmpl_env, 'nginx-streamer-deploy.yml', worker) appsV1.create_namespaced_deployment(self._namespace, deploy) + def _deploy_sfive_worker(self, template_dir, tmpl_env, v1, appsV1, worker): + needs_sfive = False + if 'sfive-proxy' in self._desc.globals['stats'] and 'stream' in worker['flags']: + needs_sfive = True + + if not needs_sfive: + return + + proxy_conf = {'listen': ':8080', 'protocol': 'http', 'connect': 'http://flumotion-worker-' + worker['name'] + ':8000'} + cm = self.__generate_object(tmpl_env, 'sfive-proxy-cm.yml', worker) + cm['data']['proxy.json'] = json.dumps(proxy_conf) + v1.create_namespaced_config_map(self._namespace, cm) + + deploy = self.__generate_object(tmpl_env, 'sfive-proxy-deploy.yml', worker) + appsV1.create_namespaced_deployment(self._namespace, deploy) + def deploy(self, template_dir): v1 = kubernetes.client.CoreV1Api() appsV1 = kubernetes.client.AppsV1Api() @@ -717,6 +734,7 @@ class K8sDeployment: } self._deploy_flumotion_worker(template_dir, tmpl_env, v1, appsV1, worker) self._deploy_nginx_worker(template_dir, tmpl_env, v1, appsV1, worker) + self._deploy_sfive_worker(template_dir, tmpl_env, v1, appsV1, worker) def wipe(self): v1 = kubernetes.client.CoreV1Api() diff --git a/templates/default/kubernetes/sfive-proxy-cm.yml.j2 b/templates/default/kubernetes/sfive-proxy-cm.yml.j2 new file mode 100644 index 0000000..e109e85 --- /dev/null +++ b/templates/default/kubernetes/sfive-proxy-cm.yml.j2 @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + namespace: {{ namespace }} + name: sfive-proxy-{{ worker.name }} + labels: + app: sfive + type: proxy + worker: {{ worker.name }} +data: + proxy.json: | + {} diff --git a/templates/default/kubernetes/sfive-proxy-deploy.yml.j2 b/templates/default/kubernetes/sfive-proxy-deploy.yml.j2 new file mode 100644 index 0000000..121d80e --- /dev/null +++ b/templates/default/kubernetes/sfive-proxy-deploy.yml.j2 @@ -0,0 +1,52 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: {{ namespace }} + name: sfive-proxy-{{ worker.name }} + labels: + app: sfive + type: proxy + worker: {{ worker.name }} +spec: + replicas: 1 + selector: + matchLabels: + app: sfive + type: proxy + worker: {{ worker.name }} + strategy: + type: Recreate + revisionHistoryLimit: 5 + template: + metadata: + labels: + app: sfive + type: proxy + worker: {{ worker.name }} + spec: + nodeName: {{ worker.name }} + securityContext: + runAsUser: 998 + fsGroup: 998 + hostNetwork: true + dnsPolicy: ClusterFirstWithHostNet + containers: + - name: proxy + image: spreadspace/sfive:{{ desc.globals.deployment.parameter.sfive_image_version }} + imagePullPolicy: Always + args: + - s5proxy + - -config + - /srv/config/proxy.json + volumeMounts: + - name: home + mountPath: /srv + - name: sfive-config + mountPath: /srv/config + volumes: + - name: home + emptyDir: + medium: Memory + - name: sfive-config + configMap: + name: sfive-proxy-{{ worker.name }} |