diff options
author | Christian Pointner <equinox@spreadspace.org> | 2018-02-11 03:01:01 +0100 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2018-02-11 03:01:01 +0100 |
commit | b87695c4799fec6051be5885451b67690f3f8d3c (patch) | |
tree | 7687985f3ffbda3ffa8d0d97e5239dd0aa046c7f /templates/default | |
parent | it's better to have cluster ips for flumotion worker (diff) |
added very basic support for hls
Diffstat (limited to 'templates/default')
3 files changed, 184 insertions, 0 deletions
diff --git a/templates/default/kubernetes/nginx-streamer-cm.yml.j2 b/templates/default/kubernetes/nginx-streamer-cm.yml.j2 new file mode 100644 index 0000000..4171305 --- /dev/null +++ b/templates/default/kubernetes/nginx-streamer-cm.yml.j2 @@ -0,0 +1,106 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + namespace: {{ namespace }} + name: nginx-streamer-{{ worker.name }} + labels: + app: nginx + type: streamer + worker: {{ worker.name }} +data: + nginx.conf: | + worker_processes 4; + pid /srv/nginx.pid; + error_log /dev/stderr notice; + + load_module modules/ngx_rtmp_module.so; + + events { + worker_connections 768; + # multi_accept on; + } + + http { + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + + server_names_hash_bucket_size 64; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + access_log /dev/null; + + server { + listen 8000 default_server; + listen [::]:8000 default_server; + server_name _; + + root /srv/www; + + location / { + types { + application/vnd.apple.mpegurl m3u8; + } + expires -1s; + add_header Cache-Control "no-store,must-revalidate,max-age=0"; + } + } + } + + rtmp { + access_log /dev/null; + + server { + listen localhost:1935; + + respawn on; + + exec_static ffmpeg -i http://flumotion-worker-{{ worker.name }}:8000/av-orig-flash-mini.flv + -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f flv rtmp://localhost/hls/av-orig-mini + -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f flv rtmp://localhost/dash/av-orig-mini; + exec_static ffmpeg -i http://flumotion-worker-{{ worker.name }}:8000/av-orig-flash-low.flv + -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f flv rtmp://localhost/hls/av-orig-low + -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f flv rtmp://localhost/dash/av-orig-low; + exec_static ffmpeg -i http://flumotion-worker-{{ worker.name }}:8000/av-orig-flash-medium.flv + -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f flv rtmp://localhost/hls/av-orig-medium + -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f flv rtmp://localhost/dash/av-orig-medium; + exec_static ffmpeg -i http://flumotion-worker-{{ worker.name }}:8000/av-orig-flash-high.flv + -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f flv rtmp://localhost/hls/av-orig-high + -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f flv rtmp://localhost/dash/av-orig-high; + + application hls { + live on; + + hls on; + hls_path /srv/www/hls; + hls_fragment 3; + hls_playlist_length 12; + hls_nested on; + hls_cleanup on; + hls_fragment_naming timestamp; + hls_fragment_slicing aligned; + hls_type live; + hls_base_url http://localhost:8000/hls/; + + hls_variant -mini BANDWIDTH=350000; + hls_variant -low BANDWIDTH=700000; + hls_variant -medium BANDWIDTH=1200000; + hls_variant -high BANDWIDTH=2000000; + } + + application dash { + live on; + + dash on; + dash_path /srv/www/dash; + dash_fragment 3; + dash_playlist_length 12; + dash_nested on; + dash_cleanup on; + } + } + } diff --git a/templates/default/kubernetes/nginx-streamer-deploy.yml.j2 b/templates/default/kubernetes/nginx-streamer-deploy.yml.j2 new file mode 100644 index 0000000..857dfcc --- /dev/null +++ b/templates/default/kubernetes/nginx-streamer-deploy.yml.j2 @@ -0,0 +1,62 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: {{ namespace }} + name: nginx-streamer-{{ worker.name }} + labels: + app: nginx + type: streamer + worker: {{ worker.name }} +spec: + replicas: 1 + selector: + matchLabels: + app: nginx + type: streamer + worker: {{ worker.name }} + strategy: + type: Recreate + revisionHistoryLimit: 5 + template: + metadata: + labels: + app: nginx + type: streamer + worker: {{ worker.name }} + spec: + nodeName: {{ worker.name }} + securityContext: + runAsUser: 998 + fsGroup: 998 + containers: + - name: nginx + image: spreadspace/nginx-streaming + imagePullPolicy: Always + args: + - nginx + - -c + - /srv/config/nginx.conf + - -g + - "daemon off;" + volumeMounts: + - name: home + mountPath: /srv + - name: nginx-lib + mountPath: /var/lib/nginx + - name: nginx-config + mountPath: /srv/config + - name: www + mountPath: /srv/www + volumes: + - name: home + emptyDir: + medium: Memory + - name: nginx-lib + emptyDir: + medium: Memory + - name: nginx-config + configMap: + name: nginx-streamer-{{ worker.name }} + - name: www + emptyDir: + medium: Memory diff --git a/templates/default/kubernetes/nginx-streamer-svc.yml.j2 b/templates/default/kubernetes/nginx-streamer-svc.yml.j2 new file mode 100644 index 0000000..a6a9f0d --- /dev/null +++ b/templates/default/kubernetes/nginx-streamer-svc.yml.j2 @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + namespace: {{ namespace }} + name: nginx-streamer-{{ worker.name }} + labels: + app: nginx + type: streamer + worker: {{ worker.name }} +spec: + selector: + app: nginx + type: streamer + worker: {{ worker.name }} + ports: + - port: 8000 |